Как настроить кросс-таблицу в СКД: выводим общий заголовок для периодов, управляем остатками и оформляем итоги

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

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

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

Исходные данные и анализ запроса

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


ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Период КАК Период,
    ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт КАК НачальныйОстаток,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК Расход,
    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК КонечныйОстаток,
    ХозрасчетныйОстаткиИОбороты.Организация КАК Организация
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто, ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
    ХозрасчетныйОстаткиИОбороты.Организация = &Организация
УПОРЯДОЧИТЬ ПО
    Период УБЫВ

При выводе этих данных в обычную таблицу мы получим линейную структуру. Однако наша цель — превратить этот набор в кросс-таблицу, где строки будут сгруппированы по номенклатуре, а колонки представят собой сложную структуру: сначала идет общий начальный остаток за весь период, затем динамические колонки по дням для расхода, объединенные одной шапкой «Расход по дням», и завершает таблицу колонка общего конечного остатка.

Шаг 1. Объединение колонок периодов под общим заголовком «Расход по дням»

Если мы просто добавим группировку по полю Период в колонки таблицы, система создаст для каждого дня отдельную колонку. Нам же требуется визуально объединить все эти дни под общей надписью «Расход по дням». Самым простым и элегантным решением этой задачи является использование механизма вычисляемых полей СКД.

Выясним, как это реализовать на практике:

  1. Перейдем на вкладку «Вычисляемые поля» в конструкторе схемы компоновки данных.
  2. Добавим новую строку и укажем в колонке «Путь к данным» понятное имя, например, ЗаголовокПериода.
  3. В колонке «Выражение» введем фиксированную строку в двойных кавычках: "Расход по дням". Это значение будет одинаковым для абсолютно всех записей выборки.
  4. Теперь перейдем на вкладку «Настройки» и обратим внимание на структуру нашего отчета. В секции «Колонки» создадим иерархическую структуру группировок:
    • Сначала добавим группировку по нашему вычисляемому полю ЗаголовокПериода.
    • Внутрь этой группировки (как подчиненный элемент) добавим группировку по реальному полю Период.

Благодаря такой структуре СКД автоматически сгруппирует все детальные колонки по периодам под единой ячейкой верхнего уровня, значение которой всегда будет равно «Расход по дням». Это избавляет нас от необходимости вручную рисовать сложные макеты оформления.

Шаг 2. Настройка ролей полей для корректного расчета остатков

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

Проанализируем, как правильно настроить роли полей компоновки данных:

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

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

Шаг 3. Построение правильной структуры колонок в кросс-таблице

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

Разберем этот процесс по шагам:

  1. В структуре настроек отчета в секции «Колонки» у нас должно быть три независимых ветки группировок:
    • Группировка 1: Создаем группировку без указания поля (пустая группировка). В ее настройках на вкладке «Выбранные поля» отключаем автозаполнение и переносим туда только ресурс НачальныйОстаток.
    • Группировка 2: Это созданная нами ранее иерархическая группировка ЗаголовокПериода -> Период. На вкладке «Выбранные поля» для этой группы мы оставляем только ресурс Расход.
    • Группировка 3: Снова создаем пустую группировку колонок. В ее выбранных полях оставляем исключительно ресурс КонечныйОстаток.
  2. В секции «Строки» добавляем группировку по полю Номенклатура.

Посмотрим на результат такой настройки: на пересечении строк номенклатуры и колонок система выведет сначала одну колонку с начальным остатком за весь выбранный период, затем динамический блок колонок с расходом по конкретным датам, объединенный общей шапкой «Расход по дням», и в самом конце — одну финальную колонку с конечным остатком.

Шаг 4. Изменение текста и оформления строки «Итого»

Часто стандартный вид строки общих итогов не устраивает пользователей: системное слово «Итого» пишется строчными буквами, а шрифт сливается с остальным текстом. Рассмотрим, как изменить надпись «Итого» на произвольный текст (например, «ВСЕГО ПО ОТЧЕТУ») и сделать шрифт более крупным и жирным, не прибегая к программированию.

Для этого мы воспользуемся механизмом условного оформления в СКД:

  1. Перейдем на вкладку «Настройки» и выберем вкладку «Условное оформление».
  2. Добавим новый элемент оформления.
  3. В появившемся окне настроек перейдем в параметр «Оформление» и зададим следующие свойства:
    • Шрифт: Выберем полужирное начертание (Bold) и увеличим размер шрифта, например, до 11 или 12 пунктов.
    • Текст: Введем значение "ВСЕГО ПО ОТЧЕТУ" или любой другой требуемый заголовок.
  4. Вкладку «Условие» мы оставляем пустой, так как оформление должно применяться ко всей строке итогов без ограничений.
  5. Перейдем на вкладку «Оформляемые поля». Если мы хотим переименовать и выделить только саму ячейку с надписью итога, выберем поле, по которому выводятся строки (в нашем случае это Номенклатура). Если нужно выделить всю строку целиком, можно оставить этот список пустым.
  6. Самый важный шаг: Перейдем на вкладку «Область использования». По умолчанию СКД применяет оформление ко всем элементам отчета. Нам необходимо снять все флажки, кроме одного — «В общем итоге». Если в отчете используются промежуточные итоги по группировкам, и их тоже нужно оформить аналогично, можно установить флажок «В группировке».

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

Альтернативный вариант: Использование макетов для сложных итогов

В некоторых случаях стандартного условного оформления бывает недостаточно. Например, если требуется объединить несколько ячеек в строке итогов или задать специфические границы (двойную рамку снизу). В таких ситуациях мы рекомендуем использовать вкладку «Макеты»:

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

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

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

← На главную