Пример, исходные данные

Есть документ «Расходная накладная» со следующими с реквизитами «Контрагент», «Заказ покупателя». Необходимо при выборе заказа покупателя установить фильтр по заказам текущего контрагента.

Порядок действий

Документ «Расходная накладная»:

  • В форме документа «Расходная накладная», для реквизита «Заказ покупателя» установить событие «Начало выбора»:

  • В процедуре модуля документа «ЗаказПокупателяНачалоВыборе» прописать код:
&НаКлиенте
Процедура ЗаказПокупателяНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Структура = Новый Структура("Контрагент", Объект.Контрагент) ;
	ОткрытьФорму("Документ.ЗаказПокупателя.ФормаВыбора", Структура, Элемент);
КонецПроцедуры

Документ «Заказ покупателя»:

  • В форме выбора документа «Заказ покупателя» создать событие «ПриСозданииНаСервере»:

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

  • Обновить базу

Как мы видим если в расходной накладной заполнен контрагент, то в списке заказов появляются только заказы данного контрагента.