Обработка написана для обычных форм. Для управляемых форм необходимо лишь учесть, что адрес для сохранения файлов должен быть доступен с сервера! Обычно это не является проблемой, т.к. есть "расшаренные" папки.
Обработку можно вставить в конфигурацию, можно использовать как внешнюю.
24.06.23. Исправлена ошибка при выводе в Excel если в таблице больше 65536 строк. Теперь создаётся 2 и более файлов.
Обработка не имеет экранной формы!
В модуле объекта (менеджера для управляемых форм) написан программный интерфейс для:
1. Перехвата значения временной таблицы в любой части модуля. Функция "ПолучитьВТ"
2. Вывода значения с типом "ТаблицаЗначений" в макет с сохранением макета в файл (без вывода на экран). Процедура "ВывестиТаблицуВФайл"
3. Вывода временной таблицы в файл. Используются обе вышеописанные функции. Процедура "ВывестиВременнуюТаблицуВФайл"
Для использования программного интерфейса необходимо сначала создать менеджер обработки:
ОтладкаТаблиц = Обработки.ОтладкаТаблиц.Создать(); //Если встроена в конфигурацию
ОтладкаТаблиц = ВнешниеОбработки.Создать(ПутьКФайлуОбработки, Ложь, Ложь); //Для внешних
ТаблицаДляОтладки = ОтладкаТаблиц.ПолучитьВТ(МенеджерВременныхТаблиц, "ВТ_КадровыеДанные", "Сотрудник, Период");
ОтладкаТаблиц.ВывестиВременнуюТаблицуВФайл(МенеджерВременныхТаблиц, "ВТ_КадровыеДанные", "Сотрудник, Период");
ОтладкаТаблиц.ВывестиТаблицуВФайл(ТаблицаОткрытыхСтавок, "Имя таблицы");
В параметрах нужно задать Менеджер временных таблиц и Имя временной таблицы. Опционально сортировку.
Для вывода Таблицы значений достаточно передать саму таблицу значений. Опционально вторым параметром можно задать имя таблицы.
Вывод файла происходит через заполнение макета с типом "Табличный документ". Табличный документ через метод Записать() пишется в файл *.xls.
При использовании программного интерфейса стоит учитывать размер таблиц. Вывод в табличный документ и сохранение в файл занимает пару секунд.
Тестировал на размере таблицы 16 000 записей.
Каталог для сохранения файлов указывается в Модуле объекта. Его необходимо изменить:
КаталогФайлов = "C:\Users\filatovps\Desktop\Филатов\Сохраненные файлы\";
или имя на сервере (необходимо для управляемых форм):
КаталогФайлов = "\\s-dcr-db02.int\ZUP\Сохраненные файлы\";
Имя файла формируется таким образом, чтобы никогда не повториться. Код получения имени файла:
ТекВремя = ТекущаяДатаСеанса();
ИмяФайла = ИмяТаблицы + Строка(Год(ТекВремя)) + Строка(Месяц(ТекВремя)) + Строка(День(ТекВремя)) +
Строка(Час(ТекВремя)) + Строка(Минута(ТекВремя)) + Строка(Секунда(ТекВремя)) + ".xls";
Тестировалось на релизе платформы 8.3.21.1622. Но значения это не имеет.
Один из примеров кода, который показывает полезность данной поделки. Есть структура таблиц, её можно полностью сохранить в Excel.
В качестве имени файла используется название таблицы.
Если СохранитьВExcel Тогда
Для Каждого ТекТаблица Из СтруктураТаблицСправочников Цикл
Если ТипЗнч(ТекТаблица.Значение) = Тип("ТаблицаЗначений") Тогда
ОтладкаТаблиц = Обработки.ОтладкаТаблиц.Создать();
ОтладкаТаблиц.ВывестиТаблицуВФайл(ТекТаблица.Значение, ТекТаблица.Ключ);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ВАЖНО! Если имя таблицы указывается как параметр, то дата и время не добавляются в имени файла. При необходимости Вы можете это изменить.
Другие полезные обработки:
Пример работы с файлами odt в клиент-серверной модели работы