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