СКД в 1С

Таблица (кросс-таблица) и диаграмма в СКД 1С: настройка и код

Коротко

В структуре настроек СКД (Настройки.Структура) кросс-таблица представлена объектом ТаблицаКомпоновкиДанных, а график — объектом ДиаграммаКомпоновкиДанных. В отличие от линейной группировки (ГруппировкаКомпоновкиДанных), у таблицы есть две независимые коллекции Строки и Колонки (элементы типа ГруппировкаТаблицыКомпоновкиДанных / в интерфейсе ГруппировкаКомпоновкиДанных), на пересечении которых выводятся ресурсы из списка Выбор.

У диаграммы аналогичную роль играют коллекции Точки (ось X или категории) и Серии (легенда и цветовые ряды данных), а числовые показатели («Значения») задаются в коллекции Выбор самой диаграммы или всего отчёта. Разница между соседними колонками матрицы вычисляется без доработки текста запроса через функцию языка выражений ВычислитьВыражение(..., "Колонка", , "Предыдущая", "Предыдущая"), а вид графика задаётся параметром вывода ТипДиаграммы.

Чем ТаблицаКомпоновкиДанных отличается от линейной группировки

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

Архитектурно ТаблицаКомпоновкиДанных делит пространство отчёта на две ортогональные оси:

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

Элементами обеих коллекций выступают группировки таблицы (в синтаксис-помощнике — ГруппировкаТаблицыКомпоновкиДанных, разделяющая общий контракт настроек с ГруппировкаКомпоновкиДанных). У каждой такой группировки есть собственные ПоляГруппировки, Выбор, Отбор, Порядок, УсловноеОформление и вложенная коллекция Структура для построения подчинённых группировок строк или колонок.

// Дерево структуры кросс-таблицы в конструкторе СКД:
// Таблица (ТаблицаКомпоновкиДанных)
// ├── Строки (КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных)
// │   └── Номенклатура (ГруппировкаТаблицыКомпоновкиДанных)
// │       └── Характеристика (подчинённая группировка в Строка.Структура)
// └── Колонки (КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных)
//     └── Склад (ГруппировкаТаблицыКомпоновкиДанных)

Таблица = Настройки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных"));
ГруппировкаСтрок = Таблица.Строки.Добавить();
ГруппировкаКолонок = Таблица.Колонки.Добавить();
ТаблицаКомпоновкиДанных
Строкиколлекция группировок вертикальной оси таблицы
Колонкиколлекция группировок горизонтальной оси таблицы
Выборвыбранные поля и ресурсы таблицы (ВыбранныеПоляКомпоновкиДанных)
ПараметрыВыводанастройки итогов, макета и расположения ресурсов
УсловноеОформлениеправила оформления ячеек таблицы
→ Элемент структуры настроек

Важная особенность объектной модели: у самого объекта ТаблицаКомпоновкиДанных нет свойств Отбор и Порядок. Если требуется отфильтровать или отсортировать значения в кросс-таблице, условие накладывается либо на глобальный Настройки.Отбор, либо локально на конкретную группировку внутри Таблица.Строки или Таблица.Колонки. Кроме того, в одной ветке Таблица.Колонки можно размещать как вложенные группировки (например, Год → Квартал → Месяц), так и параллельные группировки одного уровня (например, сначала разворот по видам цен, а справа от него — разворот по складам).

Ресурсы в колонках, дополнение периода и общие итоги

Что именно появится в ячейках на пересечении строк и колонок, определяется коллекцией Выбор («Выбранные поля»). Если в Таблица.Выбор (а также в Выбор группировок строк и колонок) стоит поле Авто (АвтоВыбранноеПолеКомпоновкиДанных), компоновщик автоматически подставляет ресурсы, отмеченные на уровне всего отчёта в Настройки.Выбор.

