При разработке отчетов на базе Системы компоновки данных (СКД) программисты часто сталкиваются с задачей построения кросс-таблиц. Типичный пример: необходимо вывести статьи затрат в строках, а периоды или подразделения — в колонках, при этом показатели (ресурсы) должны отображаться на пересечении. Однако нередко возникают ситуации, когда вместо ожидаемых сумм в колонках отображаются пустые ячейки или некорректные данные. Рассмотрим подробно, как правильно настроить вывод ресурсов в столбцы и какие технические нюансы на это влияют.
Проанализируем ситуацию, когда структура отчета настроена верно (используется «Таблица» с группировками строк и колонок), но числовые показатели упорно не желают выводиться в динамические столбцы. Одной из неочевидных, но критически важных настроек является Автопозиция ресурсов.
Эта настройка находится на закладке Настройки, далее переходим на вкладку Другие настройки. В нижней части списка параметров можно найти пункт «Автопозиция ресурсов». Выясним, на что она влияет:
<Ресурсы>).В случаях, когда ресурсы должны дублироваться под каждой колонкой группировки, включение или правильная перенастройка этого параметра зачастую мгновенно решает проблему «пустых столбцов».
Рассмотрим еще один важный аспект. В конструкторе СКД на закладке Ресурсы для каждого поля (например, Сумма) есть колонка Рассчитывать по.... Многие начинающие разработчики ошибочно выбирают там все доступные поля группировок.
Нужно понимать логику работы этого механизма: если вы укажете в этой колонке конкретную группировку (например, СтатьяЗатрат), то ресурс будет рассчитываться и выводиться только для этой группировки и её дочерних элементов. Если при этом вы пытаетесь вывести ту же сумму в разрезе Номенклатуры, которая не указана в списке «Рассчитывать по...», в отчете вы увидите пустые ячейки.
Рекомендация: Для большинства стандартных отчетов колонку Рассчитывать по... следует оставлять пустой. В этом случае СКД будет рассчитывать итоги по всем доступным измерениям, включая общие итоги и пересечения строк и столбцов в кросс-таблицах.
Выясним, как правильно сконструировать дерево настроек, чтобы ресурсы «ушли» в колонки. Для этого мы должны использовать элемент Таблица. Разберем по шагам:
Контрагент или СтатьяЗатрат).ПериодМесяц или Склад).Если мы хотим, чтобы под каждым месяцем выводилось сразу несколько показателей (например, Количество и Сумма), нам нужно убедиться, что поле <Авто> или конкретные ресурсы добавлены именно в состав выбранных полей таблицы. Тогда СКД автоматически создаст вложенную шапку для каждого значения колонки.
Посмотрим на ситуацию, когда ресурсов много, и отчет становится слишком широким. В Других настройках варианта отчета есть параметр Расположение ресурсов. Рассмотрим его варианты:
Бывают сложные задачи, когда названия ресурсов должны выступать в роли обычных значений группировки (чтобы к ним можно было применить отбор или особую сортировку). В СКД это решается добавлением в структуру специального поля «Ресурсы» (не путать с обычными числовыми полями).
Например, если вы добавите поле Ресурсы в иерархию колонок под группировку Склад, вы сможете управлять порядком вывода Суммы и Количества так же гибко, как если бы это были элементы справочника.
Иногда ресурсы не отображаются в столбцах из-за особенностей выполнения соединения таблиц в запросе. Если для определенной колонки в базе данных нет записей, СКД может вообще не создать этот столбец или вывести пустую область. Проанализируем способ решения через агрегатные функции в ресурсах.
Вместо простого выбора поля СуммаОстаток, на закладке «Ресурсы» в выражении можно использовать конструкцию, гарантирующую наличие значения:
Сумма(ЕСТЬNULL(СуммаОстаток, 0))
Это принудительно заставит систему выводить 0 там, где данных нет, что часто помогает «проявить» структуру колонок, которая иначе схлопывается.
Если все настройки выполнены верно, но результат не меняется, стоит обратить внимание на техническое состояние информационной базы. В практике разработки на 1С случается, что настройки компоновки «залипают» в кэше пользователя или перекрываются программным кодом в модуле отчета.
Проверим следующие моменты:
ПриКомпоновкеРезультата в модуле объекта. Если там присутствует ручная программная компоновка, стандартные настройки из конструктора могут игнорироваться или модифицироваться кодом.Таким образом, для вывода ресурсов в столбцы необходимо обеспечить три условия: наличие Таблицы в структуре, отсутствие ограничений в колонке Рассчитывать по на вкладке ресурсов и корректное состояние параметра Автопозиция ресурсов в дополнительных настройках варианта.