Как добавить дополнительные поля в типовой макет печатной формы в 1С:ЗУП 3.1?

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

В процессе сопровождения типовых конфигураций (особенно таких как 1С:Зарплата и управление персоналом 3.1 или 1С:Зарплата и кадры государственного учреждения) часто возникает задача дополнить стандартную печатную форму, например, Приказ о приеме (Т-1), данными, которых изначально нет в макете. Типичный пример: вывод количества ставок, информации о руководителе или специфических реквизитов из расширения.

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

Метод 1. Настройка через изменение варианта отчета (для форм на базе СКД)

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

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

Важно: Этот способ работает только для тех форм, печать которых в коде инициируется через вызов отчета. В ЗУП/ЗиКГУ КОРП для этого также существует удобная обработка «Настройка печатных форм», которая позволяет визуально выбирать поля из доступных кадровых данных. Для создания и самостоятельной настройки шаблонов в пользовательском режиме можно задействовать интерактивный конструктор печатных форм.

Метод 2. Использование расширений для модификации данных печати

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

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

  1. Создадим расширение и добавим в него метод, отвечающий за сбор данных для печати. Обычно это функция СформироватьПечатныеФормы... или процедура, подготавливающая временные таблицы.
  2. Используем аннотацию &После (&After), чтобы дополнить уже сформированную таблицу данных своими значениями.

Пример кода для расширения, который добавляет данные в коллекцию печатных форм:


&После("СформироватьКоллекциюДанныхДляПечатиПриказа")
Процедура Расш_СформироватьКоллекциюДанныхДляПечатиПриказа(Параметры, ДанныеПечати)
    
    // Перебираем сформированные строки данных
    Для Каждого СтрокаДанных Из ДанныеПечати Цикл
        // Обращаемся к ссылке документа для получения дополнительных реквизитов
        Если ЗначениеЗаполнено(СтрокаДанных.Ссылка) Тогда
            СтрокаДанных.Вставить("КоличествоСтавок", СтрокаДанных.Ссылка.КоличествоСтавок);
            // Можно добавить любую логику, например, запрос к регистру
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

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

Метод 3. Точечная нотация в параметрах макета

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

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

Ограничение: Это работает только если программный код заполнения макета использует метод ЗаполнитьЗначенияСвойств, где в качестве источника выступает сам объект (ссылка), или если используется механизм БСП УправлениеПечатью.ЗаполнитьПараметрыМакета. Если же данные собираются в отдельную структуру или таблицу значений (что характерно для кадровых документов), то обращение через точку внутри макета не сработает, так как в структуре-источнике просто нет такого ключа.

Метод 4. Дополнительные реквизиты (БСП)

Если поле, которое вы хотите добавить, создано пользователем как Дополнительный реквизит (через интерфейс, без изменения конфигурации), то задача упрощается. Библиотека стандартных подсистем во многих формах поддерживает их вывод автоматически.

  1. Убедимся, что для документа настроен доп. реквизит (например, «Участок работы»).
  2. Зайдем в редактирование макета печатной формы.
  3. В списке доступных параметров (в последних версиях БСП) можно найти предопределенные имена для доп. реквизитов. Обычно они именуются по шаблону ДополнительныйРеквизит_ИмяРеквизита_БезПробелов.

Метод 5. Использование шаблонов Microsoft Word

Если работа с табличным документом (MXL) кажется слишком трудоемкой из-за жесткой программной логики формирования строк, выясним, нельзя ли использовать альтернативу. БСП позволяет добавлять макеты в формате .docx или .odt.

Преимущество Word-макетов в том, что они гораздо «умнее» в плане работы с данными. В тексте документа вы можете вставлять поля вида {Ссылка.КоличествоСтавок} или {Ссылка.Организация.ИНН}. При печати механизм БСП сам выполнит разыменование ссылок и подставит нужные значения, если объект передан в контекст печати. Это избавляет программиста от необходимости дописывать запросы в расширениях для получения каждого нового поля.

Резюме и рекомендации

Выясним, какой путь выбрать в зависимости от ситуации:

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

← На главную