Когда в кросс-таблицу выводятся сразу несколько ресурсов — например, Количество, Сумма и ВаловаяПрибыль — под каждой колонкой измерения образуется группа подколонок. Управлять их размещением, сортировкой и итогами позволяют параметры вывода таблицы и свойства поля группировки:

  • Порядок ресурсов и автопозиция: очерёдность подколонок задаётся порядком следования полей в списке «Выбранные поля». Параметр вывода РасположениеРесурсов (значения перечисления РасположениеРесурсовКомпоновкиДанных.Горизонтально или Вертикально) позволяет выводить несколько ресурсов либо рядом в отдельных подколонках, либо друг под другом в одной колонке. Параметр АвтоПозицияРесурсов (АвтоПозицияРесурсовКомпоновкиДанных.ПослеВсехПолей или НеИспользовать) регулирует, прижимать ли ресурсы в правую часть области.
  • Порядок колонок: чтобы столбцы шли не по алфавиту наименований, а в хронологическом или заданном порядке (например, месяцы от января к декабрю или этапы воронки по коду), в Порядок группировки колонки добавляется поле сортировки (например, ПериодМесяц по возрастанию) вместо стандартного АвтоЭлементПорядкаКомпоновкиДанных.
  • Дополнение периода по месяцам: если в каком-то месяце не было продаж, запрос не вернёт за этот месяц ни одной записи, и столбец пропадёт из кросс-таблицы. Чтобы в шапке всегда присутствовала непрерывная сетка всех 12 месяцев периода отчёта, у поля группировки колонки (ПолеГруппировкиКомпоновкиДанных) задают ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.Месяц, а в свойствах НачалоПериода и КонецПериода указывают ссылки на параметры отчёта (например, Новый ПолеКомпоновкиДанных("ПараметрыДанных.НачалоПериода")).
  • Общие и промежуточные итоги: в параметрах вывода таблицы (закладка «Другие настройки») настраиваются три ключевых параметра типа РасположениеИтоговКомпоновкиДанных (Авто, Начало, Конец, НачалоИКонец, Нет):
    • РасположениеИтогов — промежуточные итоги по иерархии и вложенным группировкам;
    • Расположение общих итогов по горизонтали (программное имя параметра — ГоризонтальноеРасположениеОбщихИтогов, в устной практике часто называют РасположениеОбщихИтоговПоГоризонтали) — итоговая колонка «Итого» справа (или слева) от всех колонок кросс-таблицы;
    • Расположение общих итогов по вертикали (программное имя параметра — ВертикальноеРасположениеОбщихИтогов / РасположениеОбщихИтоговПоВертикали) — итоговая строка «Итого» внизу (или вверху) таблицы.
Задача в кросс-таблице Где настраивается в конструкторе СКД Объект / свойство / параметр в коде 1С
Вывести несколько ресурсов в каждой колонке Таблица → «Выбранные поля» (или корень отчёта при наличии поля Авто) Таблица.Выбор.Элементы + параметр РасположениеРесурсов
Сортировать колонки по дате или коду, а не по представлению Группировка колонок → закладка «Порядок» Колонка.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"))
Выводить пустые месяцы без движений в шапке таблицы Группировка колонок → Поле → колонка «Тип дополнения» и границы периода ПолеГруппировки.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.Месяц
Отключить или перенести в начало колонку «Итого» справа Таблица → «Другие настройки» → «Расположение общих итогов по горизонтали» Таблица.ПараметрыВывода.УстановитьЗначениеПараметра("ГоризонтальноеРасположениеОбщихИтогов", ...)
Отключить или перенести в начало строку «Итого» снизу Таблица → «Другие настройки» → «Расположение общих итогов по вертикали» Таблица.ПараметрыВывода.УстановитьЗначениеПараметра("ВертикальноеРасположениеОбщихИтогов", ...)

Расчёт разницы и прироста между соседними колонками

Классическая аналитическая задача в кросс-таблице — вывести рядом с суммой продаж за каждый месяц (или квартал, филиал, сценарий План/Факт) абсолютное отклонение и процент прироста к предыдущей колонке. Пытаться решить это в тексте запроса через ВЫБОР КОГДА ... неэффективно: запрос жёстко привязывается к фиксированному числу столбцов и теряет динамическую развёртку СКД.

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

  1. В настройках варианта отчёта задать Имя группировки колонок таблицы — например, "Колонка" (в дереве структуры через контекстное меню группировки «Установить имя…» или программно в свойстве Колонка.Имя = "Колонка"; если группировка состоит из одного поля и имя ей не назначено, во втором параметре указывают имя самого поля, например "ПериодМесяц").
  2. Вызвать ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая"), где четвёртый и пятый параметры (Начало и Конец) ограничивают окно расчёта ровно одной предыдущей записью группировки "Колонка".
  3. Обернуть оба слагаемых в ЕстьNull(..., 0): для самой первой колонки таблицы предыдущей записи не существует, поэтому функция вернёт NULL. Чтобы в первой колонке не выводилась вся текущая сумма как «прирост с нуля», можно явно проверить наличие предыдущего значения через ЗначениеЗаполнено(...).
