bdd2

Печать по шаблону Word

Опубликовал Вадим Клет (KVadR) в раздел Печать - Печатные формы документов

Внешняя печатная форма по шаблону Word. Можно быстро адаптировать под любой документ, справочник. Простая и наглядная форма подготовки шаблонов. Имеются две адаптации: для ЗУП и УТ

Описание для печати документа "Заказ покупателя" для конфигурации Управление Торговлей 10,3.

(описание для печати кадровых приказов в ЗУП в принципе такое же)

Обработка может быть зарегистрирована как Внешняя печатная форма для документов, имеющих Реквизиты: Организация, Контрагент. Нужно только в Конфигураторе изменить тип реквизита этой обработки "СсылкаНаОбъект" на нужный тип или добавить его в состав типов (в данный момент используется для печати "Заказ покупателя").

Назначение элементов в форме  "Настройка Шаблона"

 

1)Колонка: "Имя Тэга". В этой колонке хранится имя тэга по которому будут находиться данные для подстановки в результирующий  документ Word из шаблона

2) Колонка: "Путь к данным". В этой колонке указан путь по которому программа берет исходные данные. Доступны пути к следующим данным:

Документ _ -реквизиты документа,

Организация_ -реквизиты спр. Организации

Контрагент_ - реквизиты спр. Контрагенты,

ТЧ_ - реквизиты табличных частей документа

3) Колонка: "Доп. параметр". В этой колонке доступны данные из полей ввода основной формы и соответствий: Организация, Контрагент, заполненных в процедуре "ЗаполнитьДопПараметрыФормы". (Примечание: в качестве Руководителя контрагента ищется "Контактное Лицо Контрагента", имеющее "Роль контактного лица" "Руководитель")

4) Колонка: "Формула". В этой колонке можно использовать произвольные функции на языке 1С, но есть функции, которые прописаны в модуле обработки и добавлены в список выбора. Знак # используется, если в формулу нужно подставить значение из колонки "Путь к данным" или "Доп. параметр".

5) Колонка: "Значение тэга": Показывает результат вычисления (для отладки).

Порядок создания шаблона.

В Word создается шаблон  (файлы с расширением *.dot, *.dotx) с произвольным текстом. Записывается и закрывается. Затем этот шаблон нужно выбрать в форме "Настройка Шаблона" и нажать кнопку "Открыть шаблон" (откроется MS Word). Далее в открывшемся окне MS Word нужно спозиционироваться в нужном месте, перейти в обработку 1С, выделить необходимый тэг и нажать кн. "Вставить ТЭГ в шаблон" и т.д. В результате этого в шаблоне MS Word будут вставлены поля с текстом "[Имя тэга]".

В качестве имен тэгов можно использовать предопределенные значения:

БлокТекста_Начало_Имя, БлокТекста_Конец_Имя. Блок текста между этими тэгами будет выведен в результирующий документ, если Результат вычисления выражения в поле "Формула" будет: Да (Истина) или пустое значение.

ТЧ_ИмяТабличнойЧасти_Начало,ТЧ_ИмяТабличнойЧасти_Конец. Блок текста между этими тэгами будет выведен столько раз, сколько строк в табличной части документа, причем, если этот блок находится в таблице Word то вывод будет в виде таблицы, а если он находится в тексте, то вывод будет в виде текста.

ТЧ_ИмяТабличнойЧасти_Условие. Этот тэг можно вставлять только сразу после ТЧ_ИмяТабличнойЧасти_Начало. По результату вычисления поля "Формула" принимается решение выводить или нет очередную строку табличной части документа.

ТЧ_ИмяТабличнойЧасти_НПП: Номер по порядку при выводе табличной части.

ОСОБЕННОСТИ ПРОГРАММЫ.

На Основную форму обработки в Конфигураторе можно добавлять произвольное количество дополнительных "Полей ввода" (если для печати не хватает реквизитов, из базы данных) и, при необходимости, обеспечить их заполнение по умолчанию в процедуре основной формы "ЗаполнитьДопПараметрыФормы()". Значения этих полей будут доступны в Форме "Настройка Шаблона" в колонке "Доп. параметр" как ПараметрФормы.ИмяПоляВвода.

В процедуре модуля "ЗаполнитьДополнительныеСведения()" можно заполнять соответствия: "Организация" и "Контрагент" (в случае ЗУП "Сотрудник") произвольными значениями которые могут понадобиться при печати (Адреса, Телефоны, Руководители и пр.). Значения этих соответствий будут доступны в Форме "Настройка Шаблона" в колонке "Доп. параметр" как Организация.Ключ, Контрагент.Ключ (Сотрудник.Ключ) 

 

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

 

Шаблоны Word (файлы с расширением *.dot, *.dotx) по умолчанию ищутся в каталоге, указанном в константе "КаталогДополнительнойИнформации", но могут храниться в любой папке. Перед печатью необходимо выбрать необходимый шаблон Word.

 

