Как добавить ФИО исполнителя в печатную форму приказа о приеме на работу в 1С:ЗКГУ

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

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

Анализируем проблему: почему код «размазан» по модулям

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

  1. Разделение ответственности: Один модуль отвечает за сбор данных, другой — за формирование макета, третий — за вывод на экран.
  2. Общие модули: Основная часть логики кадровых документов вынесена в специализированные общие модули с префиксом БЗК (Базовые Зарплата и Кадры).
  3. Переиспользование кода: Процедуры формирования данных для приказа Т-1 могут использоваться одновременно для одиночного приема, списочного приема и других связанных документов.

Давайте вместе разберем пошаговый алгоритм, который поможет нам найти «точку входа».

Шаг 1. Поиск точки входа через модуль менеджера

Первым делом проанализируем модуль менеджера документа ПриемНаРаботу. Именно здесь регистрируются команды печати. Нам необходимо найти процедуру ДобавитьКомандыПечати. В ней будет указано, какой именно менеджер печати или общий модуль вызывается при нажатии кнопки «Печать».

Обычно вызов выглядит следующим образом:


// В модуле менеджера документа
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    // Здесь регистрируется команда Т-1
    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.МенеджерПечати = "ОбщийМодуль.УправлениеПечатьюБЗК";
    КомандаПечати.Идентификатор = "ПФ_MXL_ПриказОПриеме";
    ...
КонецПроцедуры

Проанализировав этот участок, мы выясним, что основная работа происходит в общем модуле, например, УправлениеПечатьюБЗК или КадровыйУчет.

Шаг 2. Использование замера производительности для поиска кода

Если глобальный поиск по названию макета ПФ_MXL_ПриказОПриеме выдает слишком много результатов, воспользуемся проверенным инструментом разработчика — Замером производительности. Рассмотрим, как это сделать:

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

В открывшемся списке процедур отсортируйте их по количеству вызовов или времени выполнения. Ищите функции в общих модулях, названия которых содержат СформироватьПечатныеФормы или ПечатьПриказаОПриеме. Это самый быстрый способ увидеть реальный путь прохождения алгоритма.

Шаг 3. Локализация процедуры заполнения параметров

Как правило, в ЗКГУ за формирование данных отвечает процедура ЗаполнитьПараметрыПриказаОПриеме (или аналогичная). В этой процедуре система формирует структуру или таблицу значений, которая затем передается в макет. Наша задача — найти место, где заполняются ДанныеПечати.

Типовой алгоритм сбора данных часто выглядит так:


// Примерный алгоритм сбора данных
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ... ИЗ Документ.ПриемНаРаботу КАК ПриемНаРаботу ...";
// Нам нужно добавить сюда выборку нашего реквизита Исполнитель
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

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

Шаг 4. Внедрение изменений через расширение

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


&После("СформироватьКоллекциюПечатныхФормПриемаНаРаботу")
Процедура Расш_СформироватьКоллекциюПечатныхФормПриемаНаРаботу(ПараметрыПечати, КоллекцияПечатныхФорм)
    // Находим нужную печатную форму в коллекции
    ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПФ_MXL_ПриказОПриеме");
    Если ПечатнаяФорма <> Неопределено Тогда
        // Здесь мы можем дозаполнить параметры макета, 
        // которые не были заполнены в типовом коде.
        // Например, найти ФИО исполнителя по ссылке на документ
    КонецЕсли;
КонецПроцедуры

Нормативные требования к полю «Исполнитель»

Зачем вообще это нужно? Согласно ГОСТ Р 7.0.97-2016, отметка об исполнителе является важным реквизитом управленческой документации. Она должна включать:

Согласно стандарту, эта информация располагается в левом нижнем углу последнего листа документа. Шрифт при этом может быть на 1-2 пункта меньше основного текста приказа.

Альтернативный метод: Пользовательские макеты

Если вам не требуется сложная логика (например, исполнитель всегда один и тот же для определенного филиала), можно обойтись без программирования модулей:

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

Однако помните: чтобы параметр ФИОИсполнителя заполнился автоматически, он все равно должен быть определен в коде формирования данных, который мы искали выше.

Резюме

Для добавления исполнителя в приказ Т-1 в ЗКГУ:

  1. Используйте замер производительности, чтобы найти конкретный общий модуль (часто это УправлениеПечатьюБЗК).
  2. Найдите запрос, который собирает данные для структуры ДанныеПечати.
  3. Используйте расширение конфигурации для добавления своего параметра в структуру печати.
  4. Не забудьте обновить сам табличный документ (макет), добавив в него соответствующее поле в левом нижнем углу.

Такой подход позволит вам сохранить конфигурацию на поддержке и корректно выполнить требования руководства и ГОСТа.

← На главную