СКД: Как оформить вывод вложенной схемы в виде таблицы и правильно настроить Master-Detail отчет?

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

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

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

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

Анализ задачи и исходных данных

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

Запрос для основной схемы (Шапка документов):


ВЫБРАТЬ
    ЗаказПоставщику.Ссылка,
    ЗаказПоставщику.Номер,
    ЗаказПоставщику.Дата,
    ЗаказПоставщику.СуммаДокумента
ИЗ
    Документ.ЗаказПоставщику КАК ЗаказПоставщику
ГДЕ
    ЗаказПоставщику.Дата МЕЖДУ &Дата1 И &Дата2

Запрос для вложенной (или детальной) части (Товары):


ВЫБРАТЬ
    ЗаказПоставщикуТовары.Ссылка,
    ЗаказПоставщикуТовары.Номенклатура,
    ЗаказПоставщикуТовары.СуммаНДС
ИЗ
    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ГДЕ
    ЗаказПоставщикуТовары.Ссылка.Дата МЕЖДУ &Дата11 И &Дата21

Разберем три основных способа реализации требуемого внешнего вида.

Способ 1: Использование связей наборов данных (Рекомендуемый)

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

Наиболее правильным, быстрым и гибким способом в 1С является использование механизма Связи наборов данных в рамках одной схемы компоновки. Если же вам требуется нестандартное представление данных в строках, вы можете использовать прием, позволяющий собрать значения колонки из нескольких строк в одну строку или таблицу.

Алгоритм действий:

  1. Создаем одну схему компоновки данных.
  2. Добавляем Набор данных - запрос для шапки ("Заказы"). Вставляем туда первый запрос.
  3. Добавляем второй Набор данных - запрос для строк ("Товары"). Вставляем туда второй запрос. Обратите внимание: из второго запроса лучше убрать условие ГДЕ по дате, так как фильтрация будет происходить через связь с основным набором. Однако, поле Ссылка (владелец строки) должно присутствовать.
  4. Переходим на закладку Связи наборов данных.

    Настраиваем связь:

    • Источник связи: Набор "Заказы"
    • Приемник связи: Набор "Товары"
    • Выражение источника: Ссылка
    • Выражение приемника: Ссылка
  5. Переходим на закладку Настройки.

Именно здесь мы формируем нужную структуру "Таблица внутри списка".

  1. Добавляем группировку по полю Ссылка (или Заказ). Это будет наша "шапка".
  2. В выбранные поля этой группировки добавляем реквизиты: Номер, Дата, Сумма.
  3. Внутри этой группировки добавляем не просто "Детальные записи", а элемент структуры Таблица.

    Это ключевой момент. Если вы просто добавите поля товаров в группировку, они выведутся списком. Элемент "Таблица" заставит СКД нарисовать сетку.

  4. В настройках вложенной Таблицы:
    • В Строки добавляем группировку (Детальные записи).
    • В Колонки ничего не добавляем (или добавляем (Детальные записи), если нужно динамическое формирование колонок, но обычно достаточно определить их в выбранных полях).
  5. В Выбранные поля вложенной Таблицы добавляем поля из набора "Товары": Номенклатура, СуммаНДС.

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

Способ 2: Настройка Вложенных схем (Ответ на прямой вопрос)

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

Проблема, описанная автором ("получается только список"), возникает из-за настроек самой вложенной схемы или способа её вывода в основной.

Шаг 1: Настройка Вложенной схемы

Откройте саму вложенную схему (ту, которая выводит товары). Перейдите на вкладку Настройки.

В структуре отчета (дерево слева) убедитесь, что вы используете элемент Таблица, а не просто группировку "Детальные записи".

Если в настройках вложенной схемы будет стоять просто "Группировка" или "Детальные записи", СКД выведет данные простым перечнем полей, без сетки.

Шаг 2: Настройка Основной схемы

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

Важнейший момент: Связь параметров.

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

Вам нужно передать значение ссылки текущего документа из основной схемы в параметр вложенной схемы (например, в параметр &Ссылка, который вы должны добавить в запрос вложенной схемы).


// Пример условия в запросе вложенной схемы
ГДЕ ЗаказПоставщикуТовары.Ссылка = &Ссылка

Шаг 3: Оформление

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

  1. В настройках вложенной схемы перейдите на вкладку Дополнительные настройки (или Другие настройки).
  2. Установите в "Нет" свойства:
    • Выводить заголовок
    • Выводить параметры данных
    • Выводить отбор

Способ 3: "Макеты" для принудительного оформления

Иногда стандартных средств настройки структуры (Таблица/Список) недостаточно, или они работают некорректно в сложных иерархиях. В таких ситуациях, чтобы расширить возможности стандартного интерфейса, может быть полезна пользовательская СКД, либо использование собственных макетов оформления.

Как это делается:

  1. Переходим на вкладку Макеты в конструкторе схемы компоновки.
  2. Добавляем Макет группировки.
  3. Указываем имя группировки, для которой создаем макет (например, для детальных записей товаров).
  4. В графическом редакторе рисуем область ячеек: делаем рамки (границы), задаем фон, шрифт.
  5. В ячейках прописываем параметры вывода, например Параметр: Номенклатура.
  6. Также можно создать Макет заголовка группировки, чтобы нарисовать "шапку" нашей таблицы (названия колонок) вручную.

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

Резюме и рекомендации

Если ваша задача — вывести список документов и их состав:

  1. Лучший выбор: Одна схема, два набора данных, связь по ссылке. В настройках: Группировка "Документ" -> Вложенная структура "Таблица". Это гарантирует правильный табличный вид и высокую производительность.
  2. Если используете Вложенные схемы: Убедитесь, что внутри самой вложенной схемы в настройках добавлен элемент "Таблица", а не список. Обязательно настройте передачу параметра ссылки от родителя к потомку и отключите вывод стандартных заголовков/параметров во вложенной схеме.

Вложенные схемы оправданы, когда структура "подчиненного" отчета кардинально отличается и очень сложна (например, диаграммы, кросс-таблицы с другой логикой), или когда нужно объединить два совершенно разных отчета ("Продажи" и "Остатки") последовательно друг за другом (схема "Контейнер"). Для задачи "Документ - Строки" это избыточный инструмент.

← На главную