Каталог решений - Произвольный отбор при открытии формы любого динамического списка

Произвольный отбор при открытии формы любого динамического списка

Произвольный отбор при открытии формы любого динамического списка

В наличии

Как установить хитрый отбор при открытии формы списка, например, отбор формы списка документов по элементу табличной части? Давайте разбираться…

Категория:

Описание

Доброго времени суток, дорогие 1С-ники! Наша сегодняшняя передача посвещена отборам при открытии форм. Допустим, у вас есть внешняя обработка и вы хотите выбрать какие-то документы, элементы справочника или иные какие данные из списка, который не хотите пользователю показывать целиком.

Отчасти с этим помогает справиться параметр «Отбор», передаваемый при открытии формы. Например, так:

  ОткрытьФорму("Документ.ПоступлениеНаРасчетныйСчет.ФормаСписка", Новый Структура("Отбор", Новый Структура("ВидОперации", НужныйВидОперации)), ЭтаФорма, ...);

Но если Вам нужно отбрать по реквизиту табличной части, то такой метод не подходит, ибо в ключе структуры не может быть точки. Соответствие могло бы тут помочь, но 1С не работает с соответствием, поэтому умные разработчики 1С придумали еще один параметр открытия формы — «ФиксированныеНастройки».

Для того, чтобы получить эти фиксированные настройки, нужно сделать так:

Функция ПолучитьФиксНастройки()

	Схема = Новый СхемаКомпоновкиДанных;
	
	Источник = Схема.ИсточникиДанных.Добавить();
	Источник.Имя = "Источник1";
	Источник.ТипИсточникаДанных = "local";
	
	Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
	Набор.Запрос = "ВЫБРАТЬ * ИЗ Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет";
	Набор.Имя = "Запрос1";
	Набор.ИсточникДанных ="Источник1";
	Набор.АвтоЗаполнениеДоступныхПолей = Истина;

	АдресСхемы = ПоместитьВоВременноеХранилище(Схема, ЭтаФорма.УникальныйИдентификатор);

	КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));

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

	Возврат КомпоновщикНастроек.ФиксированныеНастройки

КонецФункции

&НаКлиенте
Процедура ОткрытьКом(Команда)

	Фикс = ПолучитьФиксНастройки();
	ОткрытьФорму("Документ.ПоступлениеНаРасчетныйСчет.ФормаСписка", Новый Структура("ФиксированныеНастройки", Фикс), ЭтаФорма)	

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

В данном случае мы откроем только те документы, в реквизите «СпособПогашенияЗадолженности» табличной части «РасшифровкаПлатежа» которых установлено значение «Автоматически».

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