Как реализовать персональные настройки пользователей в 1С:ERP 2.5: ищем аналог механизмов УПП

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

Переход с системы 1С:УПП на 1С:ERP часто вызывает вопросы у разработчиков, привыкших к определенным архитектурным решениям. Одним из таких камней преткновения является отсутствие в ERP привычного Плана Видов Характеристик (ПВХ) НастройкиПользователей. В этой статье мы подробно разберем, как в современной ERP реализовано заполнение значений по умолчанию, чем это отличается от старых подходов и как правильно реализовать собственные персональные настройки, если типовых возможностей недостаточно.

Механизм заполнения по статистике в 1С:ERP

В современных конфигурациях на базе ERP 2.5 разработчики отказались от жесткого закрепления настроек (таких как «Основной склад» или «Основная организация») за пользователем в пользу интеллектуального механизма — заполнения по статистике. Проанализируем, как это работает: система отслеживает действия конкретного пользователя и на основе последних введенных данных предлагает значения для подстановки в новые документы.

Рассмотрим основные критерии работы этого механизма:

Если пользователю мешает автоматическое заполнение или он хочет его активировать, управление осуществляется через интерфейс. Рассмотрим путь к настройке: НСИ и администрирование — Сервис — Персональные настройки. Здесь находится опция Заполнять реквизиты документов по статистике. Выясним важный нюанс: если статистика начала работать некорректно (подставлять неактуальные данные), в этом же разделе можно выполнить полную очистку накопленных данных для текущего профиля.

Технический анализ механизма статистики

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

Типовой процесс выглядит следующим образом:

  1. Вызывается метод ЗаполнитьРеквизитыОбъекта().
  2. Внутри происходит переход к функции ЗначениеРеквизитаПоСтатистике().
  3. Система обращается к специализированным запросам, которые анализируют историю документов.

Посмотрим на пример упрощенного запроса, который лежит в основе получения данных (аналогично тому, что используется в модулях БСП):


Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
|    ТаблицаОбъекта.&ИмяРеквизита КАК ЗначениеРеквизита
|ИЗ
|    &ИмяТаблицы КАК ТаблицаОбъекта
|ГДЕ
|    НЕ ТаблицаОбъекта.ПометкаУдаления
|    И ТаблицаОбъекта.Автор = &ТекущийПользователь
|УПОРЯДОЧИТЬ ПО
|    ТаблицаОбъекта.Дата УБЫВ";

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

Когда статистика не справляется: альтернативные подходы

Несмотря на технологичность, статистика имеет свои минусы. Проанализируем ситуацию: если бизнес-процесс требует жесткого контроля (например, менеджер всегда должен работать только с одним конкретным статусом документа или подразделением), «плавающая» статистика может только мешать. В УПП это решалось через ПВХ, в ERP нам придется использовать другие инструменты.

Вариант 1: Использование дополнительных реквизитов и сведений

Если конфигурация находится на замке или вы не хотите создавать новые объекты метаданных, можно воспользоваться механизмом Дополнительных сведений для справочника Пользователи.

Алгоритм действий следующий:

  1. Создаем дополнительное сведение для объекта Пользователи (например, "ОсновнойСкладПользователя").
  2. В коде (через расширение) в процедуре ОбработкаЗаполнения или в подписке на событие вызываем получение этого значения.

Пример кода для получения такого значения:


ЗначениеСвойства = УправлениеСвойствами.ЗначениеСвойства(ПользователиИнформационнойБазы.ТекущийПользователь(), "ИмяСвойства");
Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда
    Объект.Склад = ЗначениеСвойства;
КонецЕсли;

Вариант 2: Создание собственного регистра настроек

Для более гибкой настройки, максимально приближенной к функционалу УПП, рекомендуется создать новый Регистр сведений. Рассмотрим оптимальную структуру такого регистра:

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

  1. Модуль объекта, процедура ОбработкаЗаполнения: это классическое место для инициализации данных.
  2. Общий модуль ЗаполнениеОбъектов...: если мы хотим, чтобы наше решение работало системно для многих документов, можно вклиниться в процедуры инициализации новых объектов через расширение.

Использование «Основных значений для подстановки»

В некоторых редакциях ERP и отраслевых решениях на ее базе (например, в модулях «Продажи» или «Закупки») уже существуют регистры типа ОсновныеЗначенияДляПодстановки. Прежде чем приступать к разработке «с нуля», проанализируем дерево конфигурации на наличие подобных объектов. Они часто позволяют закрепить Организацию, Подразделение или Склад в разрезе пользователей без написания кода.

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

Подведем итог. Если вам необходимо реализовать аналог ПВХ НастройкиПользователей, придерживайтесь следующей стратегии:

  1. Сначала проверьте, не решает ли задачу типовой механизм статистики.
  2. Если нужно жесткое закрепление — используйте расширение конфигурации.
  3. Вместо ПВХ используйте Регистры сведений — в архитектуре 8.3 они работают быстрее и удобнее в плане разграничения прав доступа.
  4. Для вывода этих настроек в пользовательский интерфейс можно программно расширить форму Персональные настройки, добавив туда свои поля, связанные с созданным регистром.

Таким образом, хотя прямого аналога объекта из старых систем в ERP нет, платформа предоставляет гораздо более гибкие инструменты для достижения того же результата, позволяя комбинировать автоматическое обучение системы (статистику) и жесткие регламентированные настройки.

← На главную