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