// 1. Ресурс "РазницаКПрошлойКолонке" (абсолютное отклонение):
// Если предыдущей колонки нет (первый столбец), возвращаем NULL (пустую ячейку)
ВЫБОР
    КОГДА ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая") ЕСТЬ NULL
        ТОГДА NULL
    ИНАЧЕ ЕстьNull(Сумма(СуммаПродаж), 0)
        - ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая")
КОНЕЦ

// 2. Ресурс "ПриростПроцент" (% прироста к предыдущей колонке с защитой от деления на 0):
ВЫБОР
    КОГДА ЕстьNull(ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая"), 0) = 0
        ТОГДА NULL
    ИНАЧЕ Окр(
        (ЕстьNull(Сумма(СуммаПродаж), 0)
            - ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая"))
        * 100
        / ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая"),
        2)
КОНЕЦ
ВычислитьВыражение
Выражениестрока с агрегатной формулой, например "Сумма(СуммаПродаж)"
Группировкаимя группировки колонки в настройках ("Колонка")
ТипВычисления"Группировка" (по умолчанию), "ОбщийИтог", "Иерархия"
Началоначальная запись окна: "Предыдущая", "Первая", "Текущая"
Конецконечная запись окна: "Предыдущая", "Текущая", "Последняя"
→ Произвольный (результат выражения или NULL)

Обратите внимание на два граничных правила ВычислитьВыражение из документации платформы 1С 8.3. Во-первых, слово "Предыдущая" обязательно нужно передать и в четвёртый (Начало), и в пятый (Конец) параметры: если указать "Предыдущая" только в Начало, а Конец оставить пустым ("Текущая"), то для первого столбца Начало упрётся в первую запись и функция вернёт саму первую колонку вместо NULL. Во-вторых, для итоговой колонки «Итого» по группировке граница Начало = "Предыдущая" берёт первую запись, а Конец = "Предыдущая" — последнюю: чтобы в общем итоге по горизонтали не выводилась разница со всей суммой отчёта, на вкладке «Ресурсы» в колонке «Рассчитывать по…» ограничьте расчёт ресурса дельты группировкой Колонка.

В ИИ Консоли отчётов 1С не нужно вручную подбирать вложенные кавычки в ВычислитьВыражение на вкладке «Ресурсы» и проверять имена группировок в структуре настроек: достаточно описать задачу словами («построй кросс-таблицу продаж по номенклатуре и месяцам с колонками дельты и % прироста к прошлому месяцу»). Агент сам изучит структуру вашей базы, настроит схему компоновки данных, сверит итоги и соберёт готовый внешний отчёт .erf.

ДиаграммаКомпоновкиДанных: Точки, Серии, Значения и ТипДиаграммы

Для визуализации данных в структуру отчёта добавляется элемент «Диаграмма» (ДиаграммаКомпоновкиДанных). Её можно разместить в корне Настройки.Структура сразу над или под кросс-таблицей — тогда пользователь в одном табличном документе увидит и сводную матрицу цифр, и наглядный график по тем же самым наборам данных и отборам.

Структура диаграммы в СКД строится из трёх координат:

  • Точки (КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных, элементы типа ГруппировкаДиаграммыКомпоновкиДанных) — откладываются по горизонтальной оси X (ось категорий). Обычно сюда помещают динамику по времени (ПериодМесяц, Регистратор) или сравниваемые объекты (Подразделение, Менеджер).
  • Серии (КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных, элементы типа ГруппировкаДиаграммыКомпоновкиДанных) — формируют легенду диаграммы и отдельные цветовые ряды (столбики, линии или сектора круговой диаграммы). Например, ВидНоменклатуры или Склад.
  • Значения (ресурсы в Выбор) — в конструкторе настроек СКД узел внутри диаграммы подписан как «Значения», но в объектной модели 1С за него отвечает свойство Диаграмма.Выбор (ВыбранныеПоляКомпоновкиДанных). Сюда добавляются только поля-ресурсы (например, СуммаОборот, КоличествоОборот), определяющие высоту столбца или размер сектора.

Вид графика и его оформление задаются через коллекцию Диаграмма.ПараметрыВывода (ЗначенияПараметровВыводаДиаграммыКомпоновкиДанных). Главный параметр — "ТипДиаграммы", принимающий значения системного перечисления ТипДиаграммы:

  • ТипДиаграммы.ГистограммаОбъемная (по умолчанию) или плоская ТипДиаграммы.Гистограмма, ТипДиаграммы.ГистограммаГоризонтальная, ТипДиаграммы.ГистограммаСНакоплением — для сравнения объёмов между категориями и сериями;
  • ТипДиаграммы.График, ТипДиаграммы.ГрафикСОбластями — для отображения трендов во времени по точкам периода;
  • ТипДиаграммы.Круговая, ТипДиаграммы.КруговаяОбъемная, ТипДиаграммы.Воронка — для анализа структуры долей (в круговой диаграмме обычно заполняют только Серии и один ресурс в Выбор, оставляя Точки пустыми);
  • ТипДиаграммы.Измерительная, ТипДиаграммы.Водопад — для KPI-индикаторов и факторного анализа изменений.

Дополнительно через Диаграмма.ПараметрыВывода управляют форматом подписей секторов круговых диаграмм и всплывающих подсказок к областям ("ТипДиаграммы.ВидПодписей" типа ВидПодписейКДиаграмме, например ВидПодписейКДиаграмме.СерияЗначениеПроцент), положением легенды ("ТипДиаграммы.РасположениеЛегенды" типа РасположениеЛегендыДиаграммыКомпоновкиДанных) и размещением нескольких ресурсов ("ТипДиаграммы.РасположениеРесурсов" типа РасположениеРесурсовВДиаграммеКомпоновкиДанных: Авто, Серии или Точки).

Программное добавление кросс-таблицы и диаграммы в Настройки.Структура

При динамической сборке отчёта в процедуре ПриКомпоновкеРезультата (или при формировании настроек на сервере) кросс-таблица и диаграмма создаются вызовом метода Настройки.Структура.Добавить(...) с передачей типа Тип("ТаблицаКомпоновкиДанных") или Тип("ДиаграммаКомпоновкиДанных").

Ниже приведён полный рабочий пример кода для платформы 1С:Предприятие 8.3, который добавляет в структуру настроек сначала кросс-таблицу (строки — Номенклатура, колонки — ПериодМесяц с дополнением периода и двумя ресурсами), а следом за ней — гистограмму по тем же данным.

&НаСервере
Процедура ДобавитьКроссТаблицуВНастройки(Настройки)

    // 1. Создаём кросс-таблицу в структуре настроек
    Таблица = Настройки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных"));
    Таблица.Использование = Истина;

    // Выводим в ячейках таблицы два ресурса: Количество и Сумма
    Для Каждого ИмяРесурса Из СтрРазделить("КоличествоОборот,СуммаОборот", ",") Цикл
        ВыбПоле = Таблица.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
        ВыбПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяРесурса);
        ВыбПоле.Использование = Истина;
    КонецЦикла;

    // 2. Настраиваем группировку СТРОК (Номенклатура с иерархией)
    Строка = Таблица.Строки.Добавить();
    Строка.Использование = Истина;
    ПолеСтроки = Строка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеСтроки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
    ПолеСтроки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
    Строка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    Строка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));

    // 3. Настраиваем группировку КОЛОНОК (ПериодМесяц с дополнением по месяцам)
    Колонка = Таблица.Колонки.Добавить();
    Колонка.Имя = "Колонка";
    Колонка.Использование = Истина;
    ПолеКолонки = Колонка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеКолонки.Поле = Новый ПолеКомпоновкиДанных("ПериодМесяц");
    ПолеКолонки.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.Месяц;
    ПолеКолонки.НачалоПериода = Новый ПолеКомпоновкиДанных("ПараметрыДанных.НачалоПериода");
    ПолеКолонки.КонецПериода = Новый ПолеКомпоновкиДанных("ПараметрыДанных.КонецПериода");
    Колонка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    // Сортировка колонок строго по хронологии
    ЭлементПорядка = Колонка.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
    ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ПериодМесяц");
    ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;

    // 4. Управляем общими итогами таблицы по горизонтали и вертикали
    Таблица.ПараметрыВывода.УстановитьЗначениеПараметра(
        "ГоризонтальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Конец);
    Таблица.ПараметрыВывода.УстановитьЗначениеПараметра(
        "ВертикальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Конец);

КонецПроцедуры
Таблица.Строки / Колонки.Добавить()
ПоляГруппировкиполя разреза строк или столбцов (с ТипДополнения для дат)
Выборобязательно добавить АвтоВыбранноеПолеКомпоновкиДанных
Порядокавтопорядок или явный ЭлементПорядкаКомпоновкиДанных
Структуравложенные группировки строк или колонок
→ ГруппировкаТаблицыКомпоновкиДанных

Аналогичным образом в Настройки.Структура программно конструируется диаграмма: создаём объект ДиаграммаКомпоновкиДанных, наполняем коллекции Точки и Серии, указываем ресурс в Диаграмма.Выбор и выставляем ТипДиаграммы в ПараметрыВывода.

&НаСервере
Процедура ДобавитьДиаграммуВНастройки(Настройки)

    Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных"));
    Диаграмма.Использование = Истина;

    // 1. Значения диаграммы (ресурс в коллекции Выбор)
    ВыбРесурс = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ВыбРесурс.Поле = Новый ПолеКомпоновкиДанных("СуммаОборот");
    ВыбРесурс.Использование = Истина;

    // 2. Точки (ось X — ПериодМесяц)
    Точка = Диаграмма.Точки.Добавить();
    Точка.Использование = Истина;
    ПолеТочки = Точка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеТочки.Поле = Новый ПолеКомпоновкиДанных("ПериодМесяц");
    Точка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    Точка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));

    // 3. Серии (легенда — Склад)
    Серия = Диаграмма.Серии.Добавить();
    Серия.Использование = Истина;
    ПолеСерии = Серия.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеСерии.Поле = Новый ПолеКомпоновкиДанных("Склад");
    Серия.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    Серия.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));

    // 4. Параметры вывода: тип диаграммы, заголовок и подписи значений
    Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра(
        "Заголовок", "Динамика продаж по складам");
    Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра(
        "ВыводЗаголовка", ТипВыводаТекстаКомпоновкиДанных.Выводить);
    Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра(
        "ТипДиаграммы", ТипДиаграммы.Гистограмма);
    Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра(
        "ТипДиаграммы.ВидПодписей", ВидПодписейКДиаграмме.Значение);

