Разберем ситуацию, которая часто ставит в тупик даже опытных разработчиков 1С: вы добавили новое поле в запрос системы компоновки данных (СКД), оно успешно отображается в наборе данных и выбрано в настройках, но при запуске отчета в пользовательском режиме колонка упорно не выводится. Рассмотрим причины этого поведения и пошагово пройдем по методам решения проблемы на примере работы в расширении конфигурации.
Представим, что мы работаем с отчетом в расширении (например, в конфигурации «Управление торговлей 11»). Мы изменили текст запроса, добавив в него новое поле, например, Контрагент. В консоли запросов данные выбираются корректно, однако в СКД поле отсутствует. Рассмотрим типичный текст запроса, с которым возникла сложность:
ВЫБРАТЬ
РеализацияТоваровУслугТовары.Ссылка КАК Реализация,
МАКСИМУМ(РеализацияТоваровУслугТовары.Номенклатура) КАК Номенклатура,
СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
ПОМЕСТИТЬ втДанныеОТоваре
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
СГРУППИРОВАТЬ ПО
РеализацияТоваровУслугТовары.Ссылка;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
РеализацияТоваровУслуг.Дата КАК Дата,
РеализацияТоваровУслуг.Перевозчик КАК Перевозчик,
РеализацияТоваровУслуг.Автомобиль КАК Автомобиль,
РеализацияТоваровУслуг.ПунктПогрузки КАК ПунктПогрузки,
РеализацияТоваровУслуг.ПунктРазгрузки КАК ПунктРазгрузки,
втДанныеОТоваре.Номенклатура КАК Номенклатура,
втДанныеОТоваре.Количество КАК Количество,
РеализацияТоваровУслуг.ТСЛ_Водитель КАК Водитель,
РеализацияТоваровУслуг.Контрагент КАК Контрагент
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ втДанныеОТоваре КАК втДанныеОТоваре
ПО (втДанныеОТоваре.Реализация = РеализацияТоваровУслуг.Ссылка)
ГДЕ
РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
Несмотря на то, что поле Контрагент явно указано во втором запросе и добавлено в список выбранных полей настроек СКД, оно может не появиться в итоговой таблице. Проанализируем основные причины по порядку — от простых к сложным.
Это наиболее вероятная причина для конфигураций на базе 1С:ERP, КА 2 или УТ 11. В этих системах многие реквизиты объектов «привязаны» к функциональным опциям. Если опция выключена, платформа считает, что данный функционал не используется, и скрывает поле из интерфейса и отчетов.
Важно понимать: Консоль запросов выполняет прямой SQL-запрос к базе данных и игнорирует настройки функциональных опций. Именно поэтому в консоли вы видите данные, а в СКД — нет. СКД является частью метаданных и подчиняется логике интерфейса. Если реквизит Контрагент в документе связан с ФО, которая в данный момент отключена (например, включен режим работы только с партнерами), СКД автоматически исключит это поле из доступных на лету.
Проверьте в конфигураторе свойство «Функциональные опции» у конкретного реквизита. Если они есть, убедитесь, что соответствующие константы в пользовательском режиме включены.
При работе в расширении часто возникают ситуации, когда изменения не «подхватываются» платформой сразу. Проанализируем следующие моменты:
Контрагенты и сам реквизит Контрагент документа РеализацияТоваровУслуг добавлены в расширение. Без этого СКД в контексте расширения может не увидеть метаданные поля.ОбновитьВспомогательныеДанные или перезапустить сеанс с параметром /ЗапуститьОбновлениеИнформационнойБазы, чтобы система перестроила кэш метаданных для прав доступа и функциональных опций.Стандартная кнопка «Установить стандартные настройки» в интерфейсе отчета сбрасывает только видимые настройки компоновщика. Однако настройки колонок (ширина, видимость, порядок) могут «зависнуть» в системном хранилище (SystemSettingsStorage). Для автоматического выявления и очистки таких проблемных настроек можно использовать обработку для проверки несуществующих полей в настройках СКД.
Рассмотрим порядок действий для полной очистки:
Только после этого платформа принудительно прочитает структуру настроек из вашей новой схемы СКД.
Проанализируем закладку «Наборы данных» в схеме компоновки. Найдите ваше новое поле в таблице и посмотрите на колонки ограничений:
Даже если у пользователя есть «Полные права», в современных конфигурациях механизмы RLS (Row Level Security) могут накладывать ограничения через расширения. Если справочник Контрагенты не включен в роли расширения или права на чтение этого объекта ограничены условиями, СКД может просто не выводить данные. Проверьте роли, добавленные именно в расширение, и убедитесь, что в них разрешено чтение для нужных объектов.
Выясним, не используется ли в отчете фиксированный макет. Перейдите на закладку Макеты в схеме СКД. Если там создан ручной макет оформления (например, для детальных записей или группировок), то простое добавление поля в «Выбранные поля» не даст результата. Вам необходимо вручную добавить новую ячейку в область макета, прописать в ней параметр и связать его с вашим полем Контрагент. Разобраться в тонкостях реализации таких доработок поможет руководство по созданию собственных макетов в СКД на примере УТ 11.5.
В конфигурациях «Управление торговлей», «ERP» и «Комплексная автоматизация» используется разделение на Партнеров (управленческий учет) и Контрагентов (юридические лица). Очень часто реквизит Контрагент программно скрыт и не заполняется, если в настройках программы включено использование партнеров. В этом случае в запросах следует использовать поле Партнер.
Если вы все же решили использовать Контрагент, убедитесь, что он заполнен в документах. Если поле в базе содержит NULL, а в СКД стоит флаг «Игнорировать NULL» или настроено условное оформление, скрывающее пустые значения, колонка также может пропасть из итогового вывода.
Подводя итог, если поле не появляется, первым делом проверьте Функциональные опции и Системное хранилище настроек. В 90% случаев проблема кроется именно в этих механизмах, которые работают «поверх» вашего текста запроса.