Как работает механизм вывода печатных форм в документах 1С?

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

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

Давайте разберем этот механизм по шагам, опираясь на принципы работы Библиотеки стандартных подсистем (БСП), которая является фундаментом современных типовых решений 1С.

Регистрация команд печати в модуле менеджера

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

Когда система инициализирует команды печати (например, при открытии формы документа), она обращается к этой процедуре. В ней мы передаем в коллекцию КомандыПечати параметры для каждой доступной печатной формы: её идентификатор, представление для пользователя (название в меню) и признаки доступности.

Примерная структура такой процедуры выглядит следующим образом:


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    // Добавление команды печати счета-фактуры
    Команда = КомандыПечати.Добавить();
    Команда.Идентификатор = "СчетФактура";
    Команда.Представление = НСтр("ru = 'Счет-фактура'");
    Команда.ПроверкаОрганизации = Истина;
    Команда.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КонецПроцедуры

Как выполняется команда печати

Когда пользователь выбирает пункт в меню «Печать», срабатывает общий механизм подсистемы. Клиентская логика запускает обработчик, чаще всего это Подключаемый_ВыполнитьКоманду на форме документа. Далее управление передается в общий модуль ПодключаемыеКомандыКлиент (или аналогичные модули БСП), который на основе идентификатора команды вызывает соответствующую серверную функцию.

Этот подход позволяет системе гибко управлять списком форм: добавлять внешние печатные формы, скрывать неактуальные команды или добавлять новые без необходимости изменения типового кода формы документа.

Логика выбора макета печатной формы

Многих разработчиков интересует вопрос: как система выбирает нужный макет, например, СчетФактура534, в зависимости от законодательства? Этот процесс происходит на серверной стороне в момент формирования данных для печати.

  1. Анализ даты документа: Законодательство часто требует смены печатных форм. В модуле менеджера или в общем модуле печати, который отвечает за формирование табличного документа, прописана логика проверки даты документа.
  2. Выбор макета: Используется конструкция условия. Если дата документа больше или равна некоторой граничной дате, выбирается актуальный макет, в противном случае — более старый.

Рассмотрим упрощенный пример того, как это может выглядеть в коде:


Функция ОпределитьИмяМакета(ДатаДокумента)
    Если ДатаДокумента >= Дата('20230701') Тогда
        Возврат "СчетФактура534";
    Иначе
        Возврат "СчетФактураСтарая";
    КонецЕсли;
КонецФункции

Рекомендации по изучению механизма

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

  1. Установите точку останова (breakpoint) непосредственно в процедуре ДобавитьКомандыПечати модуля менеджера документа. Откройте форму документа и проследите, как заполняется коллекция команд.
  2. Ищите в коде использование объекта УправлениеПечатью. Именно через него проходят все запросы на получение макетов.
  3. Обратите внимание на общие модули с именами вроде УправлениеПечатьюПереопределяемый — там часто содержатся функции, определяющие логику для типовых документов.
  4. Если проблема связана с тем, что выводится «не та» форма, ищите в коде константы с датами или названия макетов (как СчетФактура534). Скорее всего, именно там стоит условие, которое не срабатывает для ваших условий документа.

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

← На главную