Как добавить свои шаблоны трудовых договоров в 1С:ЗУП?

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

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

Архитектурные особенности и ограничения типовой конфигурации

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

  1. Стандартный трудовой договор;
  2. Трудовой договор для дистанционных работников;
  3. Трудовой договор микропредприятий (по типовой форме, утвержденной Правительством РФ).

Если организации требуется немного скорректировать формулировки одного из этих вариантов, можно воспользоваться типовым разделом Администрирование -> Печатные формы, отчеты и обработки -> Макеты печатных форм, найти строку Трудовой договор и перевести макет в режим Для просмотра и редактирования. Однако если на предприятии действует 5, 10 или более разновидностей договоров (для топ-менеджмента, рабочих специальностей, срочные, с особыми условиями труда, с ненормированным рабочим днем), этот способ не подходит, так как макеты строго фиксированы.

Основное решение: разработка внешних печатных форм (ВПФ)

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

Вместо создания множества разрозненных обработок для каждого договора удобнее объединить их в одну внешнюю печатную форму, добавив несколько команд печати. Каждая такая команда регистрируется в системе и появляется в подменю Печать документа Прием на работу отдельным пунктом.

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


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.1.2.0");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.Назначение.Добавить("Документ.ПриемНаРаботу");
    
    // Регистрируем первый вариант договора
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Трудовой договор (Офисные сотрудники)'");
    НоваяКоманда.Идентификатор = "ТрудовойДоговорОфис";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    НоваяКоманда.ПоказыватьОповещение = Ложь;
    НоваяКоманда.Модификатор = "ПечатьВWord";
    
    // Регистрируем второй вариант договора
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Трудовой договор (Производство)'");
    НоваяКоманда.Идентификатор = "ТрудовойДоговорПроизводство";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    НоваяКоманда.ПоказыватьОповещение = Ложь;
    НоваяКоманда.Модификатор = "ПечатьВWord";
    
    Возврат ПараметрыРегистрации;

КонецФункции

Подключение выполняется в пользовательском режиме без снятия конфигурации с поддержки: перейдем в Администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчёты и обработки, нажмем Добавить из файла и выберем подготовленную обработку.

Особенности формирования договоров в формате Microsoft Word (DOCX)

Разберем по шагам, как хранить и заполнять текст договоров. Внешняя обработка может содержать макеты двоичных данных с файлами формата .docx.

При реализации заполнения текстовых шаблонов важно учитывать платформенные особенности:

  1. Работа через COM-соединение (Word.Application): Этот метод прост в реализации, однако он жестко привязан к операционной системе Windows и требует обязательной установки пакета Microsoft Office на сервере или на рабочем месте пользователя. В веб-клиенте или при работе сервера 1С на Linux этот метод вызовет критическую ошибку.
  2. Работа с файлом DOCX как с ZIP-архивом: Современный документ Word представляет собой набор сжатых XML-файлов. Платформа 1С позволяет программно распаковать архив средствами объекта ЧтениеZipФайла, найти файл word/document.xml, заменить в нем пользовательские маркеры (например, [ФИО_Сотрудника], [Оклад], [Должность]) на значения из кадровых реквизитов и запаковать обратно с помощью ЗаписьZipФайла. Такой метод работает на стороне сервера, полностью кроссплатформенен и не требует установленного офисного пакета.

Вариант с интерактивной формой выбора

Если список трудовых договоров слишком велик и засоряет меню кнопки Печать, используем другой подход: ВПФ с клиентской формой выбора. В функции СведенияОВнешнейОбработке регистрируется всего одна команда с типом ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы().

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

  1. Выбрать необходимый вид договора из списка;
  2. Указать дополнительные параметры, которых нет в документе (например, продолжительность испытательного срока, дату передачи рабочего места или индивидуальные условия);
  3. Нажать кнопку формирования и получить готовый документ для печати или сохранения.

Создание собственного справочника через расширение конфигурации (CFE)

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

В расширение добавляется собственный справочник ШаблоныТрудовыхДоговоров, реквизит с типом ХранилищеЗначения для хранения самого файла, а также форма редактирования макета. Кнопка печати выводится в форму документа ПриемНаРаботу также через расширение. При этом типовая конфигурация 1С:ЗУП полностью остается на замке, что исключает любые сложности при последующих регулярных обновлениях релизов.

Альтернативные корпоративные решения

Проанализируем ситуации, когда логику договоров целесообразно вынести за рамки 1С:ЗУП:

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