Компонента склонения.

Не нашел способа гарантированного подключения компоненты склонения в УТ (в каждом отдельном случае необходимы настройки программы). Компонента подключается только если сохранена в общем макете конфигурации или ранее зарегистрирована в системном реестре. Но, по правде сказать использование компоненты лишняя головная боль. Особенно если пытаешься просклонять должности, подразделения и некоторые ФИО (кроме Иванов, Сидоров ...), т.е. нужно постоянно проверять.

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

Наименование Файл Версия Размер
Обработка адаптирована для ЗУП
.epf 39,89Kb
22.05.15
219
.epf 39,89Kb 219 Скачать
Пример шаблона Word для ЗУП
.dot 45,00Kb
30.07.12
67
.dot 45,00Kb 67 Скачать
Обработка адаптирована для УТ
.epf 84,17Kb
30.07.12
110
.epf 84,17Kb 110 Скачать
Пример шаблона Word для УТ
.dotx 32,55Kb
30.07.12
76
.dotx 32,55Kb 76 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Сергей (seermak) 653 07.08.12 20:40 Сейчас в теме
Сделал по образу и подобию. Понравилась идея размещения тэгов в шаблоне (еще бы в обработку они сами копировались бы)По склонению: библиотека без проблем подключается из общего макета, если не смогли подключить дублируется функцией из общего модуля. Настройки соответствия шаблона и данных базы сохраняю в хранилище настроек с именем шаблона - удобно - загрузил макет, настройки встали автоматом, выбрал объект и печатаешь сразу, надо что-то добавить в шаблоне - изменения настроек сохраняются автоматом. Вместо дополнительных путей добавил формы развертывания дерева объекта. Если данные сложные - формирую запрос и с ним работаю. Спасибо за пример и идею)))
Прикрепленные файлы:
2. Роман Иванов (Prelude) 26 09.08.12 14:09 Сейчас в теме
seermak, не могли поделиться своей обработкой допиленной обработкой.
3. Вадим Клет (KVadR) 90 10.08.12 09:52 Сейчас в теме
Доброго дня seermak! Приятно за понимание, что я попробовал вложить в обработку некоторые идеи, позволяющие упростить формирование печ. форм в Word. Теперь по порядку:
1)По компоненте склонения. Вообще-то в описании я написал и в тексте программы это видно:
с ЗУП проблемм нет - она там встроенная (лежит в общем макете)(УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной("глКомпонентаСклоненияФИО").....),
в УТ+СРМ (для которой мне пришлось дорабатывать ЗУПовский вариант) она тоже встроенная,
а вот в УТ ее нет и у Вас появляется выбор. Затаскивать ее в общий макет и регистрировать с Админскими правами на комп., или просто регистрировать в Windows (NameDecl.dll) соответственно в программе ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСклоненияФИО", "Decl", ТипВнешнейКомпоненты.Native) или ПодключитьВнешнююКомпоненту("AddIn.NameDecl")

По поводу самой компоненты: я настроил склонения типа Заместителю Генерального директора и некоторые другие, но список должностей бесконечен. Для примера : Оффис-менеджер, Консультант-референт и мн. др. Тут я не притендую на создание своей компоненты по склонению должностей (По ФИО и то дает не всегда верные результаты).

2)Не понял пожелание (еще бы в обработку они сами копировались бы) - Откуда?. Тэги в шаблоне представлены в виде полей с б.менее удобочитаемыми наименованиями (для меня это было важно, можно ведь в них запихивать и куски текста на языке 1С), а таблица соответствия Имен Тэгов и путей получения их значений в макете обработки. По поводу где хранить эту таблицу можно предложить много способов: В самой обработке, в настройках, в справочнике, в регистре сведений (кстати мне это предстоит делать т.к. количество шаблонов в одной из программ уже давно перевалило за 100 и в одних случаях изменение вычисления одного Тэга должно отобразиться во всех шаблонах, а в других нет), кстати эту таблицу можно хранить и в самом шаблоне Word (нет проблем с клонированием шаблонов) - наверное это зависит от конкр. базы.

3)Не понял чем ваш способ выбора путей к данным отличается от моего.
Почему я разбил получение пути к данным на два поля? В первом поле можно выбрать то, что лежит на поверхности: реквизиты документа, Организации, Сотрудника (Контрагента) и таб. частей (я их специально разместил (с помощью общего запроса к метаданным) в корне списка выбора для простоты выбора пути к данным). А во втором поле, то что нецелесообразно помещать в первом из-за сложности построения общего запроса и увеличения списка выбора. Там должны быть данные дополнительных запросов (ведь не хранить же тексты запросов в таблице соответствий (хотя можно и так)), доп. полей, которые так необходимы пользователям для построения их ну Очень красивых шаблонов.
Прикрепленные файлы:
4. Сергей (seermak) 653 12.08.12 15:55 Сейчас в теме
(2) п/п 2 был шуткой п/п 3 - почти ничем - только лишнее поле всегда пугает... да и еще я сделал свою на управляемых формах (это для того, чтобы люди попусту не обращались). А, вообще, я просто хотел сказать спасибо. и показать что пу меня получилось из вашей идеи и более ничего))
5. grigory пкш (dryms) 230 01.11.12 00:08 Сейчас в теме
Идея хорошая, у нас стоит наподобие в подсистеме "Учет договоров". смысл в том, что пользователь может сам создавать печатные формы в Word
Нужно только в Конфигураторе изменить тип реквизита этой обработки "СсылкаНаОбъект" на нужный тип или добавить его в состав типов (в данный момент используется для печати "Заказ покупателя").

