В процессе разработки или администрирования типовых конфигураций на платформе 1С:Предприятие 8, таких как Управление торговлей 10.3, часто возникает необходимость массово проверить или получить список пользователей, у которых активирована какая-либо специфическая настройка. Рассмотрим, как правильно связать ПланВидовХарактеристик с данными пользователей и извлечь нужную информацию из базы данных.
Важно понимать, что в типовых конфигурациях обычного приложения настройки пользователей не хранятся напрямую в справочнике Пользователи. Для этих целей разработчики 1С предусмотрели специальный механизм — регистр сведений НастройкиПользователей. Именно этот объект является ключевым хранилищем, связывающим конкретного пользователя, вид настройки (из ПланаВидовХарактеристик) и установленное значение.
Разберем структуру регистра НастройкиПользователей:
Пользователь — ссылается на справочник Пользователи.Настройка — ссылается на ПланВидовХарактеристик.НастройкиПользователей.Значение — содержит актуальное значение настройки, тип которого может быть составным.Для решения поставленной задачи мы воспользуемся механизмом запросов. Поскольку настройки в данном регистре чаще всего хранятся как актуальное состояние, нам не требуется обращаться к виртуальным таблицам среза последних, достаточно запроса к основной таблице регистра.
Разберем по шагам, как сформировать такой запрос:
РегистрСведений.НастройкиПользователей.Настройка, чтобы выбрать только интересующий нас параметр.Значение, проверяя его на ИСТИНА.Пользователи для вывода имен или других реквизитов.Посмотрим на пример кода, который решает эту задачу:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НастройкиПользователейСрезПоследних.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.НастройкиПользователей КАК НастройкиПользователейСрезПоследних
|ГДЕ
| НастройкиПользователейСрезПоследних.Настройка = &Настройка
| И НастройкиПользователейСрезПоследних.Значение = ИСТИНА";
Запрос.УстановитьПараметр("Настройка", ПланыВидовХарактеристик.НастройкиПользователей.НужнаяНамНастройка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
// Здесь мы работаем с найденным пользователем
Сообщить("Пользователь с активной настройкой: " + Выборка.Пользователь);
КонецЦикла;
При работе с этим регистром стоит учитывать несколько технических моментов, которые помогут избежать ошибок:
Значение имеет составной тип данных, убедитесь, что настройка, которую вы ищете, действительно является булевой. Если в регистре для одного вида настройки хранятся данные разных типов, запрос отработает корректно только при точном совпадении типа.Наименование или ПолноеИмя, добавьте в запрос левое соединение с таблицей Справочник.Пользователи.УстановитьПараметр для передачи ссылки на настройку из ПланаВидовХарактеристик. Это ускоряет выполнение запроса и делает код более читаемым и надежным.Использование регистра НастройкиПользователей — это стандартный подход в Управлении торговлей 10.3. Если вы не можете найти какую-либо настройку, первым делом проверьте содержание ПланаВидовХарактеристик, чтобы убедиться, что идентификатор настройки выбран верно. Надеемся, что эта инструкция помогла вам разобраться в структуре хранения данных и успешно решить задачу с фильтрацией пользователей!