Цитата: Ветер в поле от 09 июня 2026, 18:11Красивое решение! Пожалуй на нем стоит и остановиться.
Перем ЛокальнаяПеременнаяГлобальногоМодуля;
Процедура Проверка() Экспорт
ЛокальнаяПеременнаяГлобальногоМодуля = 1;
КонецПроцедуры
ЛокальнаяПеременнаяГлобальногоМодуля = 0;
Процедура Сформировать()
Проверка()
КонецПроцедуры
Цитата: alyuev от 16 июня 2026, 14:40А мы решали проблему выгрузкой через базу v8Наверное, самый разумный способ (если есть v8) - так не будет и потерь данных в ячейке (mxl -> xls режет до 255 символов).
Цитата: Ветер в поле от 16 июня 2026, 11:22Ну и ограничение количества строк в 16384Не, 65536 строк 1с штатно сохраняет спокойно в формате xls. Может, конечно, это какой-то из установленных докторов лечит вместе с фиксом ошибки сохранения. Видимо это имелись в виду столбцы, а не строки.
Функция СохранитьБольшойMXL(ПутьКФайлу) Экспорт
Перем ТабДок;
Если Инициализация82()=-1 Тогда
Возврат -1;
КонецЕсли;
ТабДок = V8Object.NewObject("ТабличныйДокумент");
ФайлЭксел = Лев(СК(ПутьКФайлу), СтрДлина(СК(ПутьКФайлу))-4);
ФайлЭксел=ФайлЭксел+".xls";
Если (Отладка=1)Или(ЭтоАвтомат=1) Тогда Сообщить("Сохраняю большую таблицу в "+ФайлЭксел); КонецЕсли;
Попытка
ТабДок.Прочитать(ПутьКФайлу);
ТабДок.Записать(ФайлЭксел,"xlsx");
ТабДок = 0;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
V8Object = "";
Возврат ФайлЭксел;
КонецФункции
Если (Табл2.ВысотаТаблицы()<65535)И(ЭкспортЧерезV8=0) Тогда
Табл2.Записать(Путь1,1); // стандартное 1С-ное сохранение
ПутьИт=Строка(Путь1)+".xls";
Иначе
СообщитьвФайл("Сохраняем большой MXL через V8 т.к. строк в файле "+Табл2.ВысотаТаблицы()+", ЭкспортЧерезV8="+ЭкспортЧерезV8,ИмяФайла);
Табл2.Записать(Путь1,0);
ПутьИт=СохранитьБольшойMXL(Путь1+".mxl"); //Иногда может слететь лицензия на V8 и не будет тогда записывать.
Цитата: Харлампий Дымба от 15 июня 2026, 23:54Ну это, как я понимаю, чтобы избежать ошибки сохранения больших таблиц в Excel - патч от ромикса уже закрывает эту дырку.
Цитата: АЛьФ от 15 июня 2026, 13:04У меня вот такой код работает в глобальнике с использование Йоксель:Ну это, как я понимаю, чтобы избежать ошибки сохранения больших таблиц в Excel - патч от ромикса уже закрывает эту дырку.
Конвертер = СоздатьОбъект ("КонвертерExcel");
Книга = Конвертер.Создать ();
Начало = 1;
Пока КоличествоСтрок > 0 Цикл
Документ = СоздатьОбъект ("ТабличныйДокумент");
Документ.Открыть (ИмяВременногоФайла);
Если Начало = 0 Тогда
Документ.УдалитьСтроки (1, 65536);//без ограничения
Документ.Записать (ИмяВременногоФайла);
Иначе
Начало = 0;
КонецЕсли;
Книга.Листы.Добавить (ИмяЛиста + НомерЛиста, Документ);
КоличествоСтрокВДокументе = Документ.ВысотаТаблицы ();
ЗаписаноСтрок = Мин (65536, КоличествоСтрокВДокументе);
КоличествоСтрок = КоличествоСтрок - Мин (КоличествоСтрок, ЗаписаноСтрок); // на всякий случай
НомерЛиста = НомерЛиста + 1;
КонецЦикла;
Книга.ПараметрыКонвертера.ЧислаВыравненыПоПравомуКраю = 1;
Книга.ПараметрыКонвертера.РаспознаватьЧисловыеЗначения = 1;
Книга.Записать (ВыбИмяФайла);