Ситуация, когда программист составляет запрос, видит данные в консоли запросов, но не обнаруживает нужной колонки в готовом отчете СКД, является одной из самых распространенных и в то же время коварных в разработке на платформе 1С:Предприятие 8.3. Особенно часто это случается с системными полями, такими как Склад, Организация или Подразделение. Давайте подробно разберем, по каким причинам поле может «исчезать» из компоновки, и как последовательно диагностировать проблему.
Разберем ситуацию, которая часто встречается в типовых конфигурациях (УНФ, ERP, КА). Платформа 1С имеет механизм Функциональных опций. Если поле (например, Склад) привязано к определенной опции, и эта опция выключена в настройках самой программы (в режиме «1С:Предприятие»), то поле будет полностью исключено из всех механизмов системы, включая Систему компоновки данных.
Проанализируем алгоритм проверки:
РегистрНакопления.ЗаказыКлиентов.Измерение.Склад).УчетПотребностиПоСкладам), это означает, что видимость поля управляется настройкой константы.Важно помнить: консоль запросов часто игнорирует функциональные опции и показывает данные напрямую из таблиц СУБД, в то время как СКД строго подчиняется логике метаданных.
Если функциональные опции включены, а поля все равно нет, стоит проверить права доступа. В СКД по умолчанию используется механизм ВЫБРАТЬ РАЗРЕШЕННЫЕ. Это означает, что если у пользователя нет прав на просмотр конкретного справочника (например, Справочник.Склады) или настроены ограничения на уровне записей (RLS), СКД просто «молча» исключит это поле или целые строки из результата.
Рассмотрим пример запроса, который может вызывать затруднения при наличии ограничений RLS:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЗаказыКлиентовОбороты.Склад КАК Склад,
ЗаказыКлиентовОбороты.Номенклатура КАК Номенклатура,
СУММА(ЗаказыКлиентовОбороты.ЗаказаноПриход) КАК Заказано
ИЗ
РегистрНакопления.ЗаказыКлиентов.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК ЗаказыКлиентовОбороты
СГРУППИРОВАТЬ ПО
ЗаказыКлиентовОбороты.Склад,
ЗаказыКлиентовОбороты.Номенклатура
Проанализируем ситуацию: если в базе настроен RLS по складам, и текущему пользователю запрещен доступ к конкретному складу, то поле Склад может стать пустым или вся строка исчезнет из отчета. Выясним причину, попробовав сформировать отчет под пользователем с Полными правами. Если под полными правами поле появилось — проблема в ролях или RLS.
Посмотрим на настройки внутри самой Схемы компоновки данных. Перейдем на закладку «Наборы данных». Здесь есть два важных момента, которые могут блокировать вывод поля:
Иногда причина кроется не в коде, а в кэшированных настройках пользователя. Платформа 1С сохраняет вариант отчета, который пользователь настраивал в последний раз. Если вы добавили поле в конфигураторе, но пользователь уже открывал этот отчет ранее, его «старый» вариант настроек может перекрывать новый состав полей.
Выполним следующие шаги для исправления:
Это действие принудительно обновит структуру отчета до той, которая прописана в конфигураторе, игнорируя сохраненный в базе данных кэш настроек.
Разберем технический нюанс, связанный с левыми соединениями. Рассмотрим пример запроса из практики разработчиков:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВТ_Заказы.Склад КАК Склад,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК НаСкладе
ИЗ
ВТ_Заказы КАК ВТ_Заказы
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки
ПО
ВТ_Заказы.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
И ВТ_Заказы.Склад = ТоварыНаСкладахОстатки.Склад
Если в таблице остатков нет записи по данному складу, результатом соединения будет NULL. В некоторых случаях СКД может скрывать поля с неопределенными значениями или группировки по ним, если в настройках установлен отбор «Склад Заполнено». Также проверим тип поля Склад в наборе данных — иногда полезно явно указать тип (например, СправочникСсылка.Склады), чтобы система однозначно понимала, как обрабатывать данные.
Проанализируем вкладку «Настройки» в СКД. Убедимся, что поле добавлено в список «Выбранные поля» не только для всего отчета, но и для конкретных группировок. Если вы добавили поле в общие настройки отчета, но используете структуру с детальными записями, проверьте, наследует ли группировка «Детальные записи» выбранные поля отчета. Часто стоит зайти в настройки конкретной группировки и проверить флажок «Автополе».
Подводя итог, если поле Склад (или любое другое) присутствует в запросе, но отсутствует в отчете, ваша диагностика должна идти по пути: Настройки программы (Функциональные опции) -> Права доступа (RLS) -> Параметры набора данных СКД -> Сброс настроек пользователя. В 99% случаев проблема решается на одном из этих этапов.