Каталог решений - Открытие управляемой формы списка (выбора) с произвольными отборами

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

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

В наличии

В процессе работы возникла необходимость открывать управляемую форму выбора справочника со сложным отбором по реквизитам (с видами сравнения "в списке", "не равно" и др.). Чтобы не создавать для каждого случая отдельную форму выбора, был создан универсальный механизм.

Категория:

Описание

Доработка формы выбора. В автоматически созданную управляемую форму выбора добавляем ключевой параметр ‘ПараметрыОтбора’, тип = произвольный. Из обработчика события ПриОткрытии() вызываем процедуру НастроитьОтборСписка():

&НаКлиенте

Процедура НастроитьОтборСписка()

Перем ПараметрыОтбора, РежимОтображения;

Если Параметры.Свойство(«ПараметрыОтбора», ПараметрыОтбора)

И ТипЗнч(ПараметрыОтбора) = Тип(«Структура»)

Тогда 

Отбор = Список.Отбор.Элементы;

Для Каждого ЭлементСтруктуры Из ПараметрыОтбора Цикл 

ИмяОтбора = ЭлементСтруктуры.Ключ;

НастройкаОтбора = ЭлементСтруктуры.Значение;

Если НЕ НастройкаОтбора.Свойство(«РежимОтображения», РежимОтображения) Тогда 

РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

КонецЕсли;

ЭлементОтбора = Отбор.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));

ЭлементОтбора.ИдентификаторПользовательскойНастройки = ИмяОтбора;

ЭлементОтбора.Представление = ИмяОтбора;

ЭлементОтбора.ПредставлениеПользовательскойНастройки = ИмяОтбора;

ЭлементОтбора.РежимОтображения = РежимОтображения;

ЭлементОтбора.Использование = Истина;

ЭлементОтбора.ВидСравнения = НастройкаОтбора.ВидСравнения;

ЭлементОтбора.ЛевоеЗначение = НастройкаОтбора.ЛевоеЗначение;

ЭлементОтбора.ПравоеЗначение = НастройкаОтбора.ПравоеЗначение;

КонецЦикла;

КонецЕсли;

КонецПроцедуры 

Использование. В месте, откуда надо вызвать открытие нашей формы, помещаем код, например:

НастройкаОтбораПоВладельцам = Новый Структура;

НастройкаОтбораПоВладельцам.Вставить(«ЛевоеЗначение», Новый ПолеКомпоновкиДанных(«Владелец»));

НастройкаОтбораПоВладельцам.Вставить(«ВидСравнения», ВидСравненияКомпоновкиДанных.ВСписке);

НастройкаОтбораПоВладельцам.Вставить(«ПравоеЗначение», СписокКонтрагентов);

НастройкаОтбораПоВладельцам.Вставить(«РежимОтображения», РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);

ПараметрыОтбора = Новый Структура;

ПараметрыОтбора.Вставить(«Владелец», НастройкаОтбораПоВладельцам); // Ключ структуры не обязательно должен быть «Владелец»

ПараметрыОткрытия = Новый Структура(«ПараметрыОтбора», ПараметрыОтбора);

ОткрытьФорму(«Справочник.ДоговорыКонтрагентов.ФормаВыбора», ПараметрыОткрытия, Элемент, ЭтаФорма);

Форма открывается, отборы применяются =).

has been added to your cart:
Оформление заказа