Внимание, возможен жесткий боянъ!
Есть множество инструментов, в том числе и на Инфостарте, позволяющих формировать печатные формы на основе шаблона MS Word, в составе БСП даже есть особый общий модуль для этого дела - УправлениеПечатьюMSWordКлиент
. Но для таких же целей, но на основе Excel почему-то не густо, или я плохо искал ¯\_( °__°)_/¯. Тем временем Excel гораздо лучше подходит для формирования табличных документов, т.к. имеет схожую структуру с одноименным объектом 1С. Наряду с этим книгу Excel гораздо легче размечать параметрами и областями под вывод из 1С.
Суть идеи лежит на поверхности и состоит в том, чтобы прочитать средствами 1С книгу Excel в табличный документ, определить наличие областей и параметров на основании пользовательской разметки, и вывести печатную форму как обычный табличный документ.
В приложенной обработке в макете зашит образец книги Excel и реализован вывод печатной формы в табличный документ на основании образца данных. В текущем примере печатная форма имеет 3 области: Шапка, Строка и Подвал, однако с помощью пользовательской разметки шаблона можно выводить практически неограниченное количество областей. Для себя я определил, что параметры в книге выделяются квадратными скобками, например [Организация]
, [Номенклатура]
и т.д., а области маркируются специальным текстом вида {Начало<ИмяОбласти>}
и {Конец<ИмяОбласти>}
, что, конечно же, можно безболезненно изменить под свои нужды. Именование параметров и областей необходимо производить с учетом правил образования имен переменных, а источник данных для вывода печатной формы следует формировать так, чтобы имена реквизитов источника совпадали с именами параметров.
Все операции по чтению книги Excel и заполнению табличного документа производятся в серверном контексте. Работает довольно шустро, если сравнивать с распаковкой, чтением и записью XML-файла Word аналогичного размера.
Из плюсов подхода: чистый 1С безо всяких примесей, легкость реализации произвольной сложной структуры печатной формы на стороне пользователя, сохранение форматирования исходной книги. Из недостатков могу отметить необходимость сплошного перебора ячеек табличного документа на предмет выявления параметров, но, как я уже сказал, субъективно работает всё очень быстро.
Обработка универсальна для всех конфигураций на управляемых формах на основе БСП 3.1, тестирование проводил на платформе 8.3.23 в ЗУП 3.1.27 в файловом режиме работы. Под доп. обработки не адаптировал, так что используем через Файл -> Открыть.
Продолжение публикации: Печать по шаблону Excel с несколькими листами
Всем удачного кодинга!