Таблица (кросс-таблица) и диаграмма в СКД 1С: настройка и код
В структуре настроек СКД (Настройки.Структура) кросс-таблица представлена объектом ТаблицаКомпоновкиДанных, а график — объектом ДиаграммаКомпоновкиДанных. В отличие от линейной группировки (ГруппировкаКомпоновкиДанных), у таблицы есть две независимые коллекции Строки и Колонки (элементы типа ГруппировкаТаблицыКомпоновкиДанных / в интерфейсе ГруппировкаКомпоновкиДанных), на пересечении которых выводятся ресурсы из списка Выбор.
У диаграммы аналогичную роль играют коллекции Точки (ось X или категории) и Серии (легенда и цветовые ряды данных), а числовые показатели («Значения») задаются в коллекции Выбор самой диаграммы или всего отчёта. Разница между соседними колонками матрицы вычисляется без доработки текста запроса через функцию языка выражений ВычислитьВыражение(..., "Колонка", , "Предыдущая", "Предыдущая"), а вид графика задаётся параметром вывода ТипДиаграммы.
Чем ТаблицаКомпоновкиДанных отличается от линейной группировки
Линейная группировка в СКД (ГруппировкаКомпоновкиДанных) разворачивает иерархию измерений строго сверху вниз через вложенную коллекцию Структура. Когда бизнесу нужна шахматка — например, номенклатура и менеджеры по строкам, а склады или месяцы продаж по столбцам — в корень Настройки.Структура (или внутрь вышестоящей группировки) добавляется элемент «Таблица» (ТаблицаКомпоновкиДанных).
Архитектурно ТаблицаКомпоновкиДанных делит пространство отчёта на две ортогональные оси:
Строки(КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных) — вертикальная ось матрицы. Вложенные друг в друга группировки строк формируют дерево слева (например,Подразделение→Менеджер).Колонки(КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных) — горизонтальная ось матрицы. Каждое уникальное значение поля группировки колонок порождает собственный столбец (или группу столбцов) в шапке табличного документа.
Элементами обеих коллекций выступают группировки таблицы (в синтаксис-помощнике — ГруппировкаТаблицыКомпоновкиДанных, разделяющая общий контракт настроек с ГруппировкаКомпоновкиДанных). У каждой такой группировки есть собственные ПоляГруппировки, Выбор, Отбор, Порядок, УсловноеОформление и вложенная коллекция Структура для построения подчинённых группировок строк или колонок.
// Дерево структуры кросс-таблицы в конструкторе СКД:
// Таблица (ТаблицаКомпоновкиДанных)
// ├── Строки (КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных)
// │ └── Номенклатура (ГруппировкаТаблицыКомпоновкиДанных)
// │ └── Характеристика (подчинённая группировка в Строка.Структура)
// └── Колонки (КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных)
// └── Склад (ГруппировкаТаблицыКомпоновкиДанных)
Таблица = Настройки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных"));
ГруппировкаСтрок = Таблица.Строки.Добавить();
ГруппировкаКолонок = Таблица.Колонки.Добавить();
ВыбранныеПоляКомпоновкиДанных)Важная особенность объектной модели: у самого объекта ТаблицаКомпоновкиДанных нет свойств Отбор и Порядок. Если требуется отфильтровать или отсортировать значения в кросс-таблице, условие накладывается либо на глобальный Настройки.Отбор, либо локально на конкретную группировку внутри Таблица.Строки или Таблица.Колонки. Кроме того, в одной ветке Таблица.Колонки можно размещать как вложенные группировки (например, Год → Квартал → Месяц), так и параллельные группировки одного уровня (например, сначала разворот по видам цен, а справа от него — разворот по складам).
Ресурсы в колонках, дополнение периода и общие итоги
Что именно появится в ячейках на пересечении строк и колонок, определяется коллекцией Выбор («Выбранные поля»). Если в Таблица.Выбор (а также в Выбор группировок строк и колонок) стоит поле Авто (АвтоВыбранноеПолеКомпоновкиДанных), компоновщик автоматически подставляет ресурсы, отмеченные на уровне всего отчёта в Настройки.Выбор.
Когда в кросс-таблицу выводятся сразу несколько ресурсов — например, Количество, Сумма и ВаловаяПрибыль — под каждой колонкой измерения образуется группа подколонок. Управлять их размещением, сортировкой и итогами позволяют параметры вывода таблицы и свойства поля группировки:
- Порядок ресурсов и автопозиция: очерёдность подколонок задаётся порядком следования полей в списке «Выбранные поля». Параметр вывода
РасположениеРесурсов(значения перечисленияРасположениеРесурсовКомпоновкиДанных.ГоризонтальноилиВертикально) позволяет выводить несколько ресурсов либо рядом в отдельных подколонках, либо друг под другом в одной колонке. ПараметрАвтоПозицияРесурсов(АвтоПозицияРесурсовКомпоновкиДанных.ПослеВсехПолейилиНеИспользовать) регулирует, прижимать ли ресурсы в правую часть области. - Порядок колонок: чтобы столбцы шли не по алфавиту наименований, а в хронологическом или заданном порядке (например, месяцы от января к декабрю или этапы воронки по коду), в
Порядокгруппировки колонки добавляется поле сортировки (например,ПериодМесяцпо возрастанию) вместо стандартногоАвтоЭлементПорядкаКомпоновкиДанных. - Дополнение периода по месяцам: если в каком-то месяце не было продаж, запрос не вернёт за этот месяц ни одной записи, и столбец пропадёт из кросс-таблицы. Чтобы в шапке всегда присутствовала непрерывная сетка всех 12 месяцев периода отчёта, у поля группировки колонки (
ПолеГруппировкиКомпоновкиДанных) задаютТипДополнения = ТипДополненияПериодаКомпоновкиДанных.Месяц, а в свойствахНачалоПериодаиКонецПериодауказывают ссылки на параметры отчёта (например,Новый ПолеКомпоновкиДанных("ПараметрыДанных.НачалоПериода")). - Общие и промежуточные итоги: в параметрах вывода таблицы (закладка «Другие настройки») настраиваются три ключевых параметра типа
РасположениеИтоговКомпоновкиДанных(Авто,Начало,Конец,НачалоИКонец,Нет):РасположениеИтогов— промежуточные итоги по иерархии и вложенным группировкам;- Расположение общих итогов по горизонтали (программное имя параметра —
ГоризонтальноеРасположениеОбщихИтогов, в устной практике часто называютРасположениеОбщихИтоговПоГоризонтали) — итоговая колонка «Итого» справа (или слева) от всех колонок кросс-таблицы; - Расположение общих итогов по вертикали (программное имя параметра —
ВертикальноеРасположениеОбщихИтогов/РасположениеОбщихИтоговПоВертикали) — итоговая строка «Итого» внизу (или вверху) таблицы.
| Задача в кросс-таблице | Где настраивается в конструкторе СКД | Объект / свойство / параметр в коде 1С |
|---|---|---|
| Вывести несколько ресурсов в каждой колонке | Таблица → «Выбранные поля» (или корень отчёта при наличии поля Авто) |
Таблица.Выбор.Элементы + параметр РасположениеРесурсов |
| Сортировать колонки по дате или коду, а не по представлению | Группировка колонок → закладка «Порядок» | Колонка.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")) |
| Выводить пустые месяцы без движений в шапке таблицы | Группировка колонок → Поле → колонка «Тип дополнения» и границы периода | ПолеГруппировки.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.Месяц |
| Отключить или перенести в начало колонку «Итого» справа | Таблица → «Другие настройки» → «Расположение общих итогов по горизонтали» | Таблица.ПараметрыВывода.УстановитьЗначениеПараметра("ГоризонтальноеРасположениеОбщихИтогов", ...) |
| Отключить или перенести в начало строку «Итого» снизу | Таблица → «Другие настройки» → «Расположение общих итогов по вертикали» | Таблица.ПараметрыВывода.УстановитьЗначениеПараметра("ВертикальноеРасположениеОбщихИтогов", ...) |
Расчёт разницы и прироста между соседними колонками
Классическая аналитическая задача в кросс-таблице — вывести рядом с суммой продаж за каждый месяц (или квартал, филиал, сценарий План/Факт) абсолютное отклонение и процент прироста к предыдущей колонке. Пытаться решить это в тексте запроса через ВЫБОР КОГДА ... неэффективно: запрос жёстко привязывается к фиксированному числу столбцов и теряет динамическую развёртку СКД.
Штатный механизм СКД решает задачу на вкладке «Ресурсы» (или в пользовательских полях) с помощью функции языка выражений ВычислитьВыражение. Чтобы обратиться из текущей ячейки кросс-таблицы к соседней колонке слева, необходимо:
- В настройках варианта отчёта задать Имя группировки колонок таблицы — например,
"Колонка"(в дереве структуры через контекстное меню группировки «Установить имя…» или программно в свойствеКолонка.Имя = "Колонка"; если группировка состоит из одного поля и имя ей не назначено, во втором параметре указывают имя самого поля, например"ПериодМесяц"). - Вызвать
ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая"), где четвёртый и пятый параметры (НачалоиКонец) ограничивают окно расчёта ровно одной предыдущей записью группировки"Колонка". - Обернуть оба слагаемых в
ЕстьNull(..., 0): для самой первой колонки таблицы предыдущей записи не существует, поэтому функция вернётNULL. Чтобы в первой колонке не выводилась вся текущая сумма как «прирост с нуля», можно явно проверить наличие предыдущего значения черезЗначениеЗаполнено(...).
// 1. Ресурс "РазницаКПрошлойКолонке" (абсолютное отклонение):
// Если предыдущей колонки нет (первый столбец), возвращаем NULL (пустую ячейку)
ВЫБОР
КОГДА ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая") ЕСТЬ NULL
ТОГДА NULL
ИНАЧЕ ЕстьNull(Сумма(СуммаПродаж), 0)
- ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая")
КОНЕЦ
// 2. Ресурс "ПриростПроцент" (% прироста к предыдущей колонке с защитой от деления на 0):
ВЫБОР
КОГДА ЕстьNull(ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая"), 0) = 0
ТОГДА NULL
ИНАЧЕ Окр(
(ЕстьNull(Сумма(СуммаПродаж), 0)
- ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая"))
* 100
/ ВычислитьВыражение("Сумма(СуммаПродаж)", "Колонка", , "Предыдущая", "Предыдущая"),
2)
КОНЕЦ
"Сумма(СуммаПродаж)""Колонка")"Группировка" (по умолчанию), "ОбщийИтог", "Иерархия""Предыдущая", "Первая", "Текущая""Предыдущая", "Текущая", "Последняя"Обратите внимание на два граничных правила ВычислитьВыражение из документации платформы 1С 8.3. Во-первых, слово "Предыдущая" обязательно нужно передать и в четвёртый (Начало), и в пятый (Конец) параметры: если указать "Предыдущая" только в Начало, а Конец оставить пустым ("Текущая"), то для первого столбца Начало упрётся в первую запись и функция вернёт саму первую колонку вместо NULL. Во-вторых, для итоговой колонки «Итого» по группировке граница Начало = "Предыдущая" берёт первую запись, а Конец = "Предыдущая" — последнюю: чтобы в общем итоге по горизонтали не выводилась разница со всей суммой отчёта, на вкладке «Ресурсы» в колонке «Рассчитывать по…» ограничьте расчёт ресурса дельты группировкой Колонка.
ВычислитьВыражение на вкладке «Ресурсы» и проверять имена группировок в структуре настроек: достаточно описать задачу словами («построй кросс-таблицу продаж по номенклатуре и месяцам с колонками дельты и % прироста к прошлому месяцу»). Агент сам изучит структуру вашей базы, настроит схему компоновки данных, сверит итоги и соберёт готовый внешний отчёт .erf.
ДиаграммаКомпоновкиДанных: Точки, Серии, Значения и ТипДиаграммы
Для визуализации данных в структуру отчёта добавляется элемент «Диаграмма» (ДиаграммаКомпоновкиДанных). Её можно разместить в корне Настройки.Структура сразу над или под кросс-таблицей — тогда пользователь в одном табличном документе увидит и сводную матрицу цифр, и наглядный график по тем же самым наборам данных и отборам.
Структура диаграммы в СКД строится из трёх координат:
Точки(КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных, элементы типаГруппировкаДиаграммыКомпоновкиДанных) — откладываются по горизонтальной оси X (ось категорий). Обычно сюда помещают динамику по времени (ПериодМесяц,Регистратор) или сравниваемые объекты (Подразделение,Менеджер).Серии(КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных, элементы типаГруппировкаДиаграммыКомпоновкиДанных) — формируют легенду диаграммы и отдельные цветовые ряды (столбики, линии или сектора круговой диаграммы). Например,ВидНоменклатурыилиСклад.- Значения (ресурсы в
Выбор) — в конструкторе настроек СКД узел внутри диаграммы подписан как «Значения», но в объектной модели 1С за него отвечает свойствоДиаграмма.Выбор(ВыбранныеПоляКомпоновкиДанных). Сюда добавляются только поля-ресурсы (например,СуммаОборот,КоличествоОборот), определяющие высоту столбца или размер сектора.
Вид графика и его оформление задаются через коллекцию Диаграмма.ПараметрыВывода (ЗначенияПараметровВыводаДиаграммыКомпоновкиДанных). Главный параметр — "ТипДиаграммы", принимающий значения системного перечисления ТипДиаграммы:
ТипДиаграммы.ГистограммаОбъемная(по умолчанию) или плоскаяТипДиаграммы.Гистограмма,ТипДиаграммы.ГистограммаГоризонтальная,ТипДиаграммы.ГистограммаСНакоплением— для сравнения объёмов между категориями и сериями;ТипДиаграммы.График,ТипДиаграммы.ГрафикСОбластями— для отображения трендов во времени по точкам периода;ТипДиаграммы.Круговая,ТипДиаграммы.КруговаяОбъемная,ТипДиаграммы.Воронка— для анализа структуры долей (в круговой диаграмме обычно заполняют толькоСериии один ресурс вВыбор, оставляяТочкипустыми);ТипДиаграммы.Измерительная,ТипДиаграммы.Водопад— для KPI-индикаторов и факторного анализа изменений.
Дополнительно через Диаграмма.ПараметрыВывода управляют форматом подписей секторов круговых диаграмм и всплывающих подсказок к областям ("ТипДиаграммы.ВидПодписей" типа ВидПодписейКДиаграмме, например ВидПодписейКДиаграмме.СерияЗначениеПроцент), положением легенды ("ТипДиаграммы.РасположениеЛегенды" типа РасположениеЛегендыДиаграммыКомпоновкиДанных) и размещением нескольких ресурсов ("ТипДиаграммы.РасположениеРесурсов" типа РасположениеРесурсовВДиаграммеКомпоновкиДанных: Авто, Серии или Точки).
Программное добавление кросс-таблицы и диаграммы в Настройки.Структура
При динамической сборке отчёта в процедуре ПриКомпоновкеРезультата (или при формировании настроек на сервере) кросс-таблица и диаграмма создаются вызовом метода Настройки.Структура.Добавить(...) с передачей типа Тип("ТаблицаКомпоновкиДанных") или Тип("ДиаграммаКомпоновкиДанных").
Ниже приведён полный рабочий пример кода для платформы 1С:Предприятие 8.3, который добавляет в структуру настроек сначала кросс-таблицу (строки — Номенклатура, колонки — ПериодМесяц с дополнением периода и двумя ресурсами), а следом за ней — гистограмму по тем же данным.
&НаСервере
Процедура ДобавитьКроссТаблицуВНастройки(Настройки)
// 1. Создаём кросс-таблицу в структуре настроек
Таблица = Настройки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных"));
Таблица.Использование = Истина;
// Выводим в ячейках таблицы два ресурса: Количество и Сумма
Для Каждого ИмяРесурса Из СтрРазделить("КоличествоОборот,СуммаОборот", ",") Цикл
ВыбПоле = Таблица.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяРесурса);
ВыбПоле.Использование = Истина;
КонецЦикла;
// 2. Настраиваем группировку СТРОК (Номенклатура с иерархией)
Строка = Таблица.Строки.Добавить();
Строка.Использование = Истина;
ПолеСтроки = Строка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеСтроки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
ПолеСтроки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
Строка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
Строка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
// 3. Настраиваем группировку КОЛОНОК (ПериодМесяц с дополнением по месяцам)
Колонка = Таблица.Колонки.Добавить();
Колонка.Имя = "Колонка";
Колонка.Использование = Истина;
ПолеКолонки = Колонка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеКолонки.Поле = Новый ПолеКомпоновкиДанных("ПериодМесяц");
ПолеКолонки.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.Месяц;
ПолеКолонки.НачалоПериода = Новый ПолеКомпоновкиДанных("ПараметрыДанных.НачалоПериода");
ПолеКолонки.КонецПериода = Новый ПолеКомпоновкиДанных("ПараметрыДанных.КонецПериода");
Колонка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Сортировка колонок строго по хронологии
ЭлементПорядка = Колонка.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ПериодМесяц");
ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
// 4. Управляем общими итогами таблицы по горизонтали и вертикали
Таблица.ПараметрыВывода.УстановитьЗначениеПараметра(
"ГоризонтальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Конец);
Таблица.ПараметрыВывода.УстановитьЗначениеПараметра(
"ВертикальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Конец);
КонецПроцедуры
ТипДополнения для дат)АвтоВыбранноеПолеКомпоновкиДанныхЭлементПорядкаКомпоновкиДанныхАналогичным образом в Настройки.Структура программно конструируется диаграмма: создаём объект ДиаграммаКомпоновкиДанных, наполняем коллекции Точки и Серии, указываем ресурс в Диаграмма.Выбор и выставляем ТипДиаграммы в ПараметрыВывода.
&НаСервере
Процедура ДобавитьДиаграммуВНастройки(Настройки)
Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных"));
Диаграмма.Использование = Истина;
// 1. Значения диаграммы (ресурс в коллекции Выбор)
ВыбРесурс = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбРесурс.Поле = Новый ПолеКомпоновкиДанных("СуммаОборот");
ВыбРесурс.Использование = Истина;
// 2. Точки (ось X — ПериодМесяц)
Точка = Диаграмма.Точки.Добавить();
Точка.Использование = Истина;
ПолеТочки = Точка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеТочки.Поле = Новый ПолеКомпоновкиДанных("ПериодМесяц");
Точка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
Точка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
// 3. Серии (легенда — Склад)
Серия = Диаграмма.Серии.Добавить();
Серия.Использование = Истина;
ПолеСерии = Серия.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеСерии.Поле = Новый ПолеКомпоновкиДанных("Склад");
Серия.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
Серия.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
// 4. Параметры вывода: тип диаграммы, заголовок и подписи значений
Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра(
"Заголовок", "Динамика продаж по складам");
Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра(
"ВыводЗаголовка", ТипВыводаТекстаКомпоновкиДанных.Выводить);
Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра(
"ТипДиаграммы", ТипДиаграммы.Гистограмма);
Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра(
"ТипДиаграммы.ВидПодписей", ВидПодписейКДиаграмме.Значение);
КонецПроцедуры
Диаграмма.Точки.Добавить())Диаграмма.Серии.Добавить())ТипДиаграммы, Заголовок, ТипДиаграммы.ВидПодписей.erf и проверяет его формирование в 1С.
Частые ошибки при настройке таблиц и диаграмм СКД
- Пустые заголовки строк или колонок при программном создании таблицы. Если добавить поле в
Строка.ПоляГруппировки, но забыть добавитьАвтоВыбранноеПолеКомпоновкиДанныхвСтрока.ВыбориКолонка.Выбор, компоновщик макета выведет цифры ресурсов на пересечении, но оставит шапку столбцов и боковик строк совершенно пустыми. - Обращение к
Таблица.ОтборилиДиаграмма.Значенияв коде 1С. У объектаТаблицаКомпоновкиДанныхнет свойстваОтбор(ошибка «Поле объекта не обнаружено (Отбор)») — фильтры накладываются на элементыТаблица.Строки,Таблица.Колонкиили наНастройки.Отбор. А уДиаграммаКомпоновкиДанныхнет свойстваЗначения— ресурсы добавляются вДиаграмма.Выбор. - Пустая диаграмма при добавлении не-ресурса в «Значения» (
Диаграмма.Выбор). Диаграмма СКД умеет строить график только по полям, объявленным на вкладке «Ресурсы» (Схема.ПоляИтога) или имеющим итоговое выражение в пользовательских полях. Обычное числовое поле набора данных без агрегатной функции в диаграмме не отрисуется. - Пропажа параметра
ТипДиаграммыпри установке черезНайтиЗначениеПараметра. Если менять параметр вывода черезПараметр = Диаграмма.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ТипДиаграммы"))и присвоить толькоПараметр.Значение = ТипДиаграммы.КруговаябезПараметр.Использование = Истина, настройка будет проигнорирована. МетодУстановитьЗначениеПараметра("ТипДиаграммы", ...)включает флагИспользованиеавтоматически. - Неверная сортировка колонок кросс-таблицы по месяцам. Когда группировка колонок строится по строковому представлению месяца (например,
Формат(Период, "ДФ=ММММ")), столбцы выстраиваются по алфавиту: Август, Апрель, Декабрь. Группировать и сортировать колонки нужно по полю типаДата(НачалоПериода(Дата, "Месяц")), а красивое название месяца задавать в макете оформления поля или формате представления. - Потеря колонок в
ВычислитьВыражениеиз-за несовпадения имени группировки. Второй параметр вВычислитьВыражение("Сумма(Сумма)", "Колонка", , "Предыдущая", "Предыдущая")ищет группировку с именем"Колонка", заданным через контекстное меню «Установить имя…» в дереве структуры (свойствоКолонка.Имя). Если имя группировки вручную не задавалось, указывать нужно имя поля группировки (например,"ПериодМесяц"или"Склад"), иначе функция вернётNULL.
Частые вопросы по кросс-таблицам и диаграммам в СКД
Как вывести несколько ресурсов в колонках кросс-таблицы СКД и поменять их порядок?
Добавьте нужные ресурсы в коллекцию Выбранные поля (Выбор) на уровне всей таблицы или отчёта и убедитесь, что в группировках строк и колонок присутствует поле Авто. Порядок подколонок ресурсов определяется их очерёдностью в списке Выбранные поля, а для вывода ресурсов друг под другом вместо соседних столбцов установите параметр вывода РасположениеРесурсов в значение РасположениеРесурсовКомпоновкиДанных.Вертикально.
Как посчитать разницу между соседними колонками таблицы в СКД без изменения запроса?
Присвойте группировке колонок таблицы имя (например, Колонка) и создайте ресурс или пользовательское поле с формулой ЕстьNull(Сумма(Показатель), 0) - ЕстьNull(ВычислитьВыражение("Сумма(Показатель)", "Колонка", , "Предыдущая", "Предыдущая"), 0). Функция ВычислитьВыражение с границами окна Предыдущая возьмёт агрегированное значение из соседнего столбца слева для текущей строки матрицы.
Почему диаграмма в СКД выводится пустой, хотя в таблице данные есть?
ДиаграммаКомпоновкиДанных строит серии и точки только по полям, которые добавлены на вкладку Ресурсы схемы компоновки данных (ПоляИтога) и помещены в коллекцию Выбор (узел Значения) самой диаграммы. Проверьте, что числовое поле объявлено как ресурс с агрегатной функцией Сумма или Количество, а в узлах Точки или Серии добавлена хотя бы одна группировка с полем Авто в выбранных полях.
ИИ Консоль отчётов 1С
Старт
Популярный выборДля индивидуального использования
- Сборка и проверка отчётов СКД (.erf)
-
≈ 100 задач Подробнее про лимиты
- Техническая поддержка
Лайт
Для ознакомления с возможностями
- Полный набор инструментов без урезаний
- Без ввода карты
Ранний доступ
Популярный выборТестирование продукта в режиме разработки
- Формирование панелей и виджетов в чате
- Поддержка таблиц и популярных типов диаграмм
- Приоритетный сбор обратной связи по развитию продукта
Продвинутый
Для интенсивного использования или команд
- Сборка и проверка отчётов СКД (.erf)
-
≈ 300 задач Подробнее про лимиты
- Техническая поддержка