Как установить отборы у поля ввода в зависимости от других значений?#

Дано:

В 1С:Элемент имеется поле “Контрагент” и поле “Банковский счет”. Нужно отбирать список счетов по значению в поле “Контрагент”, по аналогии с СвязиПараметровВыбора в Платформе 1С 8.3

Решение:

Для накладывания отборов в зависимости от значений других полей используется свойство компоненты ПолеВвода “НастройкиВводаСсылок”. С его помощью можно задать параметры отборов для полей в зависимости от других значений в yml-файле формы, без кода.

yaml
Тип: АвтоматическаяГруппа
Имя: ГруппаПолей
Содержимое:

    Тип: ПолеВвода<Контрагенты.Ссылка?>
    Имя: Контрагент
    Значение: =Объект.Контрагент

    Тип: ПолеВвода<БанковскиеСчета.Ссылка?>
    Имя: РасчетныйСчет
    Значение: =Объект.РасчетныйСчет
    НастройкиВводаСсылок:
      НастройкиПоТипу:

          Ключ: БанковскиеСчета.Ссылка
          Значение:
            Фильтр:
              Использовать: Истина
              Элементы:

                  Тип: ЭлементФильтра
                  ВидСравнения: Равно
                  Значение: =Объект.Контрагент
                  Поле: Владелец
                  Использовать: Истина

При этом можно программно модифицировать параметры отбора на уровне модуля менеджера объекта, переопределив следующим образом обработчик ПолучитьЗначенияВыбора.

xbsl
@Обработчик
метод ПолучитьЗначенияВыбора(Параметры: ПараметрыПолученияЗначенийВыбора): ЧитаемаяКоллекция<ЭлементСпискаВыбора>?

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

В примере выше программно накладывается отбор по полю “Недействителен” дополнительно к существующим фильтрам.