КонецПроцедуры
ДиаграммаКомпоновкиДанных
Точкиколлекция группировок оси категорий (Диаграмма.Точки.Добавить())
Серииколлекция группировок серий легенды (Диаграмма.Серии.Добавить())
Выборвыводимые на график ресурсы («Значения» в конструкторе)
ПараметрыВыводаТипДиаграммы, Заголовок, ТипДиаграммы.ВидПодписей
→ Элемент структуры настроек
Настройка сложных вариантов отчёта с кросс-таблицами, дополнением периодов и диаграммами требует внимания к десяткам флагов в конструкторе СКД. В ИИ Консоли отчётов 1С агент автоматически настраивает структуру таблицы и графика в схеме компоновки, собирает внешний отчёт .erf и проверяет его формирование в 1С.

Частые ошибки при настройке таблиц и диаграмм СКД

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

Частые вопросы по кросс-таблицам и диаграммам в СКД

Как вывести несколько ресурсов в колонках кросс-таблицы СКД и поменять их порядок?

Добавьте нужные ресурсы в коллекцию Выбранные поля (Выбор) на уровне всей таблицы или отчёта и убедитесь, что в группировках строк и колонок присутствует поле Авто. Порядок подколонок ресурсов определяется их очерёдностью в списке Выбранные поля, а для вывода ресурсов друг под другом вместо соседних столбцов установите параметр вывода РасположениеРесурсов в значение РасположениеРесурсовКомпоновкиДанных.Вертикально.

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

Присвойте группировке колонок таблицы имя (например, Колонка) и создайте ресурс или пользовательское поле с формулой ЕстьNull(Сумма(Показатель), 0) - ЕстьNull(ВычислитьВыражение("Сумма(Показатель)", "Колонка", , "Предыдущая", "Предыдущая"), 0). Функция ВычислитьВыражение с границами окна Предыдущая возьмёт агрегированное значение из соседнего столбца слева для текущей строки матрицы.

Почему диаграмма в СКД выводится пустой, хотя в таблице данные есть?

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

Тарифы

ИИ Консоль отчётов 1С

Лайт

Бесплатно

Для ознакомления с возможностями

  • Все функции бесплатно на 2 дня +2 дня за подписку на Telegram или Max
  • Полный набор инструментов без урезаний
  • Без ввода карты

Ранний доступ

Популярный выбор
Бесплатно

Тестирование продукта в режиме разработки

  • Формирование панелей и виджетов в чате
  • Поддержка таблиц и популярных типов диаграмм
  • Приоритетный сбор обратной связи по развитию продукта