Как отключить заполнение реквизитов документов по статистике для всех пользователей в 1С:КА и ERP?

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

В типовых решениях «1С:Комплексная автоматизация 2» и «1С:ERP Управление предприятием 2» реализован механизм автоматической подстановки реквизитов документов на основе накопленной статистики действий пользователя. Однако на практике часто возникает ситуация, когда такой алгоритм начинает мешать: подставляются не те расчетные счета, организации или ответственные лица, что приводит к регулярным ошибкам при оформлении первичных документов.

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

Выясним причину поведения системы

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

Посмотрим на пример типового кода, который отвечает за инициализацию флага:


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

Проанализируем приведенный фрагмент. Если в системном хранилище настроек пользователя запись отсутствует (метод возвращает значение Неопределено), конфигурация принудительно устанавливает флаг Истина и немедленно записывает его в ХранилищеОбщихНастроек. Таким образом, для любого нового пользователя функционал оказывается включенным по умолчанию.

Способ 1. Отключение вручную и копирование настроек через интерфейс

Если пользователей в базе немного, можно воспользоваться штатным пользовательским интерфейсом.

  1. Перейдем в раздел НСИ и администрирование → Сервис → Персональные настройки.
  2. Найдем пункт Заполнение реквизитов документов по статистике и снимем соответствующий флажок.
  3. Для тиражирования этого параметра на других сотрудников откроем форму Администрирование → Настройки пользователей и прав → Копирование настроек.
  4. Выберем исходного пользователя и скопируем нужный блок параметров другим учетным записям.

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

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

Рассмотрим более практичный и быстрый вариант. Платформа 1С позволяет администратору модифицировать системные настройки других пользователей, не выполняя вход под их логинами. Для этого воспользуемся пятым параметром метода ХранилищеОбщихНастроек.Сохранить, в котором передается имя пользователя информационной базы.

Создадим внешнюю обработку и выполним следующий код:


Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
    ХранилищеОбщихНастроек.Сохранить(
        "НастройкиРаботыСДокументами",
        "ЗаполнятьРеквизитыДокументовПоСтатистике",
        Ложь,
        ,
        ПользовательИБ.Имя
    );
КонецЦикла;

Такой скрипт за один проход обходит список пользователей и жестко записывает значение Ложь в ключ ЗаполнятьРеквизитыДокументовПоСтатистике объекта НастройкиРаботыСДокументами. Теперь условие проверки перестанет возвращать Неопределено, и механизм статистики будет деактивирован.

Способ 3. Автоматизация для новых учетных записей

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

  1. Подписка на событие или переопределяемый модуль: В типовой подсистеме БСП можно использовать процедуру ПриСозданииПользователя общего модуля ПользователиПереопределяемый, либо настроить подписку на событие ПриЗаписи справочника Пользователи. При сохранении нового элемента вызываем запись значения Ложь в ХранилищеОбщихНастроек для создаваемого пользователя.
  2. Регламентное задание: Настроим фоновое задание, которое запускается по расписанию (например, ночью или раз в час), проверяет всех пользователей информационной базы и при отсутствии явной настройки выставляет значение Ложь. Это исключит влияние человеческого фактора при заведении новых сотрудников.

Способ 4. Переопределение логики через расширение конфигурации

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

Важное предостережение: не следует просто ставить заглушку вида Возврат Новый Структура; в процедуры ЗаполнитьРеквизитыОбъекта и ЗаполнитьПодчиненныеРеквизитыОбъекта общего модуля ЗаполнениеОбъектовПоСтатистике. Эти методы в типовом решении могут инициализировать контекст документа и служебные структуры данных. Их некорректное прерывание способно вызвать скрытые ошибки при проведении или валидации форм.

Безопасный подход к расширению заключается в следующем:

  1. Подключим расширение конфигурации без снятия основной конфигурации с поддержки.
  2. Найдем метод чтения настроек использования статистики в общем модуле, управляющем работой с документами.
  3. Перехватим функцию с помощью директивы &Вместо, принудительно возвращая Ложь.

В этом случае платформа корректно пропустит блок сбора и применения статистики штатными средствами, не нарушая связности данных и не ломая цепочку заполнения базовых реквизитов.

Риски и побочные эффекты

Обратим внимание на то, к чему приводит полное отключение функционала. Автозаполнение по статистике отвечает не только за реквизиты шапки (склад, подразделение, организация), но и за автоматический выбор договоров, банковских счетов, соглашений и ответственных лиц для печатных форм. После отключения пользователям потребуется указывать эти значения вручную, либо потребуется настроить подстановку основных значений через стандартные реквизиты пользователей.

← На главную