Многие пользователи, переходящие в программу «1С:Зарплата и управление персоналом» (ЗУП) из «1С:Бухгалтерии предприятия» (БП 3.0), сталкиваются с неожиданной трудностью. В БП реализован удобный типовой механизм Справочники -> Шаблоны договоров, позволяющий загружать произвольные файлы, расставлять по тексту теги и распечатывать договоры с автоподстановкой реквизитов контрагента. Однако в 1С:ЗУП такой подсистемы нет. Разберем, как устроена печать договоров в кадровой программе и какими способами можно реализовать печать множества различных вариантов трудовых договоров из документа Прием на работу.
Выясним причину, почему в типовой 1С:ЗУП нельзя просто создать новую запись в справочнике. Программа ориентирована на регламентированный учет и кадровый документооборот, где логика печатных форм зашита в программный код. Штатно в системе предусмотрено три предопределенных варианта трудового договора:
Если организации требуется немного скорректировать формулировки одного из этих вариантов, можно воспользоваться типовым разделом Администрирование -> Печатные формы, отчеты и обработки -> Макеты печатных форм, найти строку Трудовой договор и перевести макет в режим Для просмотра и редактирования. Однако если на предприятии действует 5, 10 или более разновидностей договоров (для топ-менеджмента, рабочих специальностей, срочные, с особыми условиями труда, с ненормированным рабочим днем), этот способ не подходит, так как макеты строго фиксированы.
Наиболее универсальный и безопасный для обновлений способ — подключение внешних печатных форм через механизм БСП (Библиотеки стандартных подсистем). Проанализируем, как правильно организовать этот процесс.
Вместо создания множества разрозненных обработок для каждого договора удобнее объединить их в одну внешнюю печатную форму, добавив несколько команд печати. Каждая такая команда регистрируется в системе и появляется в подменю Печать документа Прием на работу отдельным пунктом.
Рассмотрим структуру экспортной функции СведенияОВнешнейОбработке() в модуле объекта обработки, которая регистрирует сразу несколько видов трудовых договоров:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.1.2.0");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Назначение.Добавить("Документ.ПриемНаРаботу");
// Регистрируем первый вариант договора
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Трудовой договор (Офисные сотрудники)'");
НоваяКоманда.Идентификатор = "ТрудовойДоговорОфис";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Ложь;
НоваяКоманда.Модификатор = "ПечатьВWord";
// Регистрируем второй вариант договора
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Трудовой договор (Производство)'");
НоваяКоманда.Идентификатор = "ТрудовойДоговорПроизводство";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Ложь;
НоваяКоманда.Модификатор = "ПечатьВWord";
Возврат ПараметрыРегистрации;
КонецФункции
Подключение выполняется в пользовательском режиме без снятия конфигурации с поддержки: перейдем в Администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчёты и обработки, нажмем Добавить из файла и выберем подготовленную обработку.
Разберем по шагам, как хранить и заполнять текст договоров. Внешняя обработка может содержать макеты двоичных данных с файлами формата .docx.
При реализации заполнения текстовых шаблонов важно учитывать платформенные особенности:
ЧтениеZipФайла, найти файл word/document.xml, заменить в нем пользовательские маркеры (например, [ФИО_Сотрудника], [Оклад], [Должность]) на значения из кадровых реквизитов и запаковать обратно с помощью ЗаписьZipФайла. Такой метод работает на стороне сервера, полностью кроссплатформенен и не требует установленного офисного пакета.Если список трудовых договоров слишком велик и засоряет меню кнопки Печать, используем другой подход: ВПФ с клиентской формой выбора. В функции СведенияОВнешнейОбработке регистрируется всего одна команда с типом ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы().
При вызове команды открывается диалоговое окно, где кадровик может:
Если требуется полностью воспроизвести функционал «1С:Бухгалтерии», чтобы кадровики и юристы могли самостоятельно загружать файлы договоров и настраивать правила подстановки без участия программиста, оптимальным выбором станет расширение конфигурации.
В расширение добавляется собственный справочник ШаблоныТрудовыхДоговоров, реквизит с типом ХранилищеЗначения для хранения самого файла, а также форма редактирования макета. Кнопка печати выводится в форму документа ПриемНаРаботу также через расширение. При этом типовая конфигурация 1С:ЗУП полностью остается на замке, что исключает любые сложности при последующих регулярных обновлениях релизов.
Проанализируем ситуации, когда логику договоров целесообразно вынести за рамки 1С:ЗУП: