Почему динамический список не отображается на управляемой форме в 1С:Предприятие

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

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

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


ВЫБРАТЬ
    СправочникДрайверыОборудования.Ссылка,
    СправочникДрайверыОборудования.ПометкаУдаления,
    СправочникДрайверыОборудования.Наименование,
    СправочникДрайверыОборудования.ТипОборудования,
    СправочникДрайверыОборудования.Предопределенный,
    СправочникДрайверыОборудования.СнятСПоддержки,
    СправочникДрайверыОборудования.ИмяПредопределенныхДанных,
    ВЫБОР КОГДА СправочникДрайверыОборудования.Предопределенный 
        ТОГДА "%Предопределенный%" 
        ИНАЧЕ "%Подключаемый%" 
    КОНЕЦ КАК ТипДрайвера
ИЗ
    Справочник.ДрайверыОборудования КАК СправочникДрайверыОборудования

Сам по себе запрос абсолютно корректен, однако платформа не отображает форму. Проанализируем основные причины такого поведения и пошаговые способы диагностики.

Причина 1. Механизм функциональных опций

Главная и наиболее распространенная причина скрытия элементов формы — действие механизма функциональных опций платформы 1С:Предприятие. Если функционал в информационной базе отключен, платформа полностью скрывает связанные с ним объекты метаданных и элементы интерфейса.

Разберем по шагам, где и как проверить влияние функциональных опций:

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ПараметрыФО = Новый Структура("Организация", Параметры.Организация);
    УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыФО);
КонецПроцедуры

Причина 2. Права доступа и ограничения RLS

Если функциональные опции включены, но список по-прежнему пуст, проанализируем права текущего пользователя информационной базы:

  1. Права на чтение и просмотр: Убедимся, что в назначенных пользователю ролях установлены флаги Чтение и Просмотр для самого справочника, а также для всех реквизитов, задействованных в запросе динамического списка.
  2. Видимость по ролям: В свойствах элементов управляемой формы в конфигураторе проверим свойство Видимость по ролям. Если для роли текущего пользователя снята галочка, элемент формы будет скрыт.
  3. Проверка под полными правами: Запустим сеанс под учетной записью с ролью ПолныеПрава или АдминистраторСистемы. Если форма отобразится корректно, проблема кроется в настройках прав доступа или правилах RLS.

Причина 3. Сохраненные пользовательские настройки формы

Платформа 1С:Предприятие 8.3 сохраняет персональные настройки формы для каждого пользователя. Если ранее пользователь скрыл элементы через интерфейс настройки, форма может открываться пустой.

Разберем способы сброса настроек формы:

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

ХранилищеСистемныхНастроек.Удалить("Справочник.ДрайверыОборудования.Форма.ФормаСписка/НастройкиФормы", "", ИмяПользователя());

Причина 4. Программное управление видимостью в коде формы

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Проверим, не устанавливается ли скрытие элементов программно
    Если Не ПолучитьФункционалТорговогоОборудованияВключен() Тогда
        Элементы.Список.Видимость = Ложь;
        Элементы.КоманднаяПанель.Видимость = Ложь;
    КонецЕсли;
КонецПроцедуры

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

Причина 5. Настройка свойства «Основная таблица» динамического списка

При использовании произвольного запроса в динамическом списке обратим внимание на свойство Основная таблица реквизита формы:

  1. Если свойство Основная таблица не заполнено, платформа не сможет автоматически связать стандартные команды добавления, изменения и удаления с источником данных.
  2. В результате стандартная командная панель динамического списка может оказаться полностью пустой, если на ней не было пользовательских кнопок.
  3. Укажем в качестве основной таблицы Справочник.ДрайверыОборудования в палитре свойств динамического списка, чтобы активировать стандартные действия и автоматическую генерацию кнопок.
← На главную