Свойство элемента формы ‘ПараметрыВыбора’
Очередная полезная заметка в рубрике ‘Джуниор 1с’. Рассмотрим полезное свойство элемента формы ‘ПараметрыВыбора’ (ChoiceParameters), с помощью которого мы можем ограничить список выбираемых элементов по заданному отбору.
Пример работы с данным свойством рассмотрим в конфигурации 1с ‘БитФинанс’. Что бы было понятно и нагляднее напишем простую обработку, с помощью которой уже изучим данное свойство.
И так, создаем новую обработку и добавляем на неё реквизит ‘СтатьяОборотов’ типа ‘СправочникСсылка.бит_СтатьиОборотов’:
У этого элемента справочника есть реквизит ‘ТипСтатьи’ / ‘ПеречислениеСсылка.бит_ТипыСтатейОборотов’:
Так как же сделать что бы при выборе статьи оборотов нам выходил список только с теми элементами, у которых реквизит ‘ТипСтатьи‘ = ‘БДР’? А очень просто, для этого нам нужно свойство элемента формы ‘ПараметрыВыбора’:
Поскольку параметры выбора это у нас ‘ФиксированныйМассив’, то мы можем задавать несколько условие отбора – все отборы будут работать в связке ‘И’:

И теперь выбирать мы сможем в нашей форме только те статьи, которые соответствуют установленному нашему отбору:

Все это можно проделать и программным способом, я считаю его более гибким, так как там можно реализовывать любую логику выбора элементов. Создаем событие у элемента ‘СтатьяОборотовНачалоВыбора’ и прописываем алгоритм заполнения фиксированного массива параметров выбора:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
&НаКлиенте Процедура СтатьяОборотовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) УстановитьПараметрыВыбораСтатей(Элемент); КонецПроцедуры &НаКлиенте Процедура УстановитьПараметрыВыбораСтатей(Контейнер) МассивПараметров = Новый Массив; НовыйПараметр = Новый ПараметрВыбора("Отбор.ТипСтатьи" , ПредопределенноеЗначение("Перечисление.бит_ТипыСтатейОборотов.БДР")); МассивПараметров.Добавить(НовыйПараметр); НовыйПараметр = Новый ПараметрВыбора("Отбор.ВидСтатьи" , ПредопределенноеЗначение("Справочник.бит_ВидыСтатейОборотов.Налоги")); МассивПараметров.Добавить(НовыйПараметр); Контейнер.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров); КонецПроцедуры |
Программная установка параметров выбора более гибкая: к примеру мы можем показать пользователю на выбор только ‘помеченные на удаление’ элементы (по сути формируем свой массив ссылок для выбора):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
&НаКлиенте Процедура СтатьяОборотовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) УстановитьПараметрыВыбораСтатей(Элемент); КонецПроцедуры &НаКлиенте Процедура УстановитьПараметрыВыбораСтатей(Контейнер) МассивПараметров = Новый Массив; //НовыйПараметр = Новый ПараметрВыбора("Отбор.ТипСтатьи" , ПредопределенноеЗначение("Перечисление.бит_ТипыСтатейОборотов.БДР")); //МассивПараметров.Добавить(НовыйПараметр); // //НовыйПараметр = Новый ПараметрВыбора("Отбор.ВидСтатьи" , ПредопределенноеЗначение("Справочник.бит_ВидыСтатейОборотов.Налоги")); //МассивПараметров.Добавить(НовыйПараметр); НовыйПараметр = Новый ПараметрВыбора("Отбор.Ссылка" , ПолучитьСписокДоступныхСсылок()); МассивПараметров.Добавить(НовыйПараметр); Контейнер.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров); КонецПроцедуры &НаСервере Функция ПолучитьСписокДоступныхСсылок() Результат = Новый Массив; Запрос = Новый Запрос("ВЫБРАТЬ | бит_СтатьиОборотов.Ссылка КАК Ссылка |ИЗ | Справочник.бит_СтатьиОборотов КАК бит_СтатьиОборотов |ГДЕ | бит_СтатьиОборотов.ПометкаУдаления"); Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); Возврат Результат; КонецФункции |
И получаем для выбора именно те элементы, которые мы описали в нашем алгоритме:
Вот таким простым свойством элемента формы ‘ПараметрыВыбора’ мы можем управлять списком элементов для выбора.
Для общего развития можете ознакомиться с почти аналогичным свойством: ‘Свойство элемента формы ‘СвязиПараметровВыбора’.
Плюс как бонус: обработка, с готовым кодом.
Скачать файлы craft1c_ParametryVybora.epf