Как настроить зависимый выбор реквизитов в табличной части управляемой формы 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто в процессе разработки на 1С возникает задача организовать «зависимый выбор»: когда пользователь выбирает значение в одной колонке табличной части, в другой колонке список выбора должен автоматически ограничиваться данными, связанными с выбранным элементом, используя модель объекта — для этого есть улучшение механизма подбора и ввода значений в 1С. Давайте разберем, как правильно реализовать этот механизм, избегая лишнего кода и используя встроенные возможности платформы.

Реализация через механизм «Связи параметров выбора»

Это самый эффективный и рекомендуемый способ, позволяющий построить граф зависимостей реквизитов. Платформа 1С позволяет настроить зависимость на уровне свойств элемента формы, что работает максимально быстро и надежно. Нам не потребуется писать сложные обработчики, так как ядро платформы само отследит изменение значения в колонке-источнике.

  1. Откройте форму справочника или документа в конфигураторе.
  2. Перейдите в Элементы формы (где возможно добавление реквизитов без кодирования) и найдите нужную табличную часть.
  3. Выберите колонку, которая должна выступать в роли приемника (например, Значение).
  4. В палитре свойств найдите раздел Связи параметров выбора.
  5. Нажмите кнопку добавления строки. В поле Параметр укажите путь к отбору, например: Отбор.ТехДокументация.
  6. В поле Путь к данным выберите имя колонки, которая является источником (в нашем случае — Параметр).

Теперь платформа будет автоматически передавать значение из Параметр в отбор ТехДокументация для поля Значение. Если пользователь изменит параметр, список Значение тут же обновится.

Программный метод настройки параметров выбора

Если задача сложнее (например, тип параметра может меняться динамически) или требуется применить более тонкую логику, мы можем настроить параметры программно в событии НачалоВыбора. Рассмотрим, как это сделать правильно, чтобы не перегружать интерфейс.

В событии НачалоВыбора элемента Значение мы формируем массив параметров выбора:


&НаКлиенте
Процедура ПараметрыЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ТекДанные = Элементы.Параметры.ТекущиеДанные;
    Если ТекДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;

    Если ТипЗнч(ТекДанные.Параметр) = Тип("СправочникСсылка.Техника") Тогда
        МассивПараметров = Новый Массив;
        ТекПараметрВыбора = Новый ПараметрВыбора("Отбор.ТехДокументация", ТекДанные.Параметр);
        МассивПараметров.Добавить(ТекПараметрВыбора);
        
        Элемент.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
    КонецЕсли;
КонецПроцедуры

Обратите внимание: мы используем ФиксированныйМассив, так как свойство ПараметрыВыбора требует именно этот тип данных. Этот метод позволяет гибко управлять отборами в зависимости от условий, которые могут меняться прямо в процессе заполнения табличной части.

Важные рекомендации при реализации

При работе с зависимыми списками важно учитывать несколько нюансов, которые сделают работу пользователя комфортной:

Использование встроенных механизмов Связи параметров выбора — это стандарт индустрии при разработке на 1С. Это позволяет сократить объем поддерживаемого кода и гарантирует, что ваше решение будет работать стабильно при любых обновлениях платформы. Для этой задачи есть подсистема настройки зависимого выбора для 1С.

← На главную