При разработке отчетов в 1С:Управление торговлей 11.5 программисты часто сталкиваются с ситуацией, когда запрос в консоли отрабатывает корректно и выводит все необходимые данные, но в итоговом отчете на базе Системы компоновки данных (СКД) одно или несколько полей (обычно ресурсы, такие как СуммаБезНДС) бесследно исчезают. Эта проблема особенно характерна для регистра накопления ПрочиеРасходы.
Рассмотрим подробнее причины этого поведения и разберем по шагам методы восстановления видимости полей. Проблема может крыться как в настройках самого отчета, так и в глубоких механизмах конфигурации, таких как функциональные опции или система прав доступа.
Проанализируем архитектуру УТ 11.5. В этой конфигурации многие ресурсы регистров жестко привязаны к функциональным опциям. Если определенная опция выключена в интерфейсе «1С:Предприятие», платформа автоматически «вырезает» связанное с ней поле из всех запросов СКД, даже если оно явно прописано в тексте запроса в Конфигураторе.
Выясним причину на примере поля СуммаБезНДС. В последних версиях УТ это поле часто зависит от использования раздельного учета НДС. Если предприятие не использует раздельный учет, система считает это поле избыточным и скрывает его.
Что необходимо сделать:
ПрочиеРасходы.СуммаБезНДС).ИспользоватьРаздельныйУчетНДС, значит, поле появится в отчете только тогда, когда эта опция включена в режиме пользователя.Для проверки в режиме «1С:Предприятие» перейдем в раздел НСИ и администрирование -> Настройка НСИ и разделов -> Финансовый результат и контроллинг -> НДС и убедимся, что необходимые флаги установлены.
Разберем технический нюанс настройки закладки «Ресурсы» в схеме компоновки данных. Бывает так, что программист добавил поле в список ресурсов и даже прописал выражение Сумма(СуммаБезНДС), но поле всё равно не выводится.
Обратим внимание на колонку «Рассчитать по...». Если в этой колонке не стоят галочки (или не выбрано значение «Все»), СКД может не понимать, в каких именно группировках нужно выводить это значение. Посмотрим на ситуацию: если вы строите отчет с иерархией или сложными группировками, отсутствие флага в этой колонке для конкретной группировки приведет к пустоте в соответствующей колонке отчета.
Попробуем установить флаги во всех строках колонки «Рассчитать по» для проблемного ресурса. Это гарантирует, что система попытается вычислить итог на каждом уровне группировки отчета.
Проанализируем закладку «Наборы данных». В таблице полей набора данных есть колонки, отвечающие за ограничения. Проверьте следующие флаги для вашего поля:
Также проверим Тип значения. Если тип поля не определен или определен некорректно (например, Число(0)), СКД может проигнорировать вывод данных.
Часто встречается ситуация: программист внес изменения в Конфигураторе, сохранил отчет, но в режиме «1С:Предприятие» ничего не изменилось. Выясним причину — скорее всего, дело в сохраненных настройках пользователя.
Платформа 1С сохраняет настройки отчета (состав колонок, отборы, порядок) для каждого пользователя индивидуально. Ваши изменения в СКД могут «перекрываться» старыми настройками, которые хранятся в базе данных.
Как решить проблему с кэшем:
Проанализируем ситуацию со стороны безопасности. Даже если вы работаете под учетной записью с «Полными правами», механизмы RLS (Record Level Security) могут накладывать свои ограничения, особенно в сложных конфигурациях типа УТ 11.5.
Если поле является частью реквизитов другого объекта (например, через точку от Регистратора), убедитесь, что у пользователя есть права на просмотр всех возможных типов документов-регистраторов. Если хотя бы на один тип документа прав нет, платформа может заблокировать доступ ко всей цепочке связанных полей в запросе.
Иногда полезно программно проверить, какие ресурсы доступны в схеме. Рассмотрим пример того, как можно программно обратиться к настройкам компоновки, чтобы убедиться, что поле включено в выбранные поля:
// Пример проверки программного добавления поля в выборку
Настройки = Отчет.КомпоновщикНастроек.Настройки;
ВыбранныеПоля = Настройки.Выбор.Элементы;
// Проверим, нет ли уже такого поля в выбранных
ПолеНайдено = Ложь;
Для Каждого Элемент Из ВыбранныеПоля Цикл
Если ТипЗнч(Элемент) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
Если Строка(Элемент.Поле) = "СуммаБезНДСПриход" Тогда
ПолеНайдено = Истина;
Элемент.Использование = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Не ПолеНайдено Тогда
НовоеПоле = ВыбранныеПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("СуммаБезНДСПриход");
НовоеПоле.Использование = Истина;
КонецЕсли;
Подводя итог, если поле в отчете СКД 1С:УТ 11.5 не отображается, пройдите по следующему чек-листу:
Следуя этой методике, мы сможем локализовать проблему и вернуть недостающие данные в отчеты ваших пользователей.