При попытке программно выгрузить печатную форму (например, «Акт сверки взаиморасчетов») разработчики часто совершают распространенную ошибку: обращаются непосредственно к макету объекта с помощью метода ПолучитьМакет(). В результате получается документ, который содержит только пустую визуальную структуру (шаблон оформления), но не заполнен данными из информационной базы.
Метод ПолучитьМакет() возвращает незаполненный макет из конфигуратора. Чтобы получить готовый печатный документ с данными, необходимо вызвать штатный алгоритм печати документа, который выполнит запросы к базе, заполнит параметры макета реальными показателями, и только после этого сохранить получившийся ТабличныйДокумент в файл.
Рассмотрим по шагам, как правильно сформировать и сохранить заполненную печатную форму в обычных формах (например, в конфигурации «Бухгалтерия предприятия ред. 2.0»).
ТабличныйДокумент.Записать() у сформированного объекта ТабличныйДокумент.Проанализируем пример кода для формирования и выгрузки печатной формы акта сверки в файл формата MXL:
// 1. Получаем объект документа
ОбъектДокумента = СсылкаНаДокумент.ПолучитьОбъект();
// 2. Формируем заполненный табличный документ через экспортную функцию печати
ТабличныйДокумент = ОбъектДокумента.Печать("АктСверки", 1);
// 3. Сохраняем заполненный табличный документ в файл
ИмяФайла = "C:\Temp\АктСверки.mxl";
ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.MXL);
Метод Записать() объекта ТабличныйДокумент имеет следующий синтаксис:
ТабличныйДокумент.Записать(<ИмяФайла>, <ТипФайлаТаблицы>)
Разберем параметры метода подробнее:
Строка) — полный путь к файлу на диске, в который будет сохранен документ.ТипФайлаТабличногоДокумента) — формат сохранения. По умолчанию используется значение ТипФайлаТабличногоДокумента.MXL.Формат MXL является специализированным форматом системы 1С:Предприятие. Если сформированные печатные формы необходимо отправлять клиентам по электронной почте, рекомендуется сохранять их в более распространенные форматы, такие как PDF или XLSX (Excel).
Посмотрим на пример выгрузки документа в формат Excel:
ИмяФайлаXLS = "C:\Temp\АктСверки.xlsx";
ТабличныйДокумент.Записать(ИмяФайлаXLS, ТипФайлаТабличногоДокумента.XLSX);
Выясним преимущество такого подхода: клиентам не потребуется установленная платформа 1С или специальный просмотрщик файлов MXL, и они смогут открыть полученный документ в любой стандартной офисной программе.