Почему не отображаются данные в отчете 1С на СКД и как правильно настроить структуру без создания макета

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При создании отчетов в системе 1С начинающие разработчики часто сталкиваются с ситуацией, когда запрос написан верно, данные в базе есть, но при нажатии кнопки Сформировать на экране отображается пустой лист. Типичная ошибка в этот момент — попытка сразу же рисовать ручной макет (Layout), полагая, что без него система не знает, как вывести данные. На самом деле, Система компоновки данных (СКД) — это мощный механизм, который берет на себя 99% работы по визуализации, если его правильно настроить.

В этой статье мы подробно разберем, почему отчет может быть пустым, как настроить группировки и поля, и выясним, когда ручные макеты действительно необходимы, а когда они только мешают работе.

Разберем причину: почему отчет ничего не выводит?

Прежде чем переходить к оформлению, мы должны убедиться, что данные вообще доходят до настроек компоновки. Проанализируем несколько технических нюансов, которые часто упускаются из виду:

  1. Флаг «Автозаполнение» в наборе данных. Перейдем на вкладку Набор данных в схеме компоновки. Если вы используете запрос, убедитесь, что в верхней части окна установлен флаг Автозаполнение. Без этого флага СКД не «пробросит» поля из вашего запроса в доступные поля настроек.
  2. Виртуальные таблицы и параметры. Если в вашем запросе используются таблицы Обороты или ОстаткиИОбороты, проверьте вкладку Параметры. Очень часто параметры НачалоПериода и КонецПериода имеют установленную галочку Ограничение доступности. Если пользователь не задал период на форме, запрос может вернуть пустой результат за текущую секунду.
  3. Роли полей. Проанализируем вкладку Набор данных, колонку Роли. Если 1С автоматически не определила, что является измерением, а что — ресурсом (например, для регистров накопления), данные могут суммироваться некорректно или игнорироваться.

Шаг 1: Настройка ресурсов отчета

Для того чтобы система понимала, какие числовые данные нужно суммировать в итогах (по контрагентам, по номенклатуре, по всему отчету), их нужно объявить ресурсами. Рассмотрим этот процесс подробнее:

Перейдем на вкладку Ресурсы в схеме компоновки данных. Здесь мы должны перенести из левого списка в правый все числовые поля, по которым планируется расчет итогов. Обычно это поля Сумма, Количество, СуммаОборота. Для каждого ресурса мы указываем выражение, чаще всего это стандартная функция Сумма(ИмяПоля).

Важный момент: Если вы не добавите поле в ресурсы, вы не сможете увидеть итоги по группировкам. В отчете это поле будет отображаться только в детальных записях, а в итоговых строках вместо цифр будут пустые ячейки.

Шаг 2: Настройка структуры отчета (Группировки)

Это самый важный этап, на котором решается большинство проблем с «пустым отчетом». В настройках СКД (последняя вкладка) мы должны определить иерархию данных. Посмотрим на примере классического отчета по продажам:

  1. В окне настроек выберем корень дерева Отчет.
  2. В нижней части окна перейдем на вкладку Структура.
  3. Если там пусто, отчет всегда будет пустым. Нам нужно добавить элементы.
  4. Для простого списка добавим элемент Детальные записи. Это заставит систему вывести каждую строку из результата запроса.
  5. Для иерархического отчета (например, Контрагент -> Номенклатура) мы сначала добавляем группировку Контрагент, а внутрь нее — группировку Номенклатура.

Рассмотрим ситуацию, когда нам нужно вывести контрагента и список его покупок. Наша структура будет выглядеть так:


Отчет
  - Контрагент
      - Номенклатура
          - Детальные записи

Если мы хотим видеть просто таблицу с колонками, достаточно добавить одну группировку Детальные записи.

Шаг 3: Выбранные поля — что увидит пользователь

После того как структура определена, выясним, какие именно колонки должны попасть в отчет. Переходим на вкладку Выбранные поля в настройках.

Здесь важно понимать иерархию настроек. Если вы выберете поля на уровне всего отчета, они будут применяться ко всем группировкам. Если же вы хотите, чтобы в строке с Контрагентом была видна только его сумма, а в строках Номенклатуры — её название и количество, вы должны настраивать Выбранные поля для каждой группировки отдельно.

Практический совет: Чтобы отчет выглядел чисто, перенесите поле Контрагент в Выбранные поля соответствующей группировки, а ресурсы (Сумма, Количество) оставьте в Выбранных полях всего отчета. Так суммы будут «подтягиваться» на все уровни иерархии.

Шаг 4: Переход к кросс-таблицам

Рассмотрим более сложный вариант — создание кросс-таблицы (матрицы). Например, когда нам нужно вывести Контрагентов в строках, а Периоды (месяцы) — в колонках. На пересечении должна быть Сумма.

Для этого в структуре настроек мы добавляем не просто Группировку, а Таблицу. В таблице есть два раздела:

Система сама сопоставит данные и выведет ресурсы на пересечении. Если данных за какой-то месяц нет, колонка может пропасть. Чтобы этого избежать, используйте настройку Тип дополнения в свойствах поля периода, установив значение Месяц и указав период отчета.

Когда макеты (Layouts) действительно нужны?

В обсуждении на форуме пользователю правильно советовали: «Удали макеты». Для 95% задач стандартного оформления СКД достаточно. Но проанализируем ситуации, когда без вкладки Макеты не обойтись:

  1. Сложное объединение ячеек. Если вам нужна «шапка» отчета в три этажа с объединением ячеек по вертикали и горизонтали, которые не зависят от данных запроса.
  2. Особое оформление подвалов. Например, если нужно вывести внизу отчета сложную формулу, текст прописью или специфические подписи ответственных лиц в строгом соответствии с корпоративным бланком.
  3. Вывод логотипов и графики. Если отчет должен содержать картинки, QR-коды или специфические шрифты, которые нельзя настроить через условное оформление.

Во всех остальных случаях мы настоятельно рекомендуем использовать Условное оформление. Оно позволяет:

Использование стандартных периодов для удобства

Чтобы ваш отчет был профессиональным, в параметрах СКД лучше использовать тип СтандартныйПериод. Это позволит пользователю не вводить даты вручную, а выбирать из списка: «Прошлый месяц», «Текущий квартал» и т.д.

В запросе это реализуется через обращение к свойствам параметра:


ГДЕ
    Продажи.Период МЕЖДУ &Период.ДатаНачала И &Период.ДатаОкончания

Проанализировав эти шаги, мы видим, что создание отчета в 1С — это не столько рисование таблиц, сколько логическая настройка связей между данными, ресурсами и их группировкой. Понимание механизмов СКД избавляет от необходимости тратить часы на ручную отрисовку макетов и позволяет создавать гибкие, динамические отчеты, которые пользователь может настраивать под себя даже без участия программиста.

← На главную