Заполнение шаблона Word на сервере, без использования MS Office (docx -> zip -> xml) . Предусмотрен вывод табличных частей

Печать - Универсальные печатные формы

Шаблон в Word, управляемые формы. Создание заполнение документа Word (docx -> zip -> xml) по шаблону на сервере без использования MS Office. Предусмотрен вывод табличных частей.

Обработать шаблон документа Word на сервере это проблема, с которой уверен сталкивались многие. Библиотека стандартных подсистем делает обработку шаблона на клиенте, а это исключает веб интерфейс и рабочие места, где нет MS Office. При попытке в Word открыть шаблон файла под серверным пользователем, возникают проблемы с доступом. Не отрицаю существования таких настроек на сервере, при которых это возможно, но в моем случае речь шла о массовом продукте. 

Чтобы избавиться от всех прелестей этой прекрасной пары 1с+Word, решил отказаться от Word, хотя над первым может тоже стоило подумать?

Формат MS Word (docx)  - это по сути zip архив с набором xml файлов (Office Open XML). Меняя определенные файлы xml, можно добиться заполнения своего шаблона.

Всю красоту парсинга XML,  из 1с уверен, вы сможете или уже смогли оценить в своей работе.

О решении:

Результатом решения стал общий модуль осуществляющий всю работу по заполнению шаблона.

Общий модуль, для простоты скачивания поместил в модуль обработки.

Процедура ответственная за заполнение шаблона:

ОбработатьФайлDocx(ФайлШаблона,ПараметрыЗаполнения, ШаблоныКЗамене)

  • ФайлШаблона  - (тип: "Строка") Путь к файлу шаблону.
  • ПараметрыЗаполнения  - (тип: "Структура") содежащую символ начала, окончания шаблона.
  • ШаблоныКЗамене - (тип: "Таблица значений") с параметрами, содержащую колонки:  ИмяПараметраВWord - строка с именем шаблона который будет заменен. Результат - Содержит значение на которое будет заменен шаблон.

 

Колонка «Результат»  из «ШаблоныКЗамене»  может иметь тип: "Строка" или "Массив" (содержащий строки).

  • Колонка «Результат» тип "Строка" - заменяет шаблон. 
  • Колонка «Результат» тип "Массив" (содержащий строки). - заменяет шаблон. перечисляет строки через ";", Но если он использован в word таблице, то добавляет строки (если значений в массиве больше чем одно) и расставляет значения. 

Пример 1:

ШаблоныКЗамене имеет строки:

ИмяПараметраВWord = «массив 1» , Результат(массив) содержит два значения: ("Значение 1 массив 1"; "Значение 2 массив 1" ,

ИмяПараметраВWord =  «массив 2», Результат(массив) содержит три значения:("Значение 1 массив 2";"Значение 2 массив 2";"Значение 3 массив 2") :

Пример шаблона в таблице word:

<массив 1>

<массив 2>

 

Результат:

Значение 1 массив 1

Значение 1 массив 2

Значение 2 массив 1

Значение 2 массив 2

 

Значение 3 массив 2

 

Пример 2:

ШаблоныКЗамене имеет строку:

ИмяПараметраВWord = «МассивЧленыКомиссии» ; Результат(массив) содержит значения: ("Прохоров Сергей Петрович"; "Петров Адрей Федорович"; "Смирнов Антон Викторович")

 

Шаблон:

Члены комиссии

   

<МассивЧленыКомиссии>

 

Результат:

Члены комиссии

   

Прохоров Сергей Петрович

     

Петров Адрей Федорович

     

Смирнов Антон Викторович

 

Жду ваших комментариев и предложений.

Модуль можете использовать для коммерческого использования, однако прошу не удалять ссылку на мои реквизиты.

 

Скачать файлы

Наименование Файл Версия Размер
Шаблон в Word. Без использования MS Office. Предусмотрен вывод таблиц
.epf 34,24Kb
05.10.17
8
.epf 1.0.0 34,24Kb 8 Скачать

См. также

Комментарии
1. Сергей Ожерельев (Поручик) 3638 04.10.17 23:49 Сейчас в теме
В конфигурации, разработанной нашей конторой по заказу одного госучреждения, прямое потрошение парсинг шаблонов Word для генерации договоров и прочего барахла работает с 2013 года. Только механизм вставки таблиц там довольно слабый. Скорее его нет, чем есть.
2. Константин Исиченко (IsiKosta) 700 07.10.17 07:17 Сейчас в теме
Спасибо! Наверняка пригодится для моей публикации https://infostart.ru/public/595984/
Оставьте свое сообщение