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

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

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


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



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

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


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