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