Когда параметры выбора в 1С не работают, сначала определите ожидаемое поведение: какое поле задаёт условие и какие значения должны остаться в подчинённом списке. Затем проверьте соответствие имён в настройке, наличие нужного отбора у источника данных и обновление формы после изменения ведущего поля. Без этой последовательности одинаковый симптом может ошибочно восприниматься как одна неисправность.
Как устроено ограничение доступных значений
Параметр выбора передаёт форме подбора дополнительное условие. Например, значение одного реквизита документа может определять, какие элементы разрешено показывать при заполнении другого реквизита. Само условие не изменяет данные справочника и не исправляет уже записанное значение: оно влияет именно на очередной выбор пользователя.
Связь параметров выбора нужна, когда условие берётся не из постоянной настройки, а из другого реквизита формы. В такой конструкции есть ведущая часть — источник значения — и зависимое поле, для которого открывается список. Если путь к источнику указан неверно или источник ещё не заполнен, ограничение либо не применяется, либо получает пустое значение.
Важно различать форму выбора, выпадающий список и программно сформированный перечень. Внешне они могут выглядеть похоже, но получать данные разными способами. Настройка, действующая для стандартной формы справочника, не обязана влиять на список, который разработчик полностью заполняет в коде.
Проверка имён и путей к реквизитам
Начните с точного сопоставления параметра с тем полем, которое понимает форма выбора. Имя должно соответствовать реквизиту или параметру, реально используемому в отборе. Похожее название, представление поля на экране или синоним метаданных не заменяют его внутреннее имя.
- Откройте свойства зависимого элемента формы и найдите параметры выбора и их связи.
- Проверьте левую часть настройки: она должна обозначать параметр, принимаемый источником списка.
- Проверьте правую часть: путь должен вести к существующему реквизиту формы или данным объекта.
- Убедитесь, что по этому пути находится значение подходящего типа, а не строковое представление или ссылка другого справочника.
- Сравните регистр, вложенность и написание составных путей, если конфигурация различает такие обращения.
Особенно внимательно проверяйте табличные части. Значение текущей строки и реквизит документа находятся в разных контекстах. Ссылка на колонку без привязки к текущим данным строки может быть корректной по виду, но не давать нужное условие во время открытия списка.
Почему связь есть, а отбор не появляется
Если 1С показывает полный список, установите, принимает ли открываемая форма переданный параметр. Наличие записи в свойствах поля означает лишь попытку передачи. На стороне формы или динамического списка должен существовать отбор, который использует это значение. Неиспользуемый параметр не ограничит результат сам по себе.
Проверьте также тип сравниваемых данных. Ссылка на группу, элемент, организацию или владельца должна соответствовать тому реквизиту, по которому выполняется отбор. При составном типе полезно установить фактический тип значения непосредственно перед открытием выбора. Пустая ссылка и неопределённое значение тоже могут обрабатываться источником по-разному.
Ещё одна причина — собственный обработчик начала выбора. Он может открыть другую форму, заменить стандартную обработку или подготовить отдельный список значений. Тогда параметры из свойств элемента не обязательно попадут в созданный разработчиком сценарий. Проверять нужно фактически выполняемый обработчик, а не только визуальную настройку формы.
Обновление после изменения ведущего поля
Распространённая ситуация: пользователь сначала открывает зависимое поле, затем меняет ведущий реквизит, но 1С продолжает показывать прежний набор. Это указывает не на неправильный параметр, а на несвоевременное обновление. Значение связи должно считываться после изменения источника, а кэшированный или ранее сформированный список — пересоздаваться.
В обработчике изменения ведущего реквизита проверьте последовательность действий. Сначала новое значение должно попасть в данные формы, затем следует очистить или проверить зависимое значение, после чего обновить связанный элемент. Если зависимое поле уже содержит вариант, недопустимый при новом условии, его нельзя молча оставлять: пользователь увидит значение, которое уже отсутствует в доступном выборе.
Для диагностики меняйте ведущий реквизит дважды и каждый раз заново открывайте список. Если первый отбор работает, а второй сохраняет старые значения, ищите проблему в обновлении состояния формы.
Клиент, сервер и разные варианты формы
Одинаковая конфигурация может вести себя по-разному в обычном клиенте, веб-клиенте и при работе через опубликованную базу, если обработчики зависят от клиентского контекста. Уточните, где выполняется код, доступно ли там значение реквизита и передано ли оно на сервер до формирования списка. Не следует считать неполадкой связи ситуацию, когда сервер получает прежнее состояние формы.
Проверьте расширения и пользовательские настройки формы. Расширение может заменить обработчик, добавить собственный отбор или изменить путь к данным после обновления конфигурации. Для сравнения полезно воспроизвести операцию в стандартном варианте формы под тестовым пользователем с теми же правами. Разница укажет, где искать причину: в общей логике, настройках формы или доступе к данным.
Права пользователя также способны создать неоднозначную картину. Ограничение доступа может скрывать часть элементов независимо от параметров, но обычно не должно расширять список. Если у администратора выбор корректен, а у обычного пользователя пуст, отдельно проверьте доступность справочника, полей отбора и связанных объектов.
Порядок диагностики без случайных исправлений
Создайте минимальный воспроизводимый пример: одно ведущее поле, одно зависимое поле и несколько записей с очевидно различающимся условием. Зафиксируйте, что находится в источнике связи непосредственно перед открытием списка и какой параметр получает форма выбора. Такой пример отделяет ошибку настройки от влияния сложного документа.
| Наблюдение | Что проверять |
|---|---|
| Всегда показываются все значения | Используется ли переданный параметр в отборе |
| Список всегда пуст | Тип значения, пустую ссылку и права |
| После изменения остаётся старый список | Обработчик изменения и обновление элемента |
| Работает только у части пользователей | Права, настройки и расширения формы |
| Не работает только в строке таблицы | Контекст текущей строки и путь к колонке |
Не меняйте одновременно связь, запрос списка и обработчик формы: после такого трудно понять, какое действие помогло. Проверяйте по одному уровню, записывая фактическое значение параметра и результат отбора. Когда причина найдена, повторите сценарий с пустым ведущим полем, его заменой и повторным открытием выбора — эти случаи чаще всего выявляют незавершённое исправление.