Разработчики 1С часто сталкиваются с ситуацией, когда запрос в консоли выдает все необходимые данные, но при запуске отчета на базе Системы компоновки данных (СКД) одна или несколько колонок бесследно исчезают. Особенно часто это случается с полями типа Булево, такими как «Обособленно», «Отменено» или пользовательскими реквизитами. Проблема может проявляться как в полном отсутствии поля в настройках, так и в ошибке «Поле не найдено», хотя в конфигураторе оно добавлено.
Давайте вместе разберем причины этого поведения и найдем пошаговые решения, которые помогут восстановить отображение данных.
Проанализируем работу системы в типовых конфигурациях (УТ 11, ERP, КА). Многие реквизиты документов привязаны к функциональным опциям (ФО). Если в настройках программы отключена какая-либо возможность (например, «Обособленное обеспечение»), то платформа автоматически скрывает связанные с ней поля везде: в формах, в списках и в отчетах СКД.
Рассмотрим, что нужно проверить:
Обособленно) к какой-либо функциональной опции в дереве метаданных.Иногда причина кроется в настройках самого набора данных внутри схемы (в том числе когда действует правило СКД: нет данных — нет столбцов). Перейдем на закладку «Наборы данных» и внимательно изучим таблицу полей. Разберем важные колонки:
Посмотрим на пример правильного оформления секции выбора в тексте запроса при отключенном автозаполнении:
ВЫБРАТЬ
Заказ.Ссылка КАК Ссылка,
Заказ.Обособленно КАК Обособленно
{ВЫБРАТЬ
Ссылка.*,
Обособленно}
ИЗ
Документ.ЗаказКлиента КАК Заказ
Часто проблема возникает из-за того, что КомпоновщикНастроек, инициализированный в форме отчета, «запоминает» старую структуру схемы. Если вы сначала создали отчет, открыли его в режиме предприятия, а потом добавили новое поле в конфигураторе — форма может продолжать использовать старый кэш настроек.
Рассмотрим способы исправления:
Выясним причину через быструю проверку прав. Даже если вы работаете под администратором, СКД может накладывать ограничения, если поле ограничено на уровне прав доступа к реквизиту (право «Просмотр»).
Проанализируем ситуацию: консоль запросов часто игнорирует некоторые проверки прав, которые СКД выполняет принудительно. Убедитесь, что для роли пользователя (или в расширении, если поле добавлено там) установлены флаги «Чтение» и «Просмотр» для конкретного реквизита.
Иногда СКД скрывает поля, если не может однозначно определить их тип, или если поле всегда принимает значение NULL (например, при левом соединении). Для булевых полей полезно явно указать тип в запросе, чтобы система не считала его составным или неопределенным.
Попробуем применить функцию ЕСТЬNULL или конструкцию ВЫБОР:
ВЫБРАТЬ
ВЫБОР
КОГДА ЗаказКлиентаТовары.Обособленно ЕСТЬ NULL ТОГДА ЛОЖЬ
ИНАЧЕ ЗаказКлиентаТовары.Обособленно
КОНЕЦ КАК ОбособленноПоле
ИЗ
Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
Как показывает практика (и опыт участников обсуждения), если все вышеперечисленные методы не помогают, в файле отчета (или в базе данных) мог накопиться «мусорный» кэш. В этом случае помогает создание абсолютно нового объекта отчета:
Помните, что СКД — это мощный, но сложный инструмент, работа которого зависит не только от вашего запроса, но и от окружения: прав, функциональных опций и сохраненных настроек пользователя.