Разработка внешних печатных форм (ВПФ) для конфигурации 1С:Зарплата и управление персоналом 3.1 — это стандартная, но ответственная задача. В отличие от простых печатных форм, трудовые договоры часто требуют сложного форматирования, склонения имен и должностей, а также автоматического подбора нужного шаблона в зависимости от условий кадрового приказа. В этой статье мы разберем, как правильно спроектировать и реализовать такие формы, используя современные стандарты платформы 1С.
Прежде всего, проанализируем техническую базу. Современная ЗУП 3.1 построена на базе Библиотеки стандартных подсистем (БСП). Это означает, что любая внешняя обработка должна содержать в модуле объекта экспортную функцию СведенияОВнешнейОбработке(). Рассмотрим структуру этой функции, которая позволит зарегистрировать печатную форму сразу для нескольких объектов: документов «Прием на работу», «Кадровый перевод» и справочника «Сотрудники».
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
// Указываем объекты, в которых будет доступна печать
ПараметрыРегистрации.Назначение.Добавить("Документ.ПриемНаРаботу");
ПараметрыРегистрации.Назначение.Добавить("Документ.КадровыйПеревод");
ПараметрыРегистрации.Назначение.Добавить("Справочник.Сотрудники");
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Трудовой договор и Доп. соглашение";
НоваяКоманда.Идентификатор = "ТрудовойДоговор";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
Выясним, какой формат макета лучше подходит для решения нашей задачи. Выбор зависит от требований заказчика:
{ФИО_Сотрудника} или {Оклад} для заполнения данных.Разберем, как правильно собирать данные для печати. В ЗУП 3.1 крайне не рекомендуется писать прямые запросы к регистрам сведений для получения ФИО директора или паспортных данных сотрудника. Для этого существуют штатные механизмы. Мы воспользуемся программным интерфейсом конфигурации, а именно модулем КадровыйУчет.
Для заполнения договора нам потребуются данные, которые возвращает функция КадровыйУчет.ДанныеДляПечатиТрудовогоДоговора. Проанализируем пример получения данных в процедуре Печать:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ДанныеДляПечати = КадровыйУчет.ДанныеДляПечатиТрудовогоДоговора(МассивОбъектов);
// Проходим по всем объектам (например, по списку выбранных сотрудников)
Для Каждого СведенияОДоговоре Из ДанныеДляПечати Цикл
// Здесь реализуем логику заполнения макета Word или MXL
// СведенияОДоговоре.СотрудникФИО
// СведенияОДоговоре.Оклад
// СведенияОДоговоре.ОрганизацияНаименование
КонецЦикла;
КонецПроцедуры
Ситуация усложняется, когда из одного документа (например, «Кадровый перевод») нужно печатать разные формы допсоглашений. Рассмотрим, как реализовать автоматический выбор макета. Нам необходимо проанализировать реквизиты документа:
ПринятНаРаботу — выводим основной текст договора.ИзменитьНачисления, но должность осталась прежней — формируем «Дополнительное соглашение об изменении оплаты труда».Важный момент: Для корректного склонения должностей и имен в родительном падеже («в лице Директора Иванова...») используйте функцию СклонениеПредставленийОбъектов.ПросклонятьПредставление. Это избавит вас от необходимости хранить падежи в справочниках.
Посмотрим на особенность печати из справочника. Поскольку в справочнике Сотрудники нет данных о конкретном приказе, нам нужно программно найти последний (актуальный) документ приема на работу или кадрового перевода. Для этого мы выполним запрос к регистру сведений КадроваяИсторияСотрудников, чтобы получить ссылку на регистратор, и уже на его основании будем формировать печатную форму. В качестве готового решения можно использовать внешнюю печатную форму трудового договора для формирования из карточки сотрудника и приказа о приеме.
Если мы выбрали путь использования ActiveDocument (Word), помните о следующих нюансах:
КомОбъект.Bookmarks для точечной вставки данных в закладки документа.Tables в объекте Word.Таким образом, разработка внешней печатной формы в ЗУП 3.1 — это не просто написание кода, а интеграция в существующую экосистему кадрового учета. Использование типовых функций 1С гарантирует, что ваша форма не «сломается» после очередного обновления конфигурации. При необходимости можно воспользоваться готовой печатной формой дополнительного соглашения к трудовому договору в Word для документов кадрового перевода.