Создаем расширение для КА 2.5 "Печать по шаблону Open XML"
Решаем творческую задачу на предмет создания расширения конфигурации КА 2.5 для печати договора контрагента с использованием БСП и макетов в формате Open XML. А далее - для печати трудового договора. Основная задача - заполнить в одном случае реквизиты контрагента и организации, в другом случае - сотрудника и организации.
БСП версии 3.1.4 умеет работать с форматом Open XML, берет на себя реализацию процессов по распаковке файла, замене параметров и обратной запаковке. Требуется добавить кнопки печати, вставить макеты и заполнить данные для печати.
В конфигурации БП 3.0 есть чудесный механизм печати договора с контрагентом на основе HTML и поля Форматированного документа. Конфигурация "Комплексная автоматизация" такого механизма не имеет, но там есть пример разработки Справочник "Карты лояльности", где применяется макет в формате MS Word.
По условиям задачи требуется вывести на печать два вида договора:
1. Договор со 100% предоплатой.
2. Договор с отсрочкой платежа.
Начинаем веселиться.
Читаем на ИТС инструкцию по разработке в БСП 3.1.4 Главу "Печать". На всякий случай не буду прямо цитировать, а то мало ли что) Хотя такая информация ДОЛЖНА быть в свободном доступе. Итак:
1. Найти модуль УправлениеПечатьюПереопределяемый
2. В модуле найти процедуру ПриОпределенииОбъектовСКомандамиПечати
3. Убедиться, что в процедуре перечислен требуемый объект.
БСП версии 3.1.4 умеет работать с форматом Open XML, берет на себя реализацию процессов по распаковке файла, замене параметров и обратной запаковке. Требуется добавить кнопки печати, вставить макеты и заполнить данные для печати.
В конфигурации БП 3.0 есть чудесный механизм печати договора с контрагентом на основе HTML и поля Форматированного документа. Конфигурация "Комплексная автоматизация" такого механизма не имеет, но там есть пример разработки Справочник "Карты лояльности", где применяется макет в формате MS Word.
По условиям задачи требуется вывести на печать два вида договора:
1. Договор со 100% предоплатой.
2. Договор с отсрочкой платежа.
Начинаем веселиться.
Читаем на ИТС инструкцию по разработке в БСП 3.1.4 Главу "Печать". На всякий случай не буду прямо цитировать, а то мало ли что) Хотя такая информация ДОЛЖНА быть в свободном доступе. Итак:
1. Найти модуль УправлениеПечатьюПереопределяемый
2. В модуле найти процедуру ПриОпределенииОбъектовСКомандамиПечати
3. Убедиться, что в процедуре перечислен требуемый объект.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Что же, в процедуре ПриОпределенииОбъектовСКомандамиПечати ничего нет кроме вызова УправлениеПечатьюУТСервер.ОпределитьОбъектыСКомандамиПечати(СписокОбъектов)
Ну хорошо, посмотрим, что там. Да там целый список! И даже есть нужный нам
СписокОбъектов.Добавить(Справочники.ДоговорыКонтрагентов);
Отлично, первое условие выполнено. Двигаемся дальше.
Ну хорошо, посмотрим, что там. Да там целый список! И даже есть нужный нам
СписокОбъектов.Добавить(Справочники.ДоговорыКонтрагентов);
Отлично, первое условие выполнено. Двигаемся дальше.
Теперь нужно в МодулеМенеджера определить процедуру ДобавитьКомандыПечати
Создадим расширение конфигурации.
Хотелось бы в расширении работать только с модулями, не тащить в расширение формы.
В МодулеМенеджера уже есть процедура ДобавитьКомандыПечати, в которой ничего нет кроме вызова
а в процедуре ДоговорыКонтрагентовЛокализация.ДобавитьКомандыПечати(КомандыПечати); нет вообще ничего.
Хмм. Это типа так надо, да? Хорошо, добавляем в расширение наши команды печати:
Посмотрим в БСП "Счета на оплату покупателю", там как раз применяется куча разных способов печати, причем есть способ с Open XML, который сам определяет, запускать Word или OpenOffice. Круто же?
Отлично, на форме договора по волшбству появилась кнопка "Печать" с картинкой принтера и появляется меню с двумя пунктами "'Договор поставки. Предоплата" и Договор поставки. Отсрочка платежа.
Создадим расширение конфигурации.
Хотелось бы в расширении работать только с модулями, не тащить в расширение формы.
В МодулеМенеджера уже есть процедура ДобавитьКомандыПечати, в которой ничего нет кроме вызова
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
ДоговорыКонтрагентовЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
а в процедуре ДоговорыКонтрагентовЛокализация.ДобавитьКомандыПечати(КомандыПечати); нет вообще ничего.
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КонецПроцедуры
Хмм. Это типа так надо, да? Хорошо, добавляем в расширение наши команды печати:
Посмотрим в БСП "Счета на оплату покупателю", там как раз применяется куча разных способов печати, причем есть способ с Open XML, который сам определяет, запускать Word или OpenOffice. Круто же?
&После("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати)
КомандаПечати = КомандыПечати.Добавить();
//КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "ДоговорКонтрагентаПредоплата";
КомандаПечати.Представление = НСтр("ru = 'Договор поставки. Предоплата'");
КомандаПечати.ТребуетсяРасширениеРаботыСФайлами = Истина;
КомандаПечати.Порядок = 10;
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord;
КомандаПечати = КомандыПечати.Добавить();
//КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "ДоговорКонтрагентаОтсрочкаПлатежа";
КомандаПечати.Представление = НСтр("ru = 'Договор поставки. Отсрочка платежа'");
КомандаПечати.ТребуетсяРасширениеРаботыСФайлами = Истина; // В БСП так написано,
КомандаПечати.Порядок = 10;
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord;
КонецПроцедуры
ПоказатьОтлично, на форме договора по волшбству появилась кнопка "Печать" с картинкой принтера и появляется меню с двумя пунктами "'Договор поставки. Предоплата" и Договор поставки. Отсрочка платежа.
Теперь нужно разместить в расширении макеты договоров. Как пишет ИТС, при объекте, где определяется процедура печати.
Интересно, а если я захочу разместить файл макета в "Дополнительной информации" как до него потом добраться?
К имени макета СЛЕДУЕТ добавить специальный префикс, для макета Office Open XML – ПФ_DOC. А для чего так? Этот префикс как-то обрабатывается БСП? Или "так надо"? а если я не добавлю этот префикс?
Хорошо, назовем наши макеты "ПФ_DOC_ДоговорПоставкиПредоплата" и "ПФ_DOC_ДоговорПоставкиОтсрочкаПлатежа", добавим как двоичные файлы в дерево "Макеты" справочника "ДоговорыКонтрагентов" в наше расширение.
ИТС пишет, что путь к макету МОЖЕТ быть
для макетов в документах: Документ.<Имя документа>.<Имя макета>;
для макетов в обработках: Обработка.<Имя обработки>.<Имя макета>;
для общих макетов: ОбщийМакет.<Имя макета>
А как же наш справочник? Посмотрим)
Интересно, а если я захочу разместить файл макета в "Дополнительной информации" как до него потом добраться?
К имени макета СЛЕДУЕТ добавить специальный префикс, для макета Office Open XML – ПФ_DOC. А для чего так? Этот префикс как-то обрабатывается БСП? Или "так надо"? а если я не добавлю этот префикс?
Хорошо, назовем наши макеты "ПФ_DOC_ДоговорПоставкиПредоплата" и "ПФ_DOC_ДоговорПоставкиОтсрочкаПлатежа", добавим как двоичные файлы в дерево "Макеты" справочника "ДоговорыКонтрагентов" в наше расширение.
ИТС пишет, что путь к макету МОЖЕТ быть
для макетов в документах: Документ.<Имя документа>.<Имя макета>;
для макетов в обработках: Обработка.<Имя обработки>.<Имя макета>;
для общих макетов: ОбщийМакет.<Имя макета>
А как же наш справочник? Посмотрим)
Пути для макетов в справочнике (неужели) :
"Справочник.ДоговорыКонтрагентов.ПФ_DOC_ДоговорПоставкиПредоплата"
"Справочник.ДоговорыКонтрагентов.ПФ_DOC_ДоговорПоставкиОтсрочкаПлатежа".
в кавычках, потому что это тип Строка.
А каким должен быть макет?
Это документ в формате DOCX , где поля требующие подстановки данных из системы выделены фигурными скобками c тэгом v8 внутри скобок:
также можно выделять области в документе, например:
начало области "Заголовок": {v8 Область.Заголовок}
маркер "Контрагент": {v8 НаименованиеКонтрагента},
маркер "№ договора" {v8 НомерДоговора} и т.д.
конец области "Заголовок": {/v8 Область.Заголовок}
Подготовим документы в "Ворде", расставив в тексте договора нужные параметры
"Справочник.ДоговорыКонтрагентов.ПФ_DOC_ДоговорПоставкиПредоплата"
"Справочник.ДоговорыКонтрагентов.ПФ_DOC_ДоговорПоставкиОтсрочкаПлатежа".
в кавычках, потому что это тип Строка.
А каким должен быть макет?
Это документ в формате DOCX , где поля требующие подстановки данных из системы выделены фигурными скобками c тэгом v8 внутри скобок:
также можно выделять области в документе, например:
начало области "Заголовок": {v8 Область.Заголовок}
маркер "Контрагент": {v8 НаименованиеКонтрагента},
маркер "№ договора" {v8 НомерДоговора} и т.д.
конец области "Заголовок": {/v8 Область.Заголовок}
Подготовим документы в "Ворде", расставив в тексте договора нужные параметры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот