среда, 31 октября 2018 г.

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

Назначение: получение управляемой формы выбора с заданным отбором (предполагается, форма выбора уже есть в конфигурации).
Номенклатура объектов: справочник «Контрагенты», документ «Поступление товаров и услуг». Накладываем отбор на справочник «Контрагенты».
Разработка на форме:
1.На форме документа встаем на поле «Контрагент».

2.В свойствах в разделе «События» создаем событие «НачалоВыбора».

Процедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   // получаем форму выбора, как она задана в конфигураторе   
   ФормаКонтрагенты = Справочники.Контрагенты.ПолучитьФормуВыбора("ФормаВыбораУправляемая",Элемент,);
   ДинамическийСписокФормыВыбора = ФормаКонтрагенты.Список;
   ЭлементОтбора = ДинамическийСписокФормыВыбора.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
   // тип только СписокЗначений, строка "ВидСравнения" обязательно перед строкой "ПравоеЗначение"
   ЭлементОтбора.Использование = Истина;
   СписокКонтрагентов = ПолучитьКонтрагентовДляВыбора();
   ЭлементОтбора.ПравоеЗначение = СписокКонтрагентов;
   // если отбираем по наименованию, то в списке значений должны быть наименования.
   // можно применять различные поля отбора и различные виды сравнения.
   //---- если требуется, чтобы пользователь не видел на форме условия отбора---
   //ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
   //---------------------------------------------------------------------------
   ФормаКонтрагенты.Открыть();
КонецПроцедуры

Функция ПолучитьКонтрагентовДляВыбора()
   Список = Новый СписокЗначений;
   // заполняем список значений, по которому будем отбирать
   Список.Добавить(Справочники.Контрагенты.НайтиПоКоду("00012").Наименование);
   Список.Добавить(Справочники.Контрагенты.НайтиПоКоду("00022").Наименование);
   Список.Добавить(Справочники.Контрагенты.НайтиПоКоду("00052").Наименование);  
   Возврат Список;
КонецФункции


Комментариев нет: