При разработке собственных печатных форм для типовых конфигураций на платформе 1С:Предприятие 8.3 (таких как Управление торговлей 11.5) часто возникает задача включения этих форм в «Комплект печатных форм». Механизм БСП (Библиотеки Стандартных Подсистем) позволяет реализовать это через расширения, однако требует строгого соблюдения синтаксиса и логики вызовов. Рассмотрим, как сделать это правильно, чтобы избежать рекурсии и ошибок исполнения.
Когда мы используем аннотацию &Вместо для переопределения стандартной функции КомплектПечатныхФорм, система полностью замещает типовой алгоритм нашим кодом. Если внутри этого кода мы просто вызываем функцию с тем же именем, происходит бесконечная рекурсия, так как 1С снова обращается к нашему расширению. Для корректной работы необходимо использовать инструкцию ПродолжитьВызов, которая передает управление типовой логике платформы, позволяя ей выполнить свою часть работы, после чего мы сможем дополнить результат своими данными.
Для начала работы нам необходимо создать расширение, в котором мы «подменим» стандартную функцию получения комплекта. Давайте разберем правильную структуру кода:
&Вместо("КомплектПечатныхФорм")
Функция МойКомплектПечатныхФорм Экспорт
// Вызываем типовую функцию через ПродолжитьВызов, чтобы получить штатный список
МойКомплект = ПродолжитьВызов();
// Дополняем полученный комплект нашей собственной формой
// Используем метод объекта РегистраСведений, предусмотренный БСП
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(
МойКомплект,
"ИмяВашейКомандыПечати",
НСтр("ru = 'Наименование для пользователя'"),
1
);
Возврат МойКомплект;
КонецФункции
Важный момент: во втором параметре метода ДобавитьПечатнуюФормуВКомплект необходимо указывать в точности тот идентификатор команды, который вы задали ранее при регистрации формы в процедуре ДобавитьКомандыПечати вашего расширения.
Даже если программно вы добавили форму в комплект, она может не отобразиться в пользовательском режиме, если в регистре настроек печати для конкретного пользователя или объекта не зафиксирован этот выбор. Рассмотрим следующие шаги для отладки:
ДополнительныеОтчетыИОбработки.Если печатная форма успешно появилась в списке, но не сохраняется в настройках или не формируется при пакетной печати, проанализируйте вызов СформироватьКомплектПечатныхФорм. Часто требуется доработка метода вывода на печать внутри расширения, чтобы он корректно обрабатывал передаваемый массив объектов (например, документов Реализация товаров и услуг).
Совет: Всегда используйте отладчик при работе с комплектами. Установите точку останова в начале функции КомплектПечатныхФорм и проверьте, попадает ли выполнение кода в ваше расширение и корректно ли отрабатывает ПродолжитьВызов.
ПродолжитьВызов вместо прямого вызова типовой функции.Следуя этим рекомендациям, вы сможете интегрировать любые отчетные или печатные формы в типовые процессы 1С, сохранив целостность конфигурации и удобство для конечного пользователя.