Функция СохранитьБольшой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;
Книга.Записать (ВыбИмяФайла);
Процедура ПриЗаписиТаблицы(КонтТаб, ИмяФайла, ФорматФайла, СтандартнаяОбработка)
Если ФорматФайла = 1 Тогда // xls
// Если КонтТаб.ВысотаТаблицы() > 100 Тогда
СтандартнаяОбработка = 0;
ТабличныйДокумент = СоздатьОбъект("ТабличныйДокумент");
ТабличныйДокумент.ЗагрузитьИзТаблицы(КонтТаб);
ТабличныйДокумент.Записать(ИмяФайла,"xls");
// КонецЕсли;
КонецЕсли;
КонецПроцедуры
//*****************************************************************************
Функция глУстановитьЗначениеРеквизитуФормы(Конт, Реквизит, Значение, ВыполнятьФормулу=0) Экспорт
АтрибутФормы = СоздатьОбъект("АтрибутФормы");
Попытка
АтрибутФормы.УстановитьАтрибут(Конт.Форма, Реквизит);
АтрибутФормы.Значение = Значение;
Попытка
Если ВыполнятьФормулу = 1 Тогда
Если ПустоеЗначение(АтрибутФормы.Формула) = 0 Тогда
Модуль = СоздатьОбъект("ВыполняемыйМодуль");
Модуль.УстановитьМодуль(
"Процедура ___ВыполнитьФормулуРеквизита___()
| " + АтрибутФормы.Формула + "
|КонецПроцедуры");
Модуль.НазначитьКонтекст(Конт);
Модуль.КомпилироватьМодуль();
Модуль.ВыполнитьМодуль();
Модуль.___ВыполнитьФормулуРеквизита___();
КонецЕсли;
КонецЕсли;
Исключение
глВывестиМногострочноеСообщение("глУстановитьЗначениеРеквизитуФормы: Ошибка выполнения формулы реквизита " + Реквизит + "
|Формула: " + АтрибутФормы.Формула + "
|Ошибка: " + ОписаниеОшибки());
КонецПопытки;
Исключение
Сообщить("глУстановитьЗначениеРеквизитуФормы: Не найден реквизит на форме: " + Реквизит);
Возврат 0;
КонецПопытки;
Возврат 1;
КонецФункции //глУстановитьЗначениеАтрибутуФормы
//*****************************************************************************
Функция глПолучитьЗначениеРеквизитаФормы(Конт, Реквизит, СообщатьОбОшибке=1) Экспорт
АтрибутФормы = СоздатьОбъект("АтрибутФормы");
Попытка
АтрибутФормы.УстановитьАтрибут(Конт.Форма, Реквизит);
Возврат АтрибутФормы.Значение;
Исключение
Если СообщатьОбОшибке = 1 Тогда
Сообщить("глПолучитьЗначениеРеквизитаФормы: Не найден реквизит на форме: " + Реквизит);
КонецЕсли;
Возврат ПолучитьПустоеЗначение();
КонецПопытки;
КонецФункции //глПолучитьЗначениеРеквизитаФормы
Цитата: Злоп от 14 июня 2026, 14:29И как установить в этом случае значение в поле ввода по его имени..?