Как добавить параметр в печатную форму Т-5 и почему новые поля не появляются в макете?

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

Рассмотрим распространенную ситуацию при доработке типовых печатных форм в конфигурациях 1С, таких как «Зарплата и Управление Персоналом» (ЗУП) или ERP. Предположим, нам необходимо добавить в приказ о кадровом переводе (форма Т-5) информацию о графике работы сотрудника. Мы добавляем соответствующее поле в вычисляемые поля Схемы Компоновки Данных (СКД), помещаем его в выбранные поля и выводим параметр в макет печатной формы в конфигураторе. Однако при попытке сформировать документ мы видим, что параметр просто не устанавливается, а колонка с нашим полем отсутствует в коллекции РезультатКомпоновки.ДанныеОтчета.

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

Почему изменения в СКД не применяются?

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

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

Решение проблемы: обновление кэша макетов

Разберем способы, которые помогут заставить систему «увидеть» наши доработки в СКД.

Способ 1: Штатная очистка через пользовательский режим (рекомендуемый)

Удалять записи из служебных регистров напрямую не рекомендуется, так как это может нарушить целостность данных. Правильный и безопасный путь обновления макета выглядит следующим образом:

  1. В режиме 1С:Предприятие перейдите в раздел «Администрирование».
  2. Откройте пункт «Печатные формы, отчеты и обработки».
  3. Перейдите по ссылке «Макеты печатных форм».
  4. В открывшемся списке найдите нужную нам форму (в данном случае макет формы Т-5).
  5. Выделите строку с макетом и нажмите кнопку «Использовать стандартный макет» (или сбросьте пользовательские настройки, если они применялись).

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

Способ 2: Очистка регистра сведений (технический вариант)

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

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

Альтернативные и более безопасные варианты решения задачи

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

  1. Настройка в режиме 1С:Предприятия. Зачастую необходимые данные (в том числе графики работы) уже неявно присутствуют в скрытых наборах данных типовой СКД. Мы можем зайти в раздел «Макеты печатных форм», открыть макет Т-5 для редактирования прямо в пользовательском режиме и добавить в нужную ячейку текст вида [РаботаГрафикРаботы]. Затем в свойствах ячейки достаточно установить тип заполнения «Параметр» или «Шаблон».
  2. Создание Внешней Печатной Формы (ВПФ). Это самый надежный способ реализации сложных алгоритмов вывода параметров без вмешательства в типовой код. Создается внешняя обработка по стандартам БСП, в модуле которой можно написать произвольный запрос к кадровым данным и вывести любые необходимые поля в свой собственный макет.
  3. Использование расширений конфигурации. Вместо изменения типовой СКД в основной конфигурации, макет и логика его заполнения переопределяются в расширении. Это позволяет перехватить процедуру формирования структуры данных для печати (используя аннотации &Перед или &После) и программно добавить нужные значения в структуру перед самим выводом на экран или принтер.

Важное замечание: При добавлении сложных функций в вычисляемые поля СКД (например, обращение к экспортным функциям общих модулей для каждого сотрудника в цикле) следует быть очень осторожными. Это может критически замедлить формирование документа, особенно если приказ Т-5 или аналогичный документ печатается списком на большое количество сотрудников одновременно.

← На главную