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