При работе в 1С:ERP пользователи часто сталкиваются с ситуацией, когда при создании нового документа Заказ на перемещение система автоматически подставляет склад-отправитель и склад-получатель. На первый взгляд это кажется удобным, однако, если логика перемещений постоянно меняется, такая «помощь» программы начинает мешать, заставляя пользователя вручную перевыбирать значения. В этой статье мы подробно разберем, почему это происходит, как работает механизм статистики и какими способами можно отключить этот функционал — от простых настроек интерфейса до написания кода.
Прежде чем отключать функции, давайте проанализируем, как платформа 1С понимает, какие значения нужно подставить. Механизм статистики не просто копирует данные из последнего созданного документа. Система выполняет анализ последних 20-30 документов аналогичного типа, созданных конкретным пользователем. Если алгоритм видит, что в большинстве случаев (например, в 80% записей) выбирается один и тот же склад, он помечает его как «значение по умолчанию» для данного профиля.
Важно понимать, что этот механизм работает на уровне платформы в процедуре ОбработкаЗаполнения — для изменения этой логики без программирования есть инструмент настройки правил автозаполнения реквизитов 1С. Когда вызывается метод создания нового объекта, система обращается к специальному хранилищу настроек пользователя и ищет там накопленные статистические данные. Если такие данные найдены, поля заполняются автоматически еще до того, как форма откроется перед глазами пользователя.
Рассмотрим самый простой и правильный путь, который не требует изменения конфигурации или написания кода. Этот метод подходит, если у пользователя есть доступ к разделу администрирования.
Выполним следующие шаги:
Обратите внимание: если вы не видите этого пункта, проанализируем ситуацию. Скорее всего, в вашей конфигурации изменен командный интерфейс или у пользователя недостаточно прав (отсутствует роль Сохранение данных пользователя). В таком случае можно попробовать найти форму через меню «Функции для технического специалиста» (ранее «Все функции»), введя в поиске «Персональные настройки».
Если интерфейсный метод недоступен (например, раздел скрыт разработчиками нетиповой конфигурации), мы можем принудительно изменить эту настройку с помощью небольшой внешней обработки или в консоли кода — для этого отлично подойдет профессиональная консоль кода и инструментов разработчика 1С. Настройка хранится в системной таблице под определенным ключом.
// Программное отключение заполнения по статистике
КлючОбъекта = "НастройкиРаботыСДокументами";
КлючНастройки = "ЗаполнятьРеквизитыДокументовПоСтатистике";
ЗначениеНастройки = Ложь;
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастройки, ЗначениеНастройки);
Сообщить("Настройка успешно сохранена. Перезапустите сеанс для применения изменений.");
Этот код обращается к объекту ХранилищеОбщихНастроек, который является стандартным механизмом платформы 8.3 для хранения пользовательских предпочтений. После выполнения данного кода флаг будет принудительно установлен в значение Ложь, даже если пользователь не видит его в интерфейсе.
В крупных организациях часто встает задача отключить этот функционал централизованно для всех сотрудников, чтобы избежать ошибок при вводе данных — с этим поможет обработка контроля заполнения и настройки обязательности реквизитов. Например, подобные решения могут помочь автоматически установить флажок "Цена включает НДС" по умолчанию в документах товародвижения, предотвращая ошибки пользователя. Проанализируем, как это сделать. Нам потребуется перебрать всех пользователей информационной базы и для каждого записать соответствующую настройку в хранилище.
Процедура ОтключитьСтатистикуВсемПользователям() Экспорт
ВыборкаПользователей = Пользователи.Выбрать();
Пока ВыборкаПользователей.Следующий() Цикл
ИмяПользователя = ВыборкаПользователей.Имя;
Попытка
ХранилищеОбщихНастроек.Сохранить("НастройкиРаботыСДокументами",
"ЗаполнятьРеквизитыДокументовПоСтатистике",
Ложь,
,
ИмяПользователя);
ЗаписьЖурналаРегистрации("НастройкаСтатистики", УровеньЖурналаРегистрации.Информация, , ,
"Отключено для пользователя: " + ИмяПользователя);
Исключение
Продолжить;
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Здесь мы используем расширенный синтаксис метода Сохранить, указывая в пятом параметре имя конкретного пользователя. Это позволяет администратору системы управлять настройками коллег без необходимости заходить под их учетными записями.
Иногда даже после отключения указанной настройки склады в Заказе на перемещение продолжают заполняться. Выясним причину такого поведения. В 1С:ERP существует несколько механизмов автоматизации:
Склады и магазины и связанные Способы обеспечения потребностей. Это также может быть частью более широкой задачи по автоматическому устранению отрицательных остатков и поддержанию актуальных данных по складам.ОбработкаЗаполнения или ПриСозданииНаСервере. Если программный код прописан в расширении (например, через &После), то системные настройки статистики на него не повлияют.ХранилищеОбщихНастроек вступают в силу только после полной очистки кэша пользователя или перезапуска сервера 1С.Если вы не хотите полностью отключать полезный механизм статистики, но система запомнила «неправильный» склад, ее можно переучить. Выясним, как это работает на практике. Поскольку алгоритм анализирует последние документы, вам достаточно создать 5–10 документов Заказ на перемещение с пустыми или корректными значениями складов и провести (или просто записать) их. Для задач массового оформления продаж или других документов вы можете использовать специализированные обработки, чтобы автоматизировать этот процесс — для этого есть инструмент управления автозаполнением реквизитов по шаблонам. Вес старых данных в выборке уменьшится, и система начнет подставлять новые значения или вовсе перестанет заполнять поля, если данные в выборке станут слишком разнородными.
Подводя итог, отметим, что наиболее эффективным и быстрым способом решения проблемы в нетиповой конфигурации является использование программного метода записи в ХранилищеОбщихНастроек. Это позволяет точечно управлять поведением программы, не прибегая к дорогостоящей разработке расширений или изменению основной конфигурации.