К статье
Практический материал

Разработка и Конфигурация · 9 мин

Связи параметров выбора в 1С: назначение и настройка

Что такое связи параметров выбора в 1С, как настроить фильтрацию значений в полях ввода, типовые ошибки и способы проверки результата.

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

Механизм работает на уровне формы: при открытии списка выбора платформа автоматически подставляет отбор по связанному реквизиту. Настройка выполняется в конфигураторе или программно, без изменения структуры данных. Это делает связи параметров выбора одним из самых простых способов улучшить удобство ввода и снизить количество ошибок в документах.

Важно понимать: связь параметров выбора — это не контроль данных, а фильтрация интерфейса. Она помогает пользователю выбрать правильное значение, но не гарантирует корректность уже записанных данных. Для жёсткой проверки используются другие средства — обработчики проверки заполнения и запросы при записи.

Где применяются связи параметров выбора

Механизм встречается практически в любой прикладной конфигурации. Типовые сценарии: выбор договора по контрагенту, выбор склада по организации, выбор подразделения по организации, выбор характеристики по номенклатуре, выбор банковского счёта по организации или контрагенту. Во всех этих случаях у дочернего объекта есть реквизит-владелец, по которому строится отбор.

Особенно полезны связи в документах с табличными частями. Например, в строке товарной накладной пользователь выбирает номенклатуру, а поле «Характеристика» должно предлагать только характеристики этой позиции. Без связи список характеристик был бы общим по всей базе, что делает подбор практически невозможным.

Связи работают и в управляемых, и в обычных формах, но настраиваются по-разному. В управляемых формах настройка хранится в свойствах элемента формы, в обычных — также в свойствах поля ввода, но с привязкой к данным формы другого типа.

Как настроить связь в конфигураторе

Рассмотрим настройку на примере пары «Контрагент — Договор» в управляемой форме документа. Откройте форму документа в конфигураторе, выделите поле «Договор» и откройте палитру свойств. Найдите свойство «СвязиПараметровВыбора» и нажмите кнопку выбора — откроется редактор коллекции связей.

Добавьте новую связь и заполните её свойства. Главное свойство — «Связь»: здесь указывается строка вида Отбор.Владелец(Элементы.Контрагент) или Отбор.Владелец(Объект.Контрагент). Слева от скобок — путь к отбору в дочернем объекте (реквизит «Владелец» справочника договоров), в скобках — путь к данным, откуда берётся значение.

Дополнительные свойства связи: «Имя» (произвольное имя связи) и «РежимИзмененияСвязанногоЗначения» — определяет, что делать с уже введённым значением договора при смене контрагента: очищать, оставлять или не изменять. Для большинства случаев подходит очистка, чтобы не оставалось противоречивых пар значений.

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

Программная установка связи

Иногда связь нужно добавить динамически — например, для реквизита, созданного в расширении, или когда состав связей зависит от настроек. В этом случае используется объект СвязьПараметраВыбора, который добавляется в коллекцию СвязиПараметровВыбора элемента формы в обработчике «ПриСозданииНаСервере».

НоваяСвязь = Новый СвязьПараметраВыбора(

"Отбор.Владелец",

"Элементы.Товары.ТекущиеДанные.Номенклатура",

РежимИзмененияСвязанногоЗначения.Очищать);

Элементы.ТоварыХарактеристика.СвязиПараметровВыбора.Добавить(НоваяСвязь);

Обратите внимание на второй параметр: для табличной части путь к данным указывается через Элементы.ИмяТаблицы.ТекущиеДанные.ИмяРеквизита, чтобы связь брала значение из текущей строки, а не из шапки документа. Это частая причина неработающей фильтрации в табличных частях.

Как проверить, что связь работает

Проверка выполняется в пользовательском режиме без каких-либо инструментов разработчика. Откройте форму, заполните «главное» поле (контрагента), затем нажмите кнопку выбора в связанном поле (договор). Список должен открыться с установленным отбором — обычно это видно по включённому фильтру в шапке списка выбора.

Второй тест — смена главного значения. Если выбрать другого контрагента, ранее введённый договор должен очиститься (при режиме «Очищать»). Если договор остался от прежнего контрагента — либо режим изменения настроен иначе, либо связь не работает.

Третья проверка — ввод по строке. Начните вводить наименование договора в поле: автоподбор тоже должен учитывать связь и предлагать только подходящие значения. Если автоподбор игнорирует отбор, проверьте, не переопределён ли список выбора в обработчиках «НачалоВыбора» или «АвтоПодбор».

Контрольные точки

Как проверить результат

Открытие списка выбора
Норма

Список открывается с отбором по связанному полю

Тревожный признак

Показываются все элементы справочника без фильтра

Смена значения в главном поле
Норма

Связанное поле очищается или обновляется

Тревожный признак

Старое значение остаётся и противоречит новому

Ввод по строке
Норма

Автоподбор предлагает только подходящие элементы

