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