Как создать внешнюю печатную форму «Извещения о приеме или увольнении» со штампом организации в 1С:ЗУП 3.1

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

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

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

Где найти исходный код извещения в конфигураторе

Для начала выясним, как программа формирует этот отчет. В отличие от простых печатных форм документов (например, приказа о приеме (поможет автоматическое формирование допсоглашений для 1С:ЗУП)), «Извещение о приеме или увольнении» в 1С:ЗУП 3.1 реализовано как вариант отчета. Проанализируем структуру конфигурации и найдем нужный объект.

Разберем по шагам поиск объекта:

  1. Откроем Конфигуратор и перейдем в ветку Отчеты.
  2. Найдем отчет с именем ВоинскийУчетОбщий. Это универсальный отчет, который содержит множество вариантов печатных форм для воинского учета — есть форма воинского учета Т2-ВУР для ЗУП.
  3. Развернем список макетов этого отчета. Нам потребуются макеты, начинающиеся с ПФ_MXL_ИзвещениеОПриемеУвольнении.

Важно: Обратите внимание на актуальность форм. В связи с изменениями законодательства (Постановление Правительства РФ от 25.07.2023 № 1211), в последних версиях ЗУП 3.1 (начиная с 3.1.27) используется макет ПФ_MXL_ИзвещениеОПриемеУвольнении2023. Если вы возьмете старый макет, военкомат может не принять документ.

Механизм формирования данных

Проанализируем программную логику. Вся основная работа по заполнению параметров макета происходит в модуле объекта отчета ВоинскийУчетОбщий. Основная процедура, которую нам нужно изучить — ВывестиМакетИзвещениеОПриемеУвольнении2023.

Рассмотрим фрагмент кода, отвечающий за вывод макета:


Процедура ВывестиМакетИзвещениеОПриемеУвольнении2023(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета) Экспорт
    // Получение макета из ресурсов отчета
    Макет = ПолучитьМакет("ПФ_MXL_ИзвещениеОПриемеУвольнении2023");
    
    // Формирование областей макета
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    // Здесь происходит заполнение параметров области...
    
    ДокументРезультат.Вывести(ОбластьЗаголовок);
КонецПроцедуры

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

Способ 1: Реализация через расширение конфигурации

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

Выполним следующие действия:

  1. Создадим новое расширение (через меню Конфигурация — Расширения конфигурации).
  2. Добавим в расширение отчет ВоинскийУчетОбщий и его макет ПФ_MXL_ИзвещениеОПриемеУвольнении2023.
  3. В макете расширения выделим область в левом верхнем углу и добавим туда параметр, например, ТекстШтампа, или просто впишем статический текст.
  4. В модуле объекта отчета в расширении создадим процедуру с аннотацией &Вместо для метода ВывестиМакетИзвещениеОПриемеУвольнении2023.

Посмотрим на пример кода в расширении, который программно заполняет штамп данными организации:


&Вместо("ВывестиМакетИзвещениеОПриемеУвольнении2023")
Процедура Расш1_ВывестиМакетИзвещениеОПриемеУвольнении2023(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета)
    // Получаем наш измененный макет из расширения
    Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_ИзвещениеОПриемеУвольнении2023");
    
    // Получаем область заголовка, где мы добавили параметр ТекстШтампа
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    
    // Получаем данные организации из настроек отчета
    Организация = НастройкиОтчета.ПараметрыДанных.Элементы.Найти("Организация").Значение;
    
    // Формируем текст штампа
    СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОбОрганизации(Организация, ДатаОтчета);
    ТекстШтампа = СведенияОбОрганизации.НаименованиеПолное + Символы.ПС + 
                  "ИНН: " + СведенияОбОрганизации.ИНН + " КПП: " + СведенияОбОрганизации.КПП + Символы.ПС +
                  "Адрес: " + СведенияОбОрганизации.ЮридическийАдрес;
    
    ОбластьЗаголовок.Параметры.ТекстШтампа = ТекстШтампа;
    
    // Вызываем стандартную логику заполнения (или копируем ее из оригинала)
    // ... заполнение остальных параметров ...
    
    ДокументРезультат.Вывести(ОбластьЗаголовок);
КонецПроцедуры

Способ 2: Создание внешнего отчета (.erf)

Если вы не хотите использовать расширения, можно создать внешний отчет. Это позволит пользователям запускать его через меню Файл — Открыть или через механизм Дополнительные отчеты и обработки.

Разберем алгоритм создания:

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

Особенности настройки «Углового штампа»

Выясним, какие именно данные следует выводить в штампе, чтобы удовлетворить требованиям военкоматов. Обычно штамп содержит:

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

Нюансы работы с данными военкоматов

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

В типовом решении за это отвечает функция:

ВоинскийУчет.ЗаполнитьДанныеДляИзвещенияОПриемеУвольнении(ПараметрыЗаполнения);

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

Заключение

Мы рассмотрели, как найти и изменить форму «Извещения о приеме или увольнении» в 1С:ЗУП 3.1. Наиболее эффективным методом является использование расширения конфигурации, так как оно позволяет точечно изменить макет 2023 года и добавить программную логику заполнения штампа, сохраняя при этом возможность легкого обновления программы в будущем. Помните, что штамп — это не просто украшение, а требование делопроизводства, поэтому автоматизация его заполнения существенно сэкономит время кадровой службе. Для этой задачи есть готовая печатная форма трудового договора для 1С:ЗУП.

← На главную