При разработке отчетов на базе Системы компоновки данных (СКД) программисты часто сталкиваются с ситуацией, когда новое поле добавлено в набор данных, но при формировании отчета колонка попросту не появляется на экране. Особенно часто это происходит с текстовыми полями, такими как Комментарий. В этой статье мы подробно разберем, почему так происходит, и пройдем по шагам все этапы настройки — от корректировки запроса до управления пользовательскими настройками. Для детального анализа структуры и промежуточных данных можно использовать расширение для отладки отчетов на СКД.
Поле Комментарий в большинстве документов 1С имеет тип «Строка неограниченной длины». Для СКД это создает определенные трудности. Во-первых, такие поля нельзя использовать в группировках без предварительного преобразования. Во-вторых, разработчики часто по ошибке пытаются добавить текст в ресурсы, что в корне неверно для строковых данных, не требующих агрегации.
Рассмотрим по порядку все причины и способы их устранения.
Проанализируем ситуацию с точки зрения СУБД. Поля неограниченной длины не могут быть использованы в операциях группировки. Если ваш отчет предполагает группировку по регистратору или иному объекту, содержащему комментарий, система может молча игнорировать вывод этого поля.
Чтобы избежать этой проблемы, в тексте запроса или в выражении поля набора данных нам необходимо явно ограничить длину строки. Воспользуемся функцией ВЫРАЗИТЬ. Посмотрим на пример кода в тексте запроса:
ВЫБРАТЬ
Продажи.Регистратор КАК Регистратор,
ВЫРАЗИТЬ(Продажи.Регистратор.Комментарий КАК СТРОКА(250)) КАК Комментарий,
Продажи.Количество КАК Количество
ИЗ
РегистрНакопления.Продажи КАК Продажи
Этим действием мы превращаем «бесконечную» строку в строку фиксированной длины (250 символов), с которой СКД работает гораздо стабильнее.
Выясним еще одну важную деталь. В сообщениях на форуме часто звучит вопрос: «Добавлять ли комментарий в ресурсы?». Ни в коем случае не добавляйте текстовые поля в ресурсы, если вы не планируете использовать для них специфические функции вроде Максимум или Минимум.
Если вы добавили Комментарий на закладку «Ресурсы», СКД будет пытаться рассчитать его итоги по группировкам. Для обычного вывода текста это излишне и часто приводит к тому, что в детальных записях значение пропадает. Удалите поле со вкладки «Ресурсы» и оставьте его только как обычное поле выбора.
Рассмотрим структуру отчета на вкладке «Настройки». Если вы используете только группировки (например, по Номенклатуре), то СКД выводит только те поля, которые являются полями группировки или ресурсами. Чтобы вывести комментарий конкретного документа, нам нужно правильно настроить иерархию.
Предлагаем следующий алгоритм настройки:
Регистратор, попробуем использовать Детальные записи.Комментарий добавлено в список «Выбранные поля» именно этой группировки.Контрагент), а внутри нее — Детальные записи, то Комментарий должен быть выбран на уровне детальных записей.Как вариант, можно оставить группировку по Регистратору, но в списке выбранных полей для этой группировки вручную добавить Регистратор.Комментарий.
Это самый «коварный» момент. Вы могли все настроить правильно в конфигураторе, но в режиме «1С:Предприятие» колонка по-прежнему не видна. Это происходит потому, что система сохраняет настройки варианта отчета для конкретного пользователя.
Выясним, как принудительно обновить форму отчета:
Если вы работаете на Управляемых формах (УФ), иногда помогает даже простое переименование синонима отчета или сохранение его как внешнего под другим именем. Это заставляет систему создать новый ключ уникальности настроек и перечитать структуру xml из схемы компоновки данных. Для выявления некорректных или устаревших полей в сохраненных вариантах отчетов можно использовать обработку для проверки неактуальных полей в настройках СКД.
Посмотрим на закладку «Наборы данных». Для поля Комментарий проверьте колонку Роль. Иногда СКД автоматически назначает роли, которые могут конфликтовать с логикой вывода. Если комментарий подтягивается через точку от регистратора, убедитесь, что у него не стоит флаг «Обязательное», если в системе могут существовать документы с пустыми комментариями. Если флаг стоит, а комментария нет — вся строка может пропасть из отчета.
Проанализируем ситуацию с правами. Если под администратором отчет работает корректно, а под обычным пользователем колонка пустая, проблема кроется в RLS (Restriction Level Security). Комментарий — это реквизит объекта (Документа). Если у пользователя нет прав на просмотр конкретного типа документа, который выступает регистратором, то и получить доступ к его реквизитам через точку СКД не сможет. Проверьте роли пользователя на чтение соответствующих документов.
Мы разобрали комплекс мер по восстановлению видимости колонки. Подведем итог: чтобы колонка «Комментарий» гарантированно появилась в вашем отчете, необходимо выполнить три критических условия:
- Использовать ВЫРАЗИТЬ(Комментарий КАК СТРОКА(250)) в запросе.
- Убедиться, что поле не является ресурсом.
- Выполнить команду Установить стандартные настройки в режиме предприятия.
Соблюдение этих правил позволит вам избежать большинства проблем с выводом текстовой информации в сложных иерархических отчетах СКД.