При разработке прикладных решений в системе «1С:Предприятие» периодически возникает задача предоставить пользователю возможность выбрать одного из пользователей информационной базы или справочника. Разберем по шагам, существует ли для этого системный диалог и какими способами можно реализовать такую функциональность.
В платформе «1С:Предприятие» отсутствует встроенный универсальный системный диалог выбора для объектов типа ПользовательИнформационнойБазы. Данный тип данных является объектом глобального контекста платформы, а не ссылочным типом (как, например, справочник или документ). По этой причине нельзя просто вынести реквизит с типом ПользовательИнформационнойБазы на форму и привязать к нему стандартную форму выбора.
Кроме того, при реализации работы с пользователями информационной базы важно учитывать следующие технические особенности:
ПользователиИнформационнойБазы.ПолучитьПользователей() недоступен на тонком и веб-клиенте. Получение списка необходимо выполнять на стороне сервера.Рассмотрим вариант, когда необходимо выдать пользователю диалог выбора из динамически сформированного списка пользователей ИБ. На сервере мы получаем список пользователей, а на клиенте отображаем его для выбора.
Проанализируем пример кода для реализации этого подхода:
// На сервере получаем список пользователей ИБ и заполняем СписокЗначений
СписокЮзеров = Новый СписокЗначений;
МассивПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Юзер Из МассивПользователей Цикл
СписокЮзеров.Добавить(Юзер, Юзер.Имя);
КонецЦикла;
Далее на клиенте вызывается метод вывода списка для выбора. В управляемых формах применяют асинхронный метод ПоказатьВыборИзСписка() (а в обычных формах — метод ВыбратьИзСписка()):
// Вызов диалога выбора на клиенте
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораПользователя", ЭтотОбъект);
ПоказатьВыборИзСписка(ОписаниеОповещения, СписокЮзеров);
В типовых конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), разработчики практически не обращаются к объектам ПользовательИнформационнойБазы напрямую в пользовательском интерфейсе. Вместо этого применяется справочник Пользователи (и ВнешниеПользователи).
Выясним основные преимущества этого подхода:
СправочникСсылка.Пользователи и штатные формы выбора платформы.ИдентификаторПользователяИБ (тип УникальныйИдентификатор).Таким образом, если ваша конфигурация использует БСП, наилучшим решением будет использование реквизита с типом СправочникСсылка.Пользователи. Если же разработка ведется с нуля без использования БСП и требуется выбирать именно пользователей ИБ, следует сформировать СписокЗначений на сервере и вывести его клиенту с помощью диалога выбора.