При работе в 1С:Зарплата и управление персоналом 3.1 часто возникает задача кастомизации стандартного трудового договора. Юридические отделы компаний регулярно вносят правки в формулировки, добавляют новые пункты или требуют особого оформления, которое отсутствует в типовой поставке. Перед разработчиком или администратором системы встает вопрос: как реализовать эти требования максимально корректно, чтобы не затруднить последующие обновления программы и обеспечить удобство работы пользователей.
В этой статье мы подробно разберем несколько способов решения данной задачи: от самого простого изменения макета без программирования до создания полноценной внешней печатной формы и использования шаблонов Microsoft Word.
Рассмотрим самый быстрый вариант, который не требует навыков программирования и изменения конфигурации. В системе 1С:ЗУП 3.1 существует встроенный механизм редактирования макетов.
Проанализируем шаги, которые необходимо выполнить:
ТрудовойДоговор (обычно он привязан к документу Прием на работу или Трудовой договор).Важный нюанс: этот способ идеально подходит, если вам нужно только изменить формулировки или передвинуть существующие показатели (например, [ФИОСотрудника] или [Оклад]). Однако, как было отмечено в обсуждении, если вам потребуются данные, которых изначально нет в стандартном наборе параметров макета, этот метод станет ограничением. В таком случае стоит рассмотреть программные методы.
Если требования бизнеса выходят за рамки простого редактирования текста, наиболее правильным подходом будет использование механизма внешних обработок. Это позволит сохранить конфигурацию типовой и реализовать любую логику сбора данных.
Разберем программную реализацию. Основное преимущество здесь заключается в использовании мощного программного интерфейса 1С:ЗУП. Посмотрим на пример функции печати, которая обращается к специализированному модулю кадрового учета:
Функция ПечатьТрудовогоДоговора(МассивОбъектов, ОбъектыПечати, ПараметрыВывода)
Макет = ПолучитьМакет("ПФ_MXL_МойТрудовойДоговор"); // Загружаем наш кастомный макет
ДокументРезультат = Новый ТабличныйДокумент;
ДокументРезультат.КлючПараметровПечати = "ПараметрыПечати_ТрудовойДоговор_УникальныйИдентификатор";
// Ключевой момент: получение данных с помощью типовой функции
ДанныеДоговоров = КадровыйУчет.ДанныеТрудовыхДоговоров(МассивОбъектов, Ложь, Ложь);
Для каждого ДанныеДоговора Из ДанныеДоговоров Цикл
// Настройка параметров отправки по почте (если нужно)
Если МассивОбъектов.Количество() = 1 И ЗначениеЗаполнено(ДанныеДоговора.EMail) Тогда
ПараметрыВывода.ПараметрыОтправки.Получатель = ДанныеДоговора.EMail;
ПараметрыВывода.ПараметрыОтправки.Тема = "Трудовой договор №" + ДанныеДоговора.ТрудовойДоговорНомер;
КонецЕсли;
НомерСтрокиНачало = ДокументРезультат.ВысотаТаблицы + 1;
Если НомерСтрокиНачало > 1 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ВыводимаяОбласть = Макет.ПолучитьОбласть("ОблДокумент");
ВыводимаяОбласть.Параметры.Заполнить(ДанныеДоговора);
ДокументРезультат.Вывести(ВыводимаяОбласть);
// Фиксация области для возможности печати отдельных страниц из превью
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ДокументРезультат, НомерСтрокиНачало, ОбъектыПечати, ДанныеДоговора.Ссылка);
КонецЦикла;
Возврат ДокументРезультат;
КонецФункции
Выясним, почему мы используем именно КадровыйУчет.ДанныеТрудовыхДоговоров. Эта функция является "золотым стандартом" в ЗУП 3.1. Она автоматически собирает сведения о сотруднике, организации, подразделении, графике работы и условиях оплаты труда. Более того, она учитывает склонения ФИО и должностей, что критически важно для юридически значимого документа.
Многие кадровики предпочитают работать с документами Word, так как в них легче вносить разовые правки. В 1С:ЗУП 3.1 есть штатная возможность использовать такие файлы в качестве макетов.
Проанализируем ситуацию: в табличном документе (MXL) сложно реализовать перенос текста по строкам при больших объемах абзацев, тогда как в Word это происходит автоматически. Чтобы использовать Word-шаблон, при создании макета в конфигураторе или в пользовательском режиме (как в способе 1) следует выбрать тип макета Документ Microsoft Word.
В тексте договора вы расставляете теги в фигурных скобках, например: {ФИОСотрудника}, {ДатаДоговора}, {Оклад}. При печати программа найдет эти теги и заменит их на реальные данные. Это позволяет юристу самостоятельно редактировать шаблон без привлечения программиста, просто открыв файл Word.
Бывают случаи, когда даже функция ДанныеТрудовыхДоговоров не возвращает нужных вам специфических данных (например, информацию о ДМС или особых условиях релокации, хранящихся в дополнительных реквизитах). В этом случае мы рекомендуем использовать Расширения.
Разберем по шагам, как это работает:
КадровыйУчет (или создаем свой).&После или &Вместо для процедуры подготовки данных для печати.ДанныеДоговора своими полями, выполнив запрос к нужным регистрам или справочникам.Этот метод считается более современным и "чистым", чем классические внешние печатные формы, так как он позволяет интегрироваться в типовой механизм печати, сохраняя при этом все возможности по обновлению системы.
Рассмотрим несколько неочевидных моментов, которые помогут сделать ваши печатные формы профессиональнее:
1. Склонение ответственных лиц. Часто договор начинается с фразы "в лице [ДолжностьРуководителя] [ФИОРуководителя]". Если в макет данные попадут в именительном падеже, это будет ошибкой. Используйте программный интерфейс СклонениеПредставленийОбъектов для получения ФИО в родительном падеже.
2. Использование дополнительных реквизитов. Если вам нужно выводить в договор данные, для которых в 1С нет штатных полей, не спешите менять структуру метаданных. Включите Дополнительные реквизиты и сведения. Их можно легко "вытащить" в печатную форму программно, обратившись к свойству ДополнительныеРеквизиты объекта.
3. Проверка на документ-основание. Помните, что в ЗУП 3.1 трудовой договор может печататься как из документа Прием на работу, так и из специализированного документа Трудовой договор. Убедитесь, что ваша внешняя печатная форма зарегистрирована для обоих типов документов, если компания использует их оба.
Подводя итог, выбор метода зависит от глубины необходимых изменений. Для простых правок текста используйте пользовательские макеты. Для серьезной кастомизации с добавлением новых данных — внешние печатные формы или расширения с использованием кода из типовых модулей кадрового учета.