Специфика работы моей организации предполагает формирование различных пакетов документов для разных клиентов. Как обычно, разработка печатных форм ложится полностью на плечи программистов.
Большинство печатных форм у нас внешние. Бывает необходимость немного изменить формы макеты форм.
В библиотеке стандартных подсистем есть прекрасный инструмент для этого - пользовательские макеты печатных форм. Беда в том, что предназначен он только для встроенных печатных форм. Первая часть расширения исправляет это недоразумение.
В процессе написания печатных форм под каждого клиента их накопилось очень много. Для группировки из по договорам контрагентов служит вторая часть расширения - настраиваемый комплект печатных форм с привязкой к договору контрагента
Пользовательские макеты внешних печатных форм
Здесь все просто. Для редактирования печатной формы добавлена кнопка в форму печати документа "Редактировать макет". После редактирования макет сохраняется в регистр сведений "Макеты печатных форм" и используется при получении макета во внешней печатной форме.
ВАЖНО: для того чтобы БСП корректно подставила нужный макет во внешнюю печатную форму разработана специальная функция: УправлениеПечатью.ПолучитьМакет (было бы логичнее использовать стандартную функцию УправлениеПечать.МакетПечатнойФормы, но было изменено количество параметров функции и 1С ругается на расширение)
Пример получения печатной формы:
МакетПечатнойФормы = УправлениеПечатью.ПолучитьМакет("ВнешняяОбработка.ИмяОбработки.ИмяПечатнойФормы", ЭтотОбъект);
Как видно - ключевая фраза для определения что это макет внешней печатной формы - "ВнешняяОбработка". Добавлен второй параметр ЭтотОбъект, в который передается объект внешней печатной формы или ссылка на справочник "ДополнительныеОтчетыИОбработки".
Комплекты печатных форм по договору
В стандартной бухгалтерии уже есть печатная форма "комплект документов", но изначально моя подсистема была разработана не на бухгалтерии и имеет более расширенные возможности, по сравнению со стандартным комплектом, поэтому было принято решение адаптировать ее в стандартную бухгалтерию.
Настроить комплект можно из формы договора или из формы документа, из которого формируется.
Для каждого вида документа можно настроить свой комплект документов.
В "базе" настроены комплекты для документов "Реализация товаров и услуг" и "Передача товаров". Список документов можно расширить, модифицировав процедуру "ЗаполнитьСписокМетаданных" формы записи регистра сведений "НастройкиКомплектовПечатныхФорм"
&НаСервере
Процедура ЗаполнитьСписокМетаданных()
Строка = СписокОбъектовМетаданных.Добавить();
Строка.Значение = "РеализацияТоваровУслуг";
Строка.Наименование = "Реализация товаров и услуг";
Строка = СписокОбъектовМетаданных.Добавить();
Строка.Значение = "ПередачаТоваров";
Строка.Наименование = "Передача товаров";
КонецПроцедуры
Сам комплект подключается к документу как обычная встроенная печатная форма добавлением кода в процедуру модуля менеджера документа "ДобавитьКомандыПечати"
// Настраиваемый комплект документов.
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "КомплектДокументов";
КомандаПечати.СписокФорм = "ФормаДокументаУслуги,ФормаДокументаТовары";
КомандаПечати.Картинка = БиблиотекаКартинок.КатегорииКопировать;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Представление = НСтр("ru = 'Комплект документов по договору'");
КомандаПечати.МестоРазмещения = "ГруппаВажныеКоманды";
КомандаПечати.ДополнительныеПараметры.Вставить("НеВыводитьВКомплекте",Истина);
КомандаПечати.ФиксированныйКомплект = Истина;
КомандаПечати.Порядок = 160;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "ДоговорКонтрагента","РеализацияТоваровУслуг","НастройкиКомплекта");
Исключение - последняя строчка "УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды". Здесь в качестве вида сравнения указывается строка "НастройкиКомплекта", а в качестве значения указывается имя документа.
Данное расширение тестировалось на платформе 1С:Предприятие 8.3 (8.3.16.1224). (можно на более ранней, но только там, где в расширении добавлена возможность создания новых объектов).
Конфигурация Бухгалтерия предприятия, редакция 3.0 (3.0.77.106) (будет работать и на других релизах, в которых используется версия 3.1.2 библиотеки стандартных подсистем).