Подсистема универсальной печати с помощью MS Word (управляемые формы).

Опубликовал Дмитрий (r0610201) в раздел Печать - Универсальные печатные формы

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

Для любого объекта метаданных ссылочного типа можно создать шаблон его печати в MS Word. Делается это в несколько шагов:

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

2. Нажимаем на кнопку "Редактировать шаблон", создается новый шаблон MS Word, либо открывается уже отредактированный ранее. Оформляем шаблон MS Word, заменямые поля необходимо добавить как поле слияния (MergeField). В 2010-м офисе это делается в меню Вставка/Экспресс-блоки/Поле. Необходимо, чтобы названия полей соответствовали правилам формирования идентификаторов, т.е. включали в себя только буквы, цифры и знак "_".

3. В виду того, что редактирование происходит во временном файле, необходимо записать этот файл в базу, это делается нажатием "Получить файл". Если этого не сделать, то изменения, сделанные в пункте 2, будут потеряны.

4. Далее, переходим на закладку "Поля шаблона", там нажимаем "Получить поля". Заполняем соответствия полей из документа и запроса. Также поля могут быть вычисляемыми (произвольный алгоритм, выполняющийся на сервере). В вычисляемых полях можно использовать информацию их выборки запроса, а также уже вычисленные поля.

5. Если необходимо, чтобы в объекте (например, справочнике контрагентов), появилась кнопка печати, то этот объект надо включить в состав команды Печать справочника ШаблоныWord - это особенности реализации команд в 8.2. Можно также создавать свои кнопки печати, для этого достаточно прописать вызов одной процедуры из общего модуля с передачей ссылки на шаблон и массива печатаемых объектов.

6. Печатаем, если все настроено правильно, то получаем печатную форму.

Основные приемы для создания подобных шаблонов приведены в паре примеров в приложенном dt. Конфигурация не претендует на законченность, это скорее пример использования механизма слияния и универсальной настройки шаблона. Одна из ключевых особенностей слияния - скорость. Несколько тысяч печатных форм можно сформировать за буквально секунды.

 

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

Наименование Файл Версия Размер
Конфигурация с подсистемой и примерами
.dt 57,62Kb
22.08.11
328
.dt 57,62Kb 328 Скачать

См. также

Комментарии
1. Роман Ершов (MRAK) 695 24.08.11 11:18 Сейчас в теме
А чем типовая не понравилась?

А, хотя вижу. Поля выцепать можно из запроса. Тогда плюс)
2. Дмитрий (r0610201) 198 24.08.11 11:31 Сейчас в теме
Честно говоря, слабо знаком с типовыми. А какая именно имеется в виду? В БСП, например, используется поиск и замена в документе, а не слияние.
3. Роман Васильев (Klaz) 24.08.11 12:13 Сейчас в теме
Все понравилось вопрос тока если печатная форма на объект не одна печатает обе красивее чтобы можно было выбрать, но еще раз скажу и так хорошо.
Может кто подскажет давно ищу решение чтобы можно созданные печатные формы Word можно было бы прикреплять в автомате к объекту из которого печатался. Тоесть например из договора по шаблону распечатали договор подредактировали и он при закрытии дописался в файлы к договору.
4. Сергей Сытько (8SiriuS8) 114 26.08.11 15:54 Сейчас в теме
(0) А с таблицами подсистема работает... т.е. добавлять строки таблицы она может или нет... и если нет то как можно сделать чтоб добавляла
5. Oleg Aizatulin (oaizatulin@yahoo.com) 10.09.11 03:34 Сейчас в теме
6. Soul Power (SoulPower) 3 21.09.11 22:06 Сейчас в теме
Спасибо, полезная публикация
7. Георгий Перминов (Georgsius) 04.10.11 22:10 Сейчас в теме
Спасибо, отличная публикация.
А не подскажете, для старых версий офиса будет работать? (2003, 2000) ?
8. Илья Черных (Ильяххх) 07.10.11 08:50 Сейчас в теме
9. Георгий Перминов (Georgsius) 07.10.11 10:29 Сейчас в теме
Я проверил — в 2003 работает, там есть поля слияния
10. ddd ddd (alexsiswx) 14.10.11 15:59 Сейчас в теме
Да, хорошая вещь. Дорабатывал как то типовую конфу. Но для ознакомления с кодом скачал. Спасибо.
11. Daniela Cebrucean (dana82) 04.05.12 13:41 Сейчас в теме
12. Сергей (evilbit) 11 15.01.15 10:29 Сейчас в теме
Запрос может быть пакетным? Вопрос снят. Попробовал, работает :).