При разработке внешних печатных форм в 1С перед программистами часто встает дилемма: использовать привычный ТабличныйДокумент или же воспользоваться возможностями Active Document для формирования полноценных файлов Microsoft Word. В данной статье мы разберем, почему второй путь часто ведет к ошибкам и как правильно интегрировать документы Word в современные конфигурации на базе БСП.
Типовые механизмы печати в конфигурациях на БСП ориентированы на работу с объектом ТабличныйДокумент. Когда мы пытаемся «втиснуть» сторонний формат, например, объект Word, в структуру ПечатнаяФорма.ТабличныйДокумент, мы неизбежно сталкиваемся с ошибками доступа к свойствам, таким как КоличествоЭкземпляров. Система ожидает объект определенного типа, а получает несовместимый формат данных.
Более того, использование Active Document (технология OLE) является устаревшим и нерекомендуемым подходом для серверных версий 1С. Основные причины:
winword.exe в оперативной памяти сервера.Чтобы избежать проблем с несовместимостью типов, современный стандарт разработки 1С предлагает использовать макеты типа Двоичные данные. Суть подхода заключается в использовании формата файлов docx или xlsx как шаблонов, внутри которых 1С производит замену тегов (закладок) на актуальные данные из базы.
Если вам требуется реализовать печать через Word во внешней печатной форме, придерживайтесь следующего алгоритма:
docx и разместите в нем именованные закладки или текстовые метки (например, [НомерДоговора], [Клиент]), которые будут служить маркерами для заполнения.Двоичные данные.Active Document. Вместо этого извлеките двоичные данные макета и произведите манипуляции с содержимым файла.Для работы с содержимым docx напрямую (без запуска Word) используйте встроенные возможности платформы по работе с XML-структурами файла или библиотеку Office Open XML, описание которой доступно в документации БСП. Это позволит серверу 1С формировать готовый документ без необходимости «открывать» его программно.
Часто в процессе разработки выясняется, что для сложных спецификаций с динамическим количеством строк ТабличныйДокумент подходит гораздо лучше, чем Word. Мы рекомендуем рассмотреть гибридный подход:
Word.ТабличныйДокумент, который гораздо гибче при настройке разрывов страниц и колонок.Если пользователям критически важно иметь возможность редактировать договор перед печатью, вы можете сформировать документ на сервере, сохранить его во временный файл, а затем передать пользователю через клиентскую команду. Это обеспечивает надежную работу на сервере и удобство интерфейса для пользователя.
При реализации внешней печатной формы мы советуем отказаться от прямого вызова Active Document в пользу Двоичных данных. Это не только избавит вас от ошибок при обращении к свойствам объекта, но и сделает вашу разработку профессиональной, стабильной и независимой от установленного офисного ПО. Используйте документацию БСП как основной источник стандартов разработки, чтобы органично вписывать свои печатные формы в типовой функционал 1С.