Как вывести дополнительный реквизит подразделения в печатную форму в 1С:ERP

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

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

Способ 1. Использование шаблонов печати в формате Word и OpenOffice

Начнем с самого доступного способа, который не требует навыков программирования и изменения кода конфигурации. В современных версиях 1С:ERP (начиная с 2.4 и выше) реализован мощный механизм «Печать по шаблонам». Разберем, почему это решение часто оказывается наиболее эффективным.

В отличие от классических табличных документов (MXL), шаблоны в формате .docx или .odt позволяют напрямую обращаться к дереву реквизитов объекта. Проанализируем алгоритм действий:

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

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

Способ 2. Настраиваемые печатные формы (функционал ЗУП КОРП)

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

Если в вашей базе включена опция Использовать настраиваемые печатные формы (ее можно найти через НСИ и администрирование — Зарплата), то процесс упрощается. Разберем по шагам:

  1. Зайдем в меню Настройка — Сервис — Настраиваемые печатные формы.
  2. Выберем интересующий нас приказ.
  3. В области «Доступные поля» найдем объект Ссылка на объект.
  4. Раскроем его и увидим список всех дополнительных реквизитов, созданных для данного типа данных (в нашем случае — для Подразделения).

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

Способ 3. Создание внешней печатной формы (ВПФ)

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

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


// Пример фрагмента запроса для получения доп. реквизита
Запрос.Текст = 
"ВЫБРАТЬ
|   ДополнительныеРеквизиты.Значение КАК ПолноеНаименование
|ИЗ
|   Справочник.ПодразделенияОрганизации.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
|ГДЕ
|   ДополнительныеРеквизиты.Ссылка = &ПодразделениеСсылка
|   И ДополнительныеРеквизиты.Свойство = &СвойствоПолноеНаименование";

Запрос.УстановитьПараметр("ПодразделениеСсылка", СсылкаНаПодразделение);
Запрос.УстановитьПараметр("СвойствоПолноеНаименование", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Полное наименование подразделения"));

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

Способ 4. Доработка через расширение конфигурации

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

В расширении мы можем использовать аннотацию &После для процедуры, которая заполняет структуру данных для печати. Например:


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

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

Способ 5. Технические нюансы хранения данных

Разберем подробнее, как именно хранятся дополнительные реквизиты. Это поможет нам правильно составлять запросы. Дополнительные реквизиты — это не обычные поля таблицы, а записи в подчиненной табличной части ДополнительныеРеквизиты.

Каждая запись содержит:

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

Выводы и рекомендации

Выбор способа зависит от ваших ресурсов и версии программы:

  1. Если нужно быстро и без программиста — используйте Шаблоны Word.
  2. Если ваша ERP обновлена до актуальных версий (2.5+) — проверьте наличие Настраиваемых печатных форм в разделе Зарплата.
  3. Для стабильной работы и соблюдения стандартов разработки используйте Расширения или Внешние печатные формы.

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

← На главную