Проанализируем классическую и весьма распространенную ситуацию при разработке в 1С: вы пытаетесь выбрать элемент справочника в документе или другой форме, открывается форма выбора, но список абсолютно пуст. При этом вы точно знаете, что физически элементы в справочнике существуют, и база не пустая. Вы проверили свойство реквизита ПараметрыОтбора, заглянули в обработчик ПриСозданииНаСервере формы выбора, но ничего подозрительного там не обнаружили.
Давайте разберем по шагам все возможные причины такого поведения платформы и выясним, где еще могут скрываться настройки, фильтры и ограничения, которые приводят к отображению пустого списка. Для быстрой диагностики параметров открытой формы непосредственно в режиме предприятия можно использовать инструмент для редактирования свойств форм и элементов.
Если визуальные свойства формы чисты, первым делом рассмотрим программный код, который может скрыто фильтровать данные. Автор оригинального вопроса в итоге обнаружил именно программную установку отбора.
Посмотрим на свойство динамического списка ФиксированныеНастройки. В отличие от обычных отборов, фиксированные настройки не отображаются у пользователя в окне "Настройка списка", и пользователь не может их отключить. Проверьте весь код модуля формы на наличие подобных конструкций:
// Пример программной установки фиксированного отбора
ЭлементОтбора = Список.ФиксированныеНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Перечисления.СтатусыКонтрагентов.Активен;
ЭлементОтбора.Использование = Истина;
Если такой код срабатывает при открытии формы, а в базе нет элементов с нужным статусом, вы увидите пустой список.
Обязательно загляните в модуль менеджера проблемного справочника. Найдите там предопределенную процедуру ОбработкаПолученияДанныхВыбора. Это событие срабатывает до открытия формы выбора и формирования списка.
Рассмотрим, что там может происходить. В этом обработчике разработчики часто реализуют сложную логику автоподбора. Если в коде очищается коллекция ДанныеВыбора или устанавливается флаг СтандартнаяОбработка = Ложь без последующего корректного формирования списка, система просто не сможет показать данные.
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
// Если здесь есть ошибки в запросе или жесткие фильтры,
// список выбора окажется пустым.
СтандартнаяОбработка = Ложь;
// ... логика получения данных ...
КонецПроцедуры
Перейдем к свойствам самого реквизита объекта (например, реквизита документа, куда вы пытаетесь выбрать значение). Это одна из самых частых и "невидимых" причин.
СвязиПараметровВыбора. Оно используется для зависимых данных. Например, если вы выбираете договор, а в связях указан отбор по реквизиту Контрагент. Если поле контрагента на форме документа не заполнено (пустое), платформа попытается найти договоры, у которых владелец тоже пустой. Результат — пустой список.ПараметрыВыбора. В нем могут быть жестко прописаны статические фильтры на уровне метаданных. Если там стоит условие, под которое не попадает ни один элемент в базе (например, фильтр по определенной группе или признаку), список будет пуст.Даже если вы работаете под пользователем с полными правами, не стоит исключать влияние прав доступа. Разберем этот аспект.
Проанализируем профиль пользователя и роли. Если на справочник настроены ограничения доступа на уровне записей (RLS), и текущий пользователь (или роль "Полные права", если RLS применяется и к ней) не проходит по условиям этих ограничений, платформа скроет записи. Визуально справочник будет казаться пустым.
Чтобы проверить эту гипотезу, откройте конфигуратор, найдите справочник, перейдите на вкладку "Права", выберите вашу роль и проверьте наличие шаблонов ограничений для права "Чтение".
Функциональные опции — мощный механизм управления интерфейсом и логикой конфигурации. Если справочник (или его ключевые реквизиты) привязан к определенной функциональной опции, а сама эта опция в информационной базе выключена, платформа полностью скроет данные этого справочника в пользовательском режиме.
Как это проверить? Выполните поиск ссылок на данный справочник в дереве метаданных конфигуратора. Посмотрите, не включен ли он в состав какой-либо функциональной опции. Если да, перейдите в режим предприятия и проверьте, активирована ли соответствующая константа или настройка.
Разберем саму форму выбора и ее основной реквизит — динамический список. Откройте произвольный запрос этого списка.
Что там нужно искать?
ВНУТРЕННЕЕ СОЕДИНЕНИЕ) с другими таблицами, и в этих связанных таблицах нет соответствующих записей, то основная запись справочника также не попадет в результат выборки.Если проблемный справочник является подчиненным (имеет владельца), платформа 1С автоматически попытается установить отбор по владельцу при открытии формы выбора.
Проанализируем логику вызова: если при нажатии на кнопку выбора система не смогла определить контекстного владельца (например, реквизит-владелец на форме пуст или связи параметров не настроены корректно), отбор по владельцу будет установлен по пустой ссылке. Итог закономерен — список отобразится без единой строки.
Если ваша конфигурация работает в режиме разделения данных (мультиарендность, облачный режим), учитывайте область данных. Справочник может быть заполнен сотнями элементов в одной области (для одного клиента), но быть абсолютно пустым в текущей области данных.
Наконец, если вы проверили абсолютно все вышеописанные пункты, код чист, отборов нет, RLS отключен, а список все равно пуст — вспомните про кэш 1С. В процессе интенсивной разработки метаданные форм могут закешироваться некорректно.
В этом случае закройте сеанс предприятия, очистите локальный кэш конфигурации (удалите папки в каталогах AppData\Local\1C\1cv8 и AppData\Roaming\1C\1cv8) и запустите базу заново.
Используя этот чек-лист, вы сможете методично исключить все возможные причины и гарантированно найти источник проблемы с пустым списком выбора в управляемых формах 1С.