Как добавить свою печатную форму в комплект документов через расширение?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При разработке собственных печатных форм для типовых конфигураций на платформе 1С:Предприятие 8.3 (таких как Управление торговлей 11.5) часто возникает задача включения этих форм в «Комплект печатных форм». Механизм БСП (Библиотеки Стандартных Подсистем) позволяет реализовать это через расширения, однако требует строгого соблюдения синтаксиса и логики вызовов. Рассмотрим, как сделать это правильно, чтобы избежать рекурсии и ошибок исполнения.

Понимание проблемы: почему возникает зацикливание?

Когда мы используем аннотацию &Вместо для переопределения стандартной функции КомплектПечатныхФорм, система полностью замещает типовой алгоритм нашим кодом. Если внутри этого кода мы просто вызываем функцию с тем же именем, происходит бесконечная рекурсия, так как 1С снова обращается к нашему расширению. Для корректной работы необходимо использовать инструкцию ПродолжитьВызов, которая передает управление типовой логике платформы, позволяя ей выполнить свою часть работы, после чего мы сможем дополнить результат своими данными.

Шаг 1: Правильное переопределение функции комплекта

Для начала работы нам необходимо создать расширение, в котором мы «подменим» стандартную функцию получения комплекта. Давайте разберем правильную структуру кода:


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

Важный момент: во втором параметре метода ДобавитьПечатнуюФормуВКомплект необходимо указывать в точности тот идентификатор команды, который вы задали ранее при регистрации формы в процедуре ДобавитьКомандыПечати вашего расширения.

Шаг 2: Учет настроек пользователя

Даже если программно вы добавили форму в комплект, она может не отобразиться в пользовательском режиме, если в регистре настроек печати для конкретного пользователя или объекта не зафиксирован этот выбор. Рассмотрим следующие шаги для отладки:

  1. Убедитесь, что вы используете обработку «Печать комплекта с настройкой».
  2. Если форма не появляется, попробуйте очистить настройки печати или принудительно инициализировать их через стандартные функции БСП.
  3. Проверьте, не является ли ваша печатная форма внешней обработкой, требующей специфической регистрации в справочнике ДополнительныеОтчетыИОбработки.

Шаг 3: Особенности формирования комплекта

Если печатная форма успешно появилась в списке, но не сохраняется в настройках или не формируется при пакетной печати, проанализируйте вызов СформироватьКомплектПечатныхФорм. Часто требуется доработка метода вывода на печать внутри расширения, чтобы он корректно обрабатывал передаваемый массив объектов (например, документов Реализация товаров и услуг).

Совет: Всегда используйте отладчик при работе с комплектами. Установите точку останова в начале функции КомплектПечатныхФорм и проверьте, попадает ли выполнение кода в ваше расширение и корректно ли отрабатывает ПродолжитьВызов.

Основные рекомендации по реализации

Следуя этим рекомендациям, вы сможете интегрировать любые отчетные или печатные формы в типовые процессы 1С, сохранив целостность конфигурации и удобство для конечного пользователя.

← На главную