Это можно реализовать в пользовательском режиме.
6. muha muhaha (fr.myha) 14.11.12 10:50 Сейчас в теме
8. Дмитрий Прядко (Shuffler) 62 03.12.13 12:55 Сейчас в теме
Добрый день! При использовании Вашего примера шаблона по кнопке "печать" возникает такая ошибка:

{ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(609)}: Ошибка при вызове метода контекста (Add)
ActiveDocument = Word.Documents.Add(ФайлШаблона);
по причине:
Неизвестная ошибка


Стоит Word 2013.
9. Дмитрий Прядко (Shuffler) 62 04.12.13 10:23 Сейчас в теме
Ошибка пропала после того, как я пересохранила приложенный шаблон в формат .dot
10. Lena Lesnik (lelusha) 09.02.14 17:38 Сейчас в теме
Большой плюс что печатная форма адаптируема, можно сказать универсальная. Автору спасибо!
11. oks434.d (Gingema) 22.04.14 09:36 Сейчас в теме
12. astarta (astarta) 02.10.14 19:18 Сейчас в теме
Здравствуйте!
Спасибо за обработку, очень удобная и несложная.
Но недавно столкнулась с такой проблемой: необходимо было воспользоваться предопределенными тэгами "ТЧ_ИмяТабличнойЧасти_Начало,ТЧ_ИмяТабличнойЧасти_Конец" дважды в текстовом документе, ссылаясь на одну и ту же ТЧ. В первом случае цикл отработал безупречно, а во втором случае выдает ошибку:
{ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(507)}: Ошибка при получении значения атрибута контекста (Range)
Если Table.Range.Start<НачалоСтроки И Table.Range.End>КонецСтроки Тогда
по причине:
Произошла исключительная ситуация (Microsoft Word): Объект был удален.

И не знаю, как избавиться от этой ошибки. Если можно, подскажите, пожалуйста, что нужно сделать.
Заранее спасибо!
13. МАРИЯ Мария (mariya.y) 06.04.15 16:45 Сейчас в теме
Добрый день. Вот такую ошибку выдает при попытке напечатать(

{ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(249)}: Метод объекта не обнаружен (РазложитьСтрокуВМассивПодстрок)
мПоляАдреса=ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Организация.Адрес);

Удалила эту строчку.... теперь печать получется, но там где склонение ОШИБКИ

ОШИБКА Тэга:ОрганизацияДолжностьРуководителяРодительный Выражение:Родительный(Организация.ДолжностьРуководителя){ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(103)}: Метод объекта не обнаружен (РазложитьСтрокуВМассивПодстрок) ОШИБКА Тэга:ОрганизацияРуководительРодительный Выражение:Родительный(Организация.Руководитель){ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(103)}: Метод объекта не обнаружен (РазложитьСтрокуВМассивПодстрок),

ОШИБКА Тэга:СотрудникИОФ Выражение:ИОФ(ТекущийСотрудник.Физлицо){ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(15)}: Метод объекта не обнаружен (ИнициалыФизЛицаФамилия)

ОШИБКА Тэга:ОрганизацияДолжностьРуководителяДательный Выражение:Дательный(Организация.ДолжностьРуководителя){ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(103)}: Метод объекта не обнаружен (РазложитьСтрокуВМассивПодстрок);

Что с этим делать??
14. Сергей (seermak) 653 07.04.15 05:55 Сейчас в теме
(13)добавьте в общий модудь ОбщегоНазначения процедуру РазложитьСтрокуВМассивПодстрок(СтрокаДляРазложения); Эта процедура стандартная для всех конфигураций, только храниться может в разных модулях
15. МАРИЯ Мария (mariya.y) 07.04.15 14:03 Сейчас в теме
(14) seermak, А для блондинок крашеных можно поподробнее?? Буду благодарна
И еще вопрос: А можно ли как то в тэги добавить Свойства которые находятся во вкладке "дополнительно" в карточке сотрудника?
16. МАРИЯ Мария (mariya.y) 10.04.15 18:22 Сейчас в теме
Неужели никто не может помочь :-( поделитесь секретом, я уже попробовала сделать, ничего не вышло( выдает ошибку и все, не склоняет в общем