Описание для печати документа «Заказ покупателя» для конфигурации Управление Торговлей 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.
Компонента склонения.
Не нашел способа гарантированного подключения компоненты склонения в УТ (в каждом отдельном случае необходимы настройки программы). Компонента подключается только если сохранена в общем макете конфигурации или ранее зарегистрирована в системном реестре. Но, по правде сказать использование компоненты лишняя головная боль. Особенно если пытаешься просклонять должности, подразделения и некоторые ФИО (кроме Иванов, Сидоров …), т.е. нужно постоянно проверять.
Сделал по образу и подобию. Понравилась идея размещения тэгов в шаблоне (еще бы в обработку они сами копировались бы)По склонению: библиотека без проблем подключается из общего макета, если не смогли подключить дублируется функцией из общего модуля. Настройки соответствия шаблона и данных базы сохраняю в хранилище настроек с именем шаблона — удобно — загрузил макет, настройки встали автоматом, выбрал объект и печатаешь сразу, надо что-то добавить в шаблоне — изменения настроек сохраняются автоматом. Вместо дополнительных путей добавил формы развертывания дерева объекта. Если данные сложные — формирую запрос и с ним работаю. Спасибо за пример и идею)))
seermak, не могли поделиться своей обработкой допиленной обработкой.
Доброго дня seermak! Приятно за понимание, что я попробовал вложить в обработку некоторые идеи, позволяющие упростить формирование печ. форм в Word. Теперь по порядку:
1)По компоненте склонения. Вообще-то в описании я написал и в тексте программы это видно:
с ЗУП проблемм нет — она там встроенная (лежит в общем макете)(УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной(«глКомпонентаСклоненияФИО»)…..),
в УТ+СРМ (для которой мне пришлось дорабатывать ЗУПовский вариант) она тоже встроенная,
а вот в УТ ее нет и у Вас появляется выбор. Затаскивать ее в общий макет и регистрировать с Админскими правами на комп., или просто регистрировать в Windows (NameDecl.dll) соответственно в программе ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаСклоненияФИО», «Decl», ТипВнешнейКомпоненты.Native) или ПодключитьВнешнююКомпоненту(«AddIn.NameDecl»)
По поводу самой компоненты: я настроил склонения типа Заместителю Генерального директора и некоторые другие, но список должностей бесконечен. Для примера : Оффис-менеджер, Консультант-референт и мн. др. Тут я не притендую на создание своей компоненты по склонению должностей (По ФИО и то дает не всегда верные результаты).
2)Не понял пожелание (еще бы в обработку они сами копировались бы) — Откуда?. Тэги в шаблоне представлены в виде полей с б.менее удобочитаемыми наименованиями (для меня это было важно, можно ведь в них запихивать и куски текста на языке 1С), а таблица соответствия Имен Тэгов и путей получения их значений в макете обработки. По поводу где хранить эту таблицу можно предложить много способов: В самой обработке, в настройках, в справочнике, в регистре сведений (кстати мне это предстоит делать т.к. количество шаблонов в одной из программ уже давно перевалило за 100 и в одних случаях изменение вычисления одного Тэга должно отобразиться во всех шаблонах, а в других нет), кстати эту таблицу можно хранить и в самом шаблоне Word (нет проблем с клонированием шаблонов) — наверное это зависит от конкр. базы.
3)Не понял чем ваш способ выбора путей к данным отличается от моего.
Почему я разбил получение пути к данным на два поля? В первом поле можно выбрать то, что лежит на поверхности: реквизиты документа, Организации, Сотрудника (Контрагента) и таб. частей (я их специально разместил (с помощью общего запроса к метаданным) в корне списка выбора для простоты выбора пути к данным). А во втором поле, то что нецелесообразно помещать в первом из-за сложности построения общего запроса и увеличения списка выбора. Там должны быть данные дополнительных запросов (ведь не хранить же тексты запросов в таблице соответствий (хотя можно и так)), доп. полей, которые так необходимы пользователям для построения их ну Очень красивых шаблонов.
(2) п/п 2 был шуткой п/п 3 — почти ничем — только лишнее поле всегда пугает… да и еще я сделал свою на управляемых формах (это для того, чтобы люди попусту не обращались). А, вообще, я просто хотел сказать спасибо. и показать что пу меня получилось из вашей идеи и более ничего))
Идея хорошая, у нас стоит наподобие в подсистеме «Учет договоров». смысл в том, что пользователь может сам создавать печатные формы в Word
Это можно реализовать в пользовательском режиме.
Спасибо большое!
Добрый день! При использовании Вашего примера шаблона по кнопке «печать» возникает такая ошибка:
{ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(609)}: Ошибка при вызове метода контекста (Add)
ActiveDocument = Word.Documents.Add(ФайлШаблона);
по причине:
Неизвестная ошибка
Стоит Word 2013.
Ошибка пропала после того, как я пересохранила приложенный шаблон в формат .dot
Большой плюс что печатная форма адаптируема, можно сказать универсальная. Автору спасибо!
спасибо, здорово
Здравствуйте!
Спасибо за обработку, очень удобная и несложная.
Но недавно столкнулась с такой проблемой: необходимо было воспользоваться предопределенными тэгами «ТЧ_ИмяТабличнойЧасти_Начало,ТЧ_ИмяТабличнойЧасти_Конец» дважды в текстовом документе, ссылаясь на одну и ту же ТЧ. В первом случае цикл отработал безупречно, а во втором случае выдает ошибку:
{ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(507)}: Ошибка при получении значения атрибута контекста (Range)
Если Table.Range.Start<НачалоСтроки И Table.Range.End>КонецСтроки Тогда
по причине:
Произошла исключительная ситуация (Microsoft Word): Объект был удален.
И не знаю, как избавиться от этой ошибки. Если можно, подскажите, пожалуйста, что нужно сделать.
Заранее спасибо!
Добрый день. Вот такую ошибку выдает при попытке напечатать(
{ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(249)}: Метод объекта не обнаружен (РазложитьСтрокуВМассивПодстрок)
мПоляАдреса=ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Организация.Адрес);
Удалила эту строчку…. теперь печать получется, но там где склонение ОШИБКИ
ОШИБКА Тэга:ОрганизацияДолжностьРуководителяРодительный Выражение:Родительный(Организация.ДолжностьРуководителя){ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(103)}: Метод объекта не обнаружен (РазложитьСтрокуВМассивПодстрок) ОШИБКА Тэга:ОрганизацияРуководительРодительный Выражение:Родительный(Организация.Руководитель){ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(103)}: Метод объекта не обнаружен (РазложитьСтрокуВМассивПодстрок),
ОШИБКА Тэга:СотрудникИОФ Выражение:ИОФ(ТекущийСотрудник.Физлицо){ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(15)}: Метод объекта не обнаружен (ИнициалыФизЛицаФамилия)
ОШИБКА Тэга:ОрганизацияДолжностьРуководителяДательный Выражение:Дательный(Организация.ДолжностьРуководителя){ВнешняяОбработка.ПечатьПоШаблонуWord.МодульОбъекта(103)}: Метод объекта не обнаружен (РазложитьСтрокуВМассивПодстрок);
Что с этим делать??
(13)добавьте в общий модудь ОбщегоНазначения процедуру РазложитьСтрокуВМассивПодстрок(СтрокаДляРазложения); Эта процедура стандартная для всех конфигураций, только храниться может в разных модулях
(14) seermak, А для блондинок крашеных можно поподробнее?? Буду благодарна
И еще вопрос: А можно ли как то в тэги добавить Свойства которые находятся во вкладке «дополнительно» в карточке сотрудника?
Неужели никто не может помочь 🙁 поделитесь секретом, я уже попробовала сделать, ничего не вышло( выдает ошибку и все, не склоняет в общем