Как доработать печатные формы в 1С:ЗГУ 3.0, не снимая конфигурацию с поддержки?

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

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

Метод 1. Редактирование макетов через пользовательский интерфейс (БСП)

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

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

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

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

В ЗГУ 3.0 формирование печатных форм реализовано через модули менеджера объектов. Процесс происходит в несколько этапов: сбор данных во временные таблицы, выполнение запроса и вывод в макет. Чтобы внедрить свои параметры, мы можем перехватить этот процесс в расширении.

Рассмотрим по шагам, как добавить свой параметр через расширение:

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

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


&Вместо("ТекстЗапросаДляПечатиПриказаОПриеме")
Функция Мой_ТекстЗапросаДляПечатиПриказаОПриеме()
    ТекстЗапроса = ПродолжитьВызов();
    // Добавляем выборку нашего нового поля из таблицы документа
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, 
        "ВЫБРАТЬ", 
        "ВЫБРАТЬ ДокументИсточник.МойДополнительныйРеквизит КАК МойПараметр,");
    Возврат ТекстЗапроса;
КонецФункции

После того как данные попали в выборку, они автоматически станут доступны в структуре, которую универсальный механизм печати передает в макет. Теперь нам остается только добавить в пользовательский макет (из Метода 1) параметр с именем МойПараметр.

Метод 3. Внешние печатные формы (ВПФ)

Многие разработчики считают этот метод трудоемким из-за того, что в ЗГУ 3.0 логика печати "размазана" по множеству общих модулей. Однако у ВПФ есть неоспоримое преимущество: она полностью автономна и не влияет на стабильность основной конфигурации при обновлениях.

Выясним причину сложности: в ЗГУ 3.0 кадровые приказы формируются с использованием Системы компоновки данных (СКД). Для создания качественной ВПФ рекомендуется:

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

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


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "МояПечатнаяФорма");
    Если ПечатнаяФорма <> Неопределено Тогда
        // Вызываем свою функцию сбора данных
        ДанныеДляПечати = СформироватьДанныеДляМоейФормы(МассивОбъектов);
        
        // Выводим в макет
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
            КоллекцияПечатныхФорм,
            "МояПечатнаяФорма",
            "Приказ с доработками",
            СформироватьТабличныйДокумент(ДанныеДляПечати, ОбъектыПечати));
    КонецЕсли;

КонецПроцедуры

Метод 4. Работа с Word-макетами и подстановками

Для государственных учреждений критически важно формирование трудовых договоров. В ЗГУ 3.0 для этого используется механизм «Шаблоны документов». Это самый гибкий инструмент, не требующий расширений.

Разберем алгоритм действий:

  1. Откроем Настройки — Шаблоны документов.
  2. В справочнике можно создать новый шаблон на базе Microsoft Word.
  3. В правой части экрана доступен список доступных полей (реквизитов). Если нужного поля нет, можно использовать «Дополнительные реквизиты».
  4. Программа позволяет настраивать склонения (ФИО в родительном падеже, должность и т.д.) без написания кода, используя встроенные функции подстановок.

Преимущество: Пользователь сам может редактировать текст договора в Word, а программа будет автоматически подставлять значения параметров при печати из документа «Прием на работу».

Метод 5. Использование дополнительных реквизитов

Выясним, как упростить задачу добавления новых данных. В 1С есть механизм «Дополнительные реквизиты и сведения». Если вам нужно добавить в приказ, например, «Номер личного дела», не обязательно создавать расширение для добавления поля в таблицу БД.

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

Резюме: какой путь выбрать?

Проанализировав все варианты, можно сделать следующие выводы:

Рассмотренные подходы позволяют гибко адаптировать 1С:ЗГУ 3.0 под требования любой государственной организации, сохраняя при этом возможность легкого обновления программы.

← На главную