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

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

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

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

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

Если визуальные свойства формы чисты, первым делом рассмотрим программный код, который может скрыто фильтровать данные. Автор оригинального вопроса в итоге обнаружил именно программную установку отбора.

Посмотрим на свойство динамического списка ФиксированныеНастройки. В отличие от обычных отборов, фиксированные настройки не отображаются у пользователя в окне "Настройка списка", и пользователь не может их отключить. Проверьте весь код модуля формы на наличие подобных конструкций:


// Пример программной установки фиксированного отбора
ЭлементОтбора = Список.ФиксированныеНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Перечисления.СтатусыКонтрагентов.Активен;
ЭлементОтбора.Использование = Истина;

Если такой код срабатывает при открытии формы, а в базе нет элементов с нужным статусом, вы увидите пустой список.

Событие ОбработкаПолученияДанныхВыбора в модуле менеджера

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

Рассмотрим, что там может происходить. В этом обработчике разработчики часто реализуют сложную логику автоподбора. Если в коде очищается коллекция ДанныеВыбора или устанавливается флаг СтандартнаяОбработка = Ложь без последующего корректного формирования списка, система просто не сможет показать данные.


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    // Если здесь есть ошибки в запросе или жесткие фильтры,
    // список выбора окажется пустым.
    СтандартнаяОбработка = Ложь;
    // ... логика получения данных ...
КонецПроцедуры

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

Перейдем к свойствам самого реквизита объекта (например, реквизита документа, куда вы пытаетесь выбрать значение). Это одна из самых частых и "невидимых" причин.

  1. Связи параметров выбора: Проверьте свойство СвязиПараметровВыбора. Оно используется для зависимых данных. Например, если вы выбираете договор, а в связях указан отбор по реквизиту Контрагент. Если поле контрагента на форме документа не заполнено (пустое), платформа попытается найти договоры, у которых владелец тоже пустой. Результат — пустой список.
  2. Параметры выбора: Посмотрите свойство ПараметрыВыбора. В нем могут быть жестко прописаны статические фильтры на уровне метаданных. Если там стоит условие, под которое не попадает ни один элемент в базе (например, фильтр по определенной группе или признаку), список будет пуст.

Права доступа и RLS (Record Level Security)

Даже если вы работаете под пользователем с полными правами, не стоит исключать влияние прав доступа. Разберем этот аспект.

Проанализируем профиль пользователя и роли. Если на справочник настроены ограничения доступа на уровне записей (RLS), и текущий пользователь (или роль "Полные права", если RLS применяется и к ней) не проходит по условиям этих ограничений, платформа скроет записи. Визуально справочник будет казаться пустым.

Чтобы проверить эту гипотезу, откройте конфигуратор, найдите справочник, перейдите на вкладку "Права", выберите вашу роль и проверьте наличие шаблонов ограничений для права "Чтение".

Влияние функциональных опций (ФО)

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

Как это проверить? Выполните поиск ссылок на данный справочник в дереве метаданных конфигуратора. Посмотрите, не включен ли он в состав какой-либо функциональной опции. Если да, перейдите в режим предприятия и проверьте, активирована ли соответствующая константа или настройка.

Настройки динамического списка и основная таблица

Разберем саму форму выбора и ее основной реквизит — динамический список. Откройте произвольный запрос этого списка.

Что там нужно искать?

  1. Основная таблица: Убедитесь, что в свойствах динамического списка задана "Основная таблица". Если она не задана, а запрос сложный, платформа может некорректно обрабатывать автоматические отборы.
  2. Внутренние соединения: Если в запросе используются соединения (особенно ВНУТРЕННЕЕ СОЕДИНЕНИЕ) с другими таблицами, и в этих связанных таблицах нет соответствующих записей, то основная запись справочника также не попадет в результат выборки.
  3. Пользовательские настройки: В пользовательском режиме перейдите в меню "Еще" -> "Настроить список". Пользователь мог случайно установить сложный отбор (например, по пустому наименованию) и сохранить настройки формы. Сбросьте настройки формы к стандартным.

Особенности подчиненных справочников (Отбор по владельцу)

Если проблемный справочник является подчиненным (имеет владельца), платформа 1С автоматически попытается установить отбор по владельцу при открытии формы выбора.

Проанализируем логику вызова: если при нажатии на кнопку выбора система не смогла определить контекстного владельца (например, реквизит-владелец на форме пуст или связи параметров не настроены корректно), отбор по владельцу будет установлен по пустой ссылке. Итог закономерен — список отобразится без единой строки.

Разделение данных (SaaS) и кэш платформы

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

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

В этом случае закройте сеанс предприятия, очистите локальный кэш конфигурации (удалите папки в каталогах AppData\Local\1C\1cv8 и AppData\Roaming\1C\1cv8) и запустите базу заново.

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

← На главную