Тревожный признак

Подбираются значения из всего справочника

Типичные ошибки и ограничения

Самая распространённая ошибка — неверный путь к данным в связи. Если вместо Объект.Контрагент указать несуществующий реквизит или забыть префикс «Объект.», связь молча не сработает: платформа не выдаст ошибку, просто отбор не применится. Поэтому после настройки связь обязательно проверяют в пользовательском режиме.

Вторая группа проблем — конфликт с программными обработчиками. Если в событии «НачалоВыбора» поля программно открывается форма выбора с собственным отбором, связь параметров выбора может быть проигнорирована. Приоритет имеет код. То же относится к обработчику «ОбработкаВыбора» — в нём можно подставить значение, не проходящее фильтр.

Ограничение механизма: связь фильтрует только интерактивный выбор в форме. При программном заполнении объекта, обмене данными или загрузке из файла значения не проверяются связью — в базу могут попасть несогласованные пары «контрагент — чужой договор». Для контроля таких случаев нужна проверка в обработчике «ОбработкаПроверкиЗаполнения» или регламентный отчёт-контроль.

Типичные ошибки
01
Указан путь к данным без префикса «Объект.» — связь молча не работает
02
В табличной части путь указан к реквизиту шапки вместо ТекущиеДанные строки
03
Режим изменения оставлен «Не изменять» — в документе остаются противоречивые пары значений
04
Отбор дублируется кодом в «НачалоВыбора», который перекрывает связь
05
Ожидание, что связь проверит данные при обмене — она работает только в интерфейсе

Чем связи отличаются от параметров выбора и отборов динамического списка

Похожий по названию механизм — «Параметры выбора» поля ввода. Он задаёт фиксированные параметры (например, всегда показывать только папки или только непомеченные на удаление элементы), не зависящие от других полей. Связи параметров выбора, напротив, динамические: отбор меняется при изменении связанного значения.

Отбор динамического списка — третий смежный инструмент. Он настраивается на самой форме списка и фильтрует записи постоянно, а не только в момент выбора. Если требуется, чтобы пользователь в принципе не видел чужие данные (например, по RLS или по рабочему месту), правильнее использовать отбор списка или ограничение доступа, а не связь параметров выбора.

Сравнение механизмов фильтрации

Связи параметров выбора

Динамический отбор при выборе значения в поле по другому полю формы. Только интерфейс, не защищает данные

Параметры выбора

Статические фиксированные ограничения списка выбора, не зависят от других полей

Отбор динамического списка

Постоянная фильтрация списка на форме, действует всегда, а не только при выборе

Проверка заполнения

Контроль данных при записи объекта — единственный способ гарантировать согласованность в базе

FAQ

Почему связь параметров выбора не срабатывает, хотя всё настроено?

Чаще всего причина в неверном пути к данным: проверьте, что путь начинается с «Объект.» для реквизитов объекта или указан через «Элементы.Таблица.ТекущиеДанные.» для табличных частей. Также убедитесь, что имя реквизита отбора совпадает с именем реквизита в дочернем справочнике.

Можно ли связать поле с реквизитом другого документа?

Напрямую — нет: связь может ссылаться только на данные текущей формы (реквизиты объекта, реквизиты формы, текущую строку таблицы). Если нужное значение находится в другом объекте, его сначала помещают в реквизит формы и связывают поле с ним.

Что выбрать в свойстве «Режим изменения связанного значения»?

«Очищать» — стандартный безопасный вариант: при смене главного поля зависимое значение удаляется, и пользователь выбирает новое. «Не изменять» оставляет старое значение, что допустимо только если несогласованность данных не критична. «Проверять» помечает несоответствие, но требует дополнительной обработки.

Работают ли связи при быстром вводе без открытия списка?

Да, отбор по связи учитывается при вводе по строке и автоподборе, если эти действия не переопределены в обработчиках «АвтоПодбор» и «ОкончаниеВводаТекста». Если автоподбор игнорирует фильтр, ищите программную логику в этих событиях.

Защищают ли связи параметров выбора от ошибок в данных?

Нет. Связь — это только удобство ввода в форме. Программное заполнение, обмены и загрузки её обходят. Для гарантии согласованности данных добавьте проверку в обработчике «ОбработкаПроверкиЗаполнения» объекта.

Как добавить связь через расширение, не меняя конфигурацию?

В расширении заимствуется форма объекта, и для нужного элемента добавляется связь в палитре свойств — так же, как в конфигураторе. Либо связь создаётся программно в обработчике «ПриСозданииНаСервере» расширенной формы через объект СвязьПараметраВыбора.

Итог

Что важно запомнить

Связи параметров выбора фильтруют список значений поля по значению другого поля формы. Настраиваются в свойстве «СвязиПараметровВыбора» или программно, работают только в интерфейсе и не заменяют контроль данных при записи. После настройки обязательно проверьте отбор, очистку при смене значения и автоподбор.