Переход с системы 1С:УПП на 1С:ERP часто вызывает вопросы у разработчиков, привыкших к определенным архитектурным решениям. Одним из таких камней преткновения является отсутствие в ERP привычного Плана Видов Характеристик (ПВХ) НастройкиПользователей. В этой статье мы подробно разберем, как в современной ERP реализовано заполнение значений по умолчанию, чем это отличается от старых подходов и как правильно реализовать собственные персональные настройки, если типовых возможностей недостаточно.
В современных конфигурациях на базе ERP 2.5 разработчики отказались от жесткого закрепления настроек (таких как «Основной склад» или «Основная организация») за пользователем в пользу интеллектуального механизма — заполнения по статистике. Проанализируем, как это работает: система отслеживает действия конкретного пользователя и на основе последних введенных данных предлагает значения для подстановки в новые документы.
Рассмотрим основные критерии работы этого механизма:
Если пользователю мешает автоматическое заполнение или он хочет его активировать, управление осуществляется через интерфейс. Рассмотрим путь к настройке: НСИ и администрирование — Сервис — Персональные настройки. Здесь находится опция Заполнять реквизиты документов по статистике. Выясним важный нюанс: если статистика начала работать некорректно (подставлять неактуальные данные), в этом же разделе можно выполнить полную очистку накопленных данных для текущего профиля.
Для разработчика важно понимать «подкапотную» часть процесса, чтобы иметь возможность на нее влиять. Проанализируем цепочку вызовов, которая происходит при создании нового объекта. Основная логика сосредоточена в общем модуле ЗаполнениеОбъектовПоСтатистике.
Типовой процесс выглядит следующим образом:
ЗаполнитьРеквизитыОбъекта().ЗначениеРеквизитаПоСтатистике().Посмотрим на пример упрощенного запроса, который лежит в основе получения данных (аналогично тому, что используется в модулях БСП):
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ТаблицаОбъекта.&ИмяРеквизита КАК ЗначениеРеквизита
|ИЗ
| &ИмяТаблицы КАК ТаблицаОбъекта
|ГДЕ
| НЕ ТаблицаОбъекта.ПометкаУдаления
| И ТаблицаОбъекта.Автор = &ТекущийПользователь
|УПОРЯДОЧИТЬ ПО
| ТаблицаОбъекта.Дата УБЫВ";
Разберем ситуацию, когда нам нужно программно запретить заполнение определенных реквизитов по статистике. В модуле менеджера объекта (например, документа) существует процедура ПриОпределенииНастроекЗаполненияОбъектов. В ней можно перечислить список исключений, которые система должна игнорировать при автозаполнении.
Несмотря на технологичность, статистика имеет свои минусы. Проанализируем ситуацию: если бизнес-процесс требует жесткого контроля (например, менеджер всегда должен работать только с одним конкретным статусом документа или подразделением), «плавающая» статистика может только мешать. В УПП это решалось через ПВХ, в ERP нам придется использовать другие инструменты.
Если конфигурация находится на замке или вы не хотите создавать новые объекты метаданных, можно воспользоваться механизмом Дополнительных сведений для справочника Пользователи.
Алгоритм действий следующий:
Пользователи (например, "ОсновнойСкладПользователя").ОбработкаЗаполнения или в подписке на событие вызываем получение этого значения.Пример кода для получения такого значения:
ЗначениеСвойства = УправлениеСвойствами.ЗначениеСвойства(ПользователиИнформационнойБазы.ТекущийПользователь(), "ИмяСвойства");
Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда
Объект.Склад = ЗначениеСвойства;
КонецЕсли;
Для более гибкой настройки, максимально приближенной к функционалу УПП, рекомендуется создать новый Регистр сведений. Рассмотрим оптимальную структуру такого регистра:
Пользователь (тип СправочникСсылка.Пользователи).ИмяНастройки (тип Строка или созданный ПВХ).Значение (тип ЛюбаяСсылка).После создания регистра, мы можем внедрить логику подстановки в общие модули заполнения. Рассмотрим наиболее подходящие точки интеграции:
ОбработкаЗаполнения: это классическое место для инициализации данных.ЗаполнениеОбъектов...: если мы хотим, чтобы наше решение работало системно для многих документов, можно вклиниться в процедуры инициализации новых объектов через расширение.В некоторых редакциях ERP и отраслевых решениях на ее базе (например, в модулях «Продажи» или «Закупки») уже существуют регистры типа ОсновныеЗначенияДляПодстановки. Прежде чем приступать к разработке «с нуля», проанализируем дерево конфигурации на наличие подобных объектов. Они часто позволяют закрепить Организацию, Подразделение или Склад в разрезе пользователей без написания кода.
Подведем итог. Если вам необходимо реализовать аналог ПВХ НастройкиПользователей, придерживайтесь следующей стратегии:
Таким образом, хотя прямого аналога объекта из старых систем в ERP нет, платформа предоставляет гораздо более гибкие инструменты для достижения того же результата, позволяя комбинировать автоматическое обучение системы (статистику) и жесткие регламентированные настройки.