Как установить отборы у поля ввода в зависимости от других значений?#
Дано:
В 1С:Элемент имеется поле “Контрагент” и поле “Банковский счет”. Нужно отбирать список счетов по значению в поле “Контрагент”, по аналогии с СвязиПараметровВыбора в Платформе 1С 8.3
Решение:
Для накладывания отборов в зависимости от значений других полей используется свойство компоненты ПолеВвода “НастройкиВводаСсылок”. С его помощью можно задать параметры отборов для полей в зависимости от других значений в yml-файле формы, без кода.
yaml
Тип: АвтоматическаяГруппа
Имя: ГруппаПолей
Содержимое:
-
Тип: ПолеВвода<Контрагенты.Ссылка?>
Имя: Контрагент
Значение: =Объект.Контрагент
-
Тип: ПолеВвода<БанковскиеСчета.Ссылка?>
Имя: РасчетныйСчет
Значение: =Объект.РасчетныйСчет
НастройкиВводаСсылок:
НастройкиПоТипу:
-
Ключ: БанковскиеСчета.Ссылка
Значение:
Фильтр:
Использовать: Истина
Элементы:
-
Тип: ЭлементФильтра
ВидСравнения: Равно
Значение: =Объект.Контрагент
Поле: Владелец
Использовать: ИстинаПри этом можно программно модифицировать параметры отбора на уровне модуля менеджера объекта, переопределив следующим образом обработчик ПолучитьЗначенияВыбора.
xbsl
@Обработчик
метод ПолучитьЗначенияВыбора(Параметры: ПараметрыПолученияЗначенийВыбора): ЧитаемаяКоллекция<ЭлементСпискаВыбора>?
пер ЕстьОтборПоНедействительным = Ложь
для Элемент из Параметры.Фильтр.Элементы
если Элемент это ЭлементФильтра
если (Элемент как ЭлементФильтра).Поле == "Недействителен"
ЕстьОтборПоНедействительным = Истина
прервать
;
;
;
если не ЕстьОтборПоНедействительным
Параметры.Фильтр.Элементы.Добавить(
новый ЭлементФильтра(
Поле = "Недействителен",
ВидСравнения = ВидСравнения.Равно,
Значение = Ложь,
Использовать = Истина
)
)
;
возврат ПолучитьСтандартныеЗначенияВыбора(Параметры)
;В примере выше программно накладывается отбор по полю “Недействителен” дополнительно к существующим фильтрам.