Как отключить запоминание подписей в документах 1С:ЗУП 3.1 и вернуть заполнение по умолчанию

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

Многие пользователи 1С:Зарплата и управление персоналом 3.1 сталкиваются с особенностью работы программы: если один раз вручную изменить подписанта в документе (например, выбрать временно исполняющего обязанности вместо директора), система «запоминает» этот выбор. В последующих документах программа будет подставлять именно этого человека, игнорируя настройки ответственных лиц в карточке организации. Рассмотрим подробнее, почему это происходит и как вернуть стандартное поведение системы.

Почему 1С «запоминает» подписи?

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

Технически этот механизм реализован через ХранилищеСистемныхНастроек. Когда документ записывается, программа вызывает процедуры общего модуля ПодписиДокументов, которые сохраняют структуру выбранных лиц по ключу Общее/ПараметрыПодписей. При создании нового объекта система сначала заглядывает в это хранилище, и если находит там данные, отдает им приоритет перед регистром сведений ОтветственныеЛица.

Способ 1. Очистка настроек через интерфейс (без программирования)

Проанализируем самый простой способ решения проблемы, который доступен администратору системы без изменения программного кода. Если «неправильная» подпись уже закрепилась за пользователем, ее можно удалить вручную.

  1. Перейдем в раздел Администрирование — Обслуживание.
  2. Раскроем подраздел Управление настройками пользователей.
  3. Выберем пункт Настройки пользователей.
  4. В открывшемся окне выберем конкретного сотрудника, у которого возникла проблема.
  5. Перейдем на вкладку Прочие настройки.
  6. Найдем в списке объект, связанный с параметрами подписей (обычно это скрытые системные настройки).
  7. Нажмем кнопку Очистить.

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

Способ 2. Использование расширения для управления подписями

Выясним, как автоматизировать этот процесс, чтобы пользователям не приходилось постоянно чистить настройки. Наиболее корректный путь для программиста — использование механизма расширений. Нам необходимо вмешаться в работу общего модуля ПодписиДокументов.

Рассмотрим алгоритм действий. Нам нужно найти процедуру, отвечающую за заполнение подписей (например, ЗаполнитьПодписи). Мы можем использовать аннотацию &После или &Вместо, чтобы принудительно перезаписывать значения из настроек организации.

Пример логики, которую можно реализовать в расширении:


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

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

Способ 3. Сброс настроек при начале работы системы

Если мы хотим сохранить типовой механизм, но при этом желаем, чтобы каждый новый рабочий день (или сеанс) начинался с «чистого листа», можно очищать настройки в момент запуска программы. Для этого проанализируем событие ПриНачалеРаботыСистемы.

В модуле управляемого приложения или через расширение можно прописать программную очистку ключа настроек. Посмотрим на пример кода:


Процедура ПриНачалеРаботыСистемы()
    // Очистка настроек подписей для текущего пользователя
    КлючНастроек = "Общее/ПараметрыПодписей";
    ХранилищеСистемныхНастроек.Удалить(КлючНастроек, "", ИмяПользователя());
КонецПроцедуры

Важно учитывать, что метод ХранилищеСистемныхНастроек.Удалить работает на стороне сервера, поэтому вызов должен быть соответствующим образом инкапсулирован в серверный модуль.

Способ 4. Перехват события «ПередЗаписью»

Рассмотрим ситуацию, когда нам нужно программно контролировать подписи непосредственно перед сохранением документа. Мы можем создать подписку на событие ПередЗаписью для группы документов. Это позволит нам проверять, отличается ли подписант от желаемого (установленного в константах или регистре), и выводить предупреждение или автоматически заменять его.

Преимущества этого метода:

  1. Не требует изменения форм каждого отдельного документа.
  2. Легко обновляется, так как подписки на события — это штатный механизм расширения функционала.
  3. Позволяет гибко настроить условия: например, для «Табеля» разрешить запоминание, а для «Приказа о приеме» — запретить.

Резюме и рекомендации

Мы проанализировали механизм «запоминания» подписей в 1С:ЗУП 3.1 и выяснили, что он базируется на использовании ХранилищеСистемныхНастроек. Для решения проблемы «залипания» старых подписантов мы рекомендуем:

1. Для разового исправления: воспользоваться стандартной обработкой удаления настроек пользователей в разделе Администрирование.

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

Выбор метода зависит от политики безопасности вашей компании и требований бизнеса к гибкости подстановки ответственных лиц.

← На главную