При работе в программе 1С:Зарплата и Управление Персоналом (ЗУП) 3.1 часто возникает задача разграничения права подписи кадровых документов. Например, необходимо, чтобы во всех основных приказах в качестве руководителя автоматически подставлялся Генеральный директор, а в документе Отпуск без сохранения оплаты — Директор департамента персонала.
Рассмотрим, можно ли настроить такое поведение штатным функционалом системы и как правильно реализовать автоподстановку, если стандартных возможностей программы недостаточно.
Проанализируем базовый алгоритм подстановки подписей в 1С:ЗУП 3.1. В типовых конфигурациях (включая версии ПРОФ и КОРП) ответственные лица организации (Руководитель, Главный бухгалтер, Руководитель кадровой службы) задаются глобально для всей организации.
Эти данные хранятся в регистре сведений СведенияОбОтветственныхЛицах и настраиваются в меню Настройка — Организации — вкладка Учетная политика и другие настройки — Ответственные лица.
Штатный механизм автозаполнения не умеет при первичной генерации документа выбирать руководителя в зависимости от типа документа. При создании любого документа система обращается к единому регистру ответственных лиц организации и подставляет указанного там руководителя.
Разберем способы, которые позволяет использовать типовой функционал программы без внесения изменений в код:
Важное ограничение: данный выбор сохраняется в персональных настройках конкретного пользователя. Он не будет действовать для остальных сотрудников, создающих такие же документы в базе.
Если требуется сбросить ранее запомненные пользователем значения, необходимо очистить пользовательские настройки через раздел Администрирование — Настройки пользователей и прав — Очистка пользовательских настроек.
Если требуется жестко зафиксировать правила автоподстановки для всех пользователей базы без снятия конфигурации с поддержки, наилучшим решением будет использование расширения конфигурации.
Выясним, как устроена логика заполнения ответственных лиц на программном уровне. В 1С:ЗУП 3.1 автозаполнение подписей выполняется через вызовы функции ЗарплатаКадры.ОтветственныеЛицаОрганизации.
Рассмотрим по шагам алгоритм доработки через расширение:
ОтпускБезСохраненияОплаты) в событии ПриСозданииНаСервере или переопределим процедуру ЗаполнитьДанныеОрганизации.ФизическиеЛица / Сотрудники и Должности.Пример схемы кода для перехвата автозаполнения в форме документа:
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() Тогда
// Задаем нужного руководителя для данного документа
РуководительСсылка = Справочники.ФизическиеЛица.НайтиПоНаименованию("Иванова Анна Сергеевна");
ДолжностьСсылка = Справочники.Должности.НайтиПоНаименованию("Директор департамента персонала");
Объект.Руководитель = РуководительСсылка;
Объект.ДолжностьРуководителя = ДолжностьСсылка;
КонецЕсли;
КонецПроцедуры
Использование расширения позволяет полностью сохранить конфигурацию на поддержке, при этом обеспечив автоматическую подстановку нужных ответственных лиц в разрезе видов документов для всех пользователей системы.