Содержание:
Установка отбора через параметры открытия формы
При открытии формы с динамическим списком можно передать “Отбор” через параметры открытия и он автоматически установится, ниже приведен пример Обработки и листинг кода открытия такой формы с отбором по “ИНН” контрагента:
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 |
&НаКлиенте Процедура ОткрытьСписокКонтрагентовСОтборомПоИНН(Команда) ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("РежимВыбора", Истина); ПараметрыФормы.Вставить("МножественныйВыбор", Ложь); ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Истина); ПараметрыФормы.Вставить("ВыборГруппИЭлементов",ИспользованиеГруппИЭлементов.Элементы); // Вариант 1 //ПараметрыФормы.Вставить("Отбор", Новый Структура("ИНН",Объект.ИНН)); // Вариант 2 НастройкиКомпоновкиДанных = Новый НастройкиКомпоновкиДанных; ЭлементОтбора = НастройкиКомпоновкиДанных.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИНН"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Объект.ИНН; ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиКомпоновкиДанных); ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОткрытьСписокКонтрагентовЗавершение", ЭтотОбъект); ОткрытьФорму("ВнешняяОбработка.ДинамическийСписок.Форма.ФормаКонтрагентыДС", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор,,, ОповещениеОЗакрытие, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура ОткрытьСписокКонтрагентовЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = Неопределено Тогда Возврат; КонецЕсли; Сообщить("Выбран: "+Строка(Результат)); КонецПроцедуры |
Для работы отбора у динамического списка должен стоять флаг “основной реквизит”.
Установка отбора через БСП
Так же, отбор можно устанавливать через соответствующие свойства динамического списка, в типовых конфигурациях это можно сделать с помощью БСП:
1 2 3 4 5 6 |
// Вариант 1 ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Контрагенты.Отбор, "ИНН", "7707056547"); // Вариант 2 ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Контрагенты, "ИНН", "7707056547"); |
Подробное описание и полный перечень функций БСП по работе с Динамическим списком можно почитать на ИТС например для БСП 3.1.10.
Ограничение отбора в динамическом списке
При установке пользователем не подходящего отбора по динамическому списку можно получить замедления работы. У динамического списка есть метод который позволяет запретить использование не желательных отборов.
1 2 3 4 5 6 7 8 9 10 |
// Вариант 1 ЗапрещенныеВОтбореПоля = Новый Массив; ЗапрещенныеВОтбореПоля.Добавить("СостояниеЭЛН"); ЗапрещенныеВОтбореПоля.Добавить("Подразделение"); Список.УстановитьОграниченияИспользованияВОтборе(ЗапрещенныеВОтбореПоля); // Вариант 2 Список.Поля.Найти("СостояниеЭЛН").ОграничениеИспользования.Условие = Истина; |
Если заглянуть в справку то можно найти и такие методы ограничения:
- УстановитьОграниченияИспользованияВГруппировке
- УстановитьОграниченияИспользованияВПорядке