Как организовать диалог выбора пользователя в 1С

Программист IT и автоматизация бизнеса
← На главную

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

Особенности работы с пользователями информационной базы

В платформе «1С:Предприятие» отсутствует встроенный универсальный системный диалог выбора для объектов типа ПользовательИнформационнойБазы. Данный тип данных является объектом глобального контекста платформы, а не ссылочным типом (как, например, справочник или документ). По этой причине нельзя просто вынести реквизит с типом ПользовательИнформационнойБазы на форму и привязать к нему стандартную форму выбора.

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

  1. Контекст исполнения: Вызов метода ПользователиИнформационнойБазы.ПолучитьПользователей() недоступен на тонком и веб-клиенте. Получение списка необходимо выполнять на стороне сервера.
  2. Права доступа: Для получения полного списка пользователей платформы требуются административные права либо выполнение кода в привилегированном режиме.

Способ 1. Формирование списка значений и интерактивный выбор

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

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


// На сервере получаем список пользователей ИБ и заполняем СписокЗначений
СписокЮзеров = Новый СписокЗначений;
МассивПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Юзер Из МассивПользователей Цикл
    СписокЮзеров.Добавить(Юзер, Юзер.Имя);
КонецЦикла;

Далее на клиенте вызывается метод вывода списка для выбора. В управляемых формах применяют асинхронный метод ПоказатьВыборИзСписка() (а в обычных формах — метод ВыбратьИзСписка()):


// Вызов диалога выбора на клиенте
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораПользователя", ЭтотОбъект);
ПоказатьВыборИзСписка(ОписаниеОповещения, СписокЮзеров);

Способ 2. Использование справочника «Пользователи» (подход БСП)

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

Выясним основные преимущества этого подхода:

  1. Стандартные формы выбора: Вы получаете возможность использовать обычное поле ввода со ссылкой на СправочникСсылка.Пользователи и штатные формы выбора платформы.
  2. Связь с пользователями ИБ: Элемент справочника связывается с пользователем информационной базы через реквизит ИдентификаторПользователяИБ (тип УникальныйИдентификатор).
  3. Разграничение прав: Выбор из справочника доступен обычным пользователям без необходимости предоставления им административных прав на чтение состава пользователей ИБ.

Таким образом, если ваша конфигурация использует БСП, наилучшим решением будет использование реквизита с типом СправочникСсылка.Пользователи. Если же разработка ведется с нуля без использования БСП и требуется выбирать именно пользователей ИБ, следует сформировать СписокЗначений на сервере и вывести его клиенту с помощью диалога выбора.

← На главную