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

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

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

Стандартизация разработки через БСП

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


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

Выбор формата макета: MXL или Microsoft Word

Выясним, какой формат макета лучше подходит для решения нашей задачи. Выбор зависит от требований заказчика:

  1. Табличный документ (MXL): Это стандартный формат 1С. Мы выберем его, если важна высокая скорость формирования и независимость от установленного стороннего ПО (MS Office). Однако правка текста договора в MXL силами кадровиков будет затруднена.
  2. Макет Word (DOCX): Идеален для трудовых договоров, где текст может занимать несколько страниц. Мы рекомендуем использовать именно этот формат, так как он позволяет кадровой службе самостоятельно корректировать формулировки. В коде 1С мы будем использовать теги вида {ФИО_Сотрудника} или {Оклад} для заполнения данных.

Получение данных через API ЗУП 3.1

Разберем, как правильно собирать данные для печати. В ЗУП 3.1 крайне не рекомендуется писать прямые запросы к регистрам сведений для получения ФИО директора или паспортных данных сотрудника. Для этого существуют штатные механизмы. Мы воспользуемся программным интерфейсом конфигурации, а именно модулем КадровыйУчет.

Для заполнения договора нам потребуются данные, которые возвращает функция КадровыйУчет.ДанныеДляПечатиТрудовогоДоговора. Проанализируем пример получения данных в процедуре Печать:


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ДанныеДляПечати = КадровыйУчет.ДанныеДляПечатиТрудовогоДоговора(МассивОбъектов);
    
    // Проходим по всем объектам (например, по списку выбранных сотрудников)
    Для Каждого СведенияОДоговоре Из ДанныеДляПечати Цикл
        // Здесь реализуем логику заполнения макета Word или MXL
        // СведенияОДоговоре.СотрудникФИО
        // СведенияОДоговоре.Оклад
        // СведенияОДоговоре.ОрганизацияНаименование
    КонецЦикла;
    
КонецПроцедуры

Автоматическое определение типа печатной формы

Ситуация усложняется, когда из одного документа (например, «Кадровый перевод») нужно печатать разные формы допсоглашений. Рассмотрим, как реализовать автоматический выбор макета. Нам необходимо проанализировать реквизиты документа:

Важный момент: Для корректного склонения должностей и имен в родительном падеже («в лице Директора Иванова...») используйте функцию СклонениеПредставленийОбъектов.ПросклонятьПредставление. Это избавит вас от необходимости хранить падежи в справочниках.

Реализация печати из справочника «Сотрудники»

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

Практические советы по работе с макетами Word

Если мы выбрали путь использования ActiveDocument (Word), помните о следующих нюансах:

  1. Используйте метод КомОбъект.Bookmarks для точечной вставки данных в закладки документа.
  2. Если нужно заполнить таблицу (например, список надбавок), используйте коллекцию Tables в объекте Word.
  3. Обязательно закрывайте процесс Word после формирования печатной формы, чтобы не «подвешивать» память сервера.

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

← На главную