Почему не отображается отбор СКД на форме отчета и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

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

Причина 1: Кэширование пользовательских настроек

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

Рассмотрим, как принудительно обновить эти настройки:

  1. Ручной сброс: В режиме «1С:Предприятие» зайдите в меню Все действия (или «Еще») — Установить стандартные настройки. В некоторых случаях помогает кнопка Изменить вариантЕщеЗагрузить стандартные настройки.
  2. Программный метод: Если отчет разрабатывается для массового использования, можно добавить проверку при открытии формы. Если пользовательские настройки пусты или не актуальны, принудительно устанавливать стандартные.
  3. Обновление через ИБ: В крупных конфигурациях (УТ 11, ERP, КА) информация о вариантах отчетов хранится в специальном справочнике. Попробуйте запустить базу с параметром: /С ЗапуститьОбновлениеИнформационнойБазы. Это заставит систему перечитать метаданные и обновить кэш вариантов отчетов.

Причина 2: Проблемы с типизацией полей и псевдонимами в запросе

Иногда система компоновки данных не может корректно определить тип поля, из-за чего «боится» выводить его в быстрые отборы. Это часто случается, если поле получается в результате соединения таблиц или выбора из составного типа данных.

Проанализируем ситуацию с псевдонимами. Как показывает практика, использование стандартных имен (например, Контрагент) в самописных запросах иногда конфликтует с внутренними механизмами БСП. Попробуем изменить подход в запросе СКД:

  1. Вместо простого выбора поля используйте явное приведение типов:
    
    ВЫБРАТЬ
        ВЫРАЗИТЬ(Таблица.СсылкаНаОбъект КАК Справочник.Партнеры) КАК Клиент
    ИЗ
        ...
    
  2. Замените псевдоним поля на уникальный. Например, если отбор по полю Контрагент не отображается, попробуйте назвать его Клиент или ПартнерОтчета. После этого обязательно обновите настройки в самой схеме СКД (удалите старый отбор и добавьте новый по переименованному полю).

Причина 3: Особенности настроек в конструкторе СКД

Разберем тонкий момент в настройках самого отбора на вкладке НастройкиОтбор. Посмотрите на колонку Правое значение. В некоторых версиях платформы и при использовании определенных наборов данных (особенно «Объект»), отбор не появляется, пока вы не укажете тип этого значения.

Выполните следующие шаги:

  1. Откройте схему СКД, перейдите на вкладку Настройки.
  2. Найдите ваш отбор в списке.
  3. В колонке Правое значение выберите тип данных Предопределенное значение компоновки данных или просто жестко задайте тип, соответствующий полю.
  4. Убедитесь, что в свойствах элемента пользовательских настроек (кнопка с изображением «солнышка» или шестеренки рядом с отбором) выбран режим редактирования Быстрый доступ или Обычный. Если стоит Недоступный, поле не отобразится.

Причина 4: Права доступа и механизм RLS

Если у администратора отбор виден, а у рядового пользователя — нет, проблема кроется в правах доступа. Важно понимать, что СКД автоматически скрывает поля, на которые у пользователя нет прав Просмотр или Чтение — для диагностики пригодится отчет для анализа прав доступа и RLS.

Проанализируем права:

Причина 5: Влияние Функциональных опций

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

Проверьте:

Итоговые рекомендации

Рассмотрим краткий чек-лист, если отбор так и не появился:

  1. Переименуйте поле в запросе и заново добавьте его в настройки.
  2. Используйте ВЫРАЗИТЬ для всех ссылочных полей в запросе.
  3. Сбросьте настройки варианта отчета через «Установить стандартные настройки».
  4. Проверьте флаг «Включать в пользовательские настройки» и режим «Быстрый доступ».
  5. Проверьте права доступа пользователя к объектам, участвующим в формировании этого поля.

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

← На главную