Как программно получить должность и ФИО руководителя в 1С:ЗУП 3.1 после обновления?

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

При разработке или обновлении внешних печатных форм (например, трудовых договоров или дополнительных соглашений) в программе «1С:Зарплата и управление персоналом» (редакция 3.1) разработчики часто сталкиваются с неприятной ситуацией. Запрос, который раньше исправно возвращал должность и ФИО руководителя из регистра сведений СведенияОбОтветственныхЛицах, внезапно перестает работать. В макете печатной формы вместо привычного «Директор Смирнов А.П.» выводится пустое место.

Выясним причину этой проблемы и подробно разберем, как правильно получать данные ответственных лиц в актуальных версиях ЗУП 3.1, используя современные стандарты Библиотеки стандартных подсистем (БСП).

Почему старый запрос перестал работать?

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

Прямое обращение к таблицам регистра сведений СведенияОбОтветственныхЛицах через запрос теперь считается устаревшим подходом (deprecated). В современных версиях ЗУП 3.1 поддерживается история изменения ответственных лиц, возможность работы по доверенности, а также привязка разных подписантов к конкретным видам документов. Для корректной работы системы разработан специальный программный интерфейс (API), к которому мы и должны обращаться.

Рассмотрим по шагам основные способы решения этой задачи.

Способ 1. Использование общего модуля СведенияОбОтветственныхЛицах

Это самый надежный, гибкий и рекомендуемый способ получения ответственных лиц. Функция СведенияОбОтветственныхЛицах в одноименном общем модуле принимает на вход параметры организации, список нужных полей и дату, на которую эти сведения актуальны.

Допустим, нам необходимо получить ФИО руководителя и его должность для вывода в трудовом договоре. Напишем следующий код:


Организация = СсылкаНаОбъект.Организация; // Ваша организация
ДатаДоговора = СсылкаНаОбъект.Дата; // Дата, на которую запрашиваем данные

// Задаем список необходимых нам полей через запятую
ПоляОтветственных = "Руководитель,ДолжностьРуководителя,ДолжностьРуководителяСтрокой";

// Вызываем функцию общего модуля
ДанныеОтветственных = СведенияОбОтветственныхЛицах.СведенияОбОтветственныхЛицах(Организация, ПоляОтветственных, ДатаДоговора);

В результате выполнения этой функции мы получим структуру, содержащую заполненные свойства. Посмотрим, как извлечь эти значения для вывода на печать:


Если ДанныеОтветственных.Свойство("Руководитель") Тогда
    РуководительСсылка = ДанныеОтветственных.Руководитель; // Ссылка на справочник ФизическиеЛица
КонецЕсли;

Если ДанныеОтветственных.Свойство("ДолжностьРуководителяСтрокой") Тогда
    ДолжностьТекст = ДанныеОтветственных.ДолжностьРуководителяСтрокой; // Готовое текстовое представление должности
КонецЕсли;

Обратите внимание на важную деталь: запрашивая параметр ДолжностьРуководителяСтрокой вместо ДолжностьРуководителя, мы сразу получаем текстовое наименование должности, готовое к выводу в печатную форму. Это избавляет нас от необходимости обращаться к реквизиту Наименование ссылки справочника Должности.

Способ 2. Альтернативный метод через модуль регламентированной отчетности

Бывают ситуации, когда в печатной форме трудового договора требуется вывести не только сведения о подписанте, но и полные реквизиты самой организации: сокращенное или полное наименование, ИНН, КПП, ОГРН и юридический адрес. В таких случаях очень удобно использовать функции модуля регламентированной отчетности.

Разберем пример получения комплексных сведений об организации:


// Формируем список необходимых показателей
Показатели = СтрРазделить("НаимЮЛСокр,НаимЮЛПол,ФИОРук,ДолжнРук", ",");

// Запрашиваем данные у специализированной функции
СведенияОрганизации = РегламентированнаяОтчетностьПереопределяемый.ПолучитьСведенияОбОрганизации(Организация, ДатаДоговора, Показатели);

// Извлекаем полученные данные
ПолноеНаименование = СведенияОрганизации.НаимЮЛПол;
ИмяРуководителя    = СведенияОрганизации.ФИОРук; // Вернет ФИО руководителя строкой
ДолжностьРук       = СведенияОрганизации.ДолжнРук; // Вернет должность руководителя строкой

Этот метод хорош тем, что он автоматически обрабатывает периодические реквизиты организации и возвращает уже подготовленные строковые представления данных, которые можно без дополнительной конвертации передавать в параметры макета.

Типичные ошибки при работе с типами данных ответственных лиц

Разберем частую ошибку начинающих программистов 1С, из-за которой возвращаемая структура может содержать пустые значения или приводить к аварийному завершению работы программы. Речь идет о несовпадении типов данных при заполнении параметров макета.

  1. Не путайте Физические лица и Сотрудников. Поле Руководитель возвращает ссылку на справочник ФизическиеЛица, а не на справочник Сотрудники. Если вы попытаетесь применить к нему методы, предназначенные для работы с кадровыми сотрудниками, система вернет ошибку.
  2. Правильно форматируйте ФИО. Напрямую выводить объект ФизическиеЛица в макет не рекомендуется, так как платформа выведет полное имя в формате «Фамилия Имя Отчество» в именительном падеже. В преамбуле трудового договора чаще всего требуется формат с инициалами либо в родительном падеже («в лице директора Иванова И.И.»). Для форматирования используйте функции специализированных общих модулей:
    • ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(ФизЛицо) — вернет строку вида «Иванов И.И.»;
    • ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ФизЛицо) — сформирует представление в формате «И.И. Иванов».
  3. Справочник Должности vs Строка. Поле ДолжностьРуководителя возвращает ссылку на справочник Должности. Попытка сравнить его со строкой напрямую (например, Если Должность = "Директор") не увенчается успехом. Используйте получение наименования через точку или запрашивайте строковый аналог ДолжностьРуководителяСтрокой, как было показано в Способе 1.

Учет оснований полномочий (работы по доверенности)

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

Для того чтобы автоматически вывести формулировку основания подписи (например, «действующего на основании доверенности № 45-д от 12.12.2025 г.»), мы можем расширить список запрашиваемых полей в первом способе:


ПоляОтветственных = "Руководитель,ДолжностьРуководителяСтрокой,ОснованиеПодписиРуководителя";
ДанныеОтветственных = СведенияОбОтветственныхЛицах.SведенияОбОтветственныхЛицах(Организация, ПоляОтветственных, ДатаДоговора);

Если ДанныеОтветственных.Свойство("ОснованиеПодписиРуководителя") Тогда
    ОснованиеПодписи = ДанныеОтветственных.ОснованиеПодписиРуководителя; // Вернет текст доверенности или Устава
КонецЕсли;

Используя этот механизм, вы гарантируете, что ваша печатная форма будет динамически подстраиваться под кадровые изменения в организации. Если подписывать договоры временно уполномочен заместитель директора по доверенности, система автоматически подставит в преамбулу договора его ФИО, должность и реквизиты доверенности без необходимости вносить правки в программный код.

← На главную