Как вывести дату в строках и ячейках таблицы Компоновки данных (СКД)

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

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

Причина проблемы: особенности кросс-таблиц в СКД

Платформа 1С имеет жесткое ограничение при формировании отчетов типа Таблица (кросс-таблицы). Любое поле, выводимое на пересечении группировок строк и колонок, обязано являться Ресурсом схемы компоновки данных. Если поле ДатаПлатежа добавить в обычные выбранные поля группировки, но не объявить его ресурсом, в ячейках таблицы будет пусто либо данные перестанут выводиться при отключении детальных записей.

Рассмотрим пример исходного запроса отчета:


ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, МЕСЯЦ) КАК Месяц,
    РеализацияТоваровУслуг.ДатаПлатежа
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

Шаг 1. Настройка поля даты в качестве ресурса

Поскольку стандартная функция СУММА не применятся к типу Дата, перейдем на вкладку Ресурсы в схеме компоновки данных и укажем правильные выражения агрегации:

  1. Если на один документ/месяц приходится одна дата: выберем агрегатную функцию МАКСИМУМ(ДатаПлатежа) или МИНИМУМ(ДатаПлатежа).
  2. Если необходимо вывести список нескольких дат в одной ячейке: воспользуемся функцией СоединитьСтроки():

СоединитьСтроки(Формат(ДатаПлатежа, "ДФ=dd.MM.yyyy"), ", ")

Шаг 2. Отключение ненужных общих итогов

При объявлении поля ресурсом СКД автоматически добавляет строки и колонки общих итогов ("Итого" снизу и справа). Если отключить расчет ресурсов в наборе данных полностью, даты пропадут из ячеек. Чтобы правильно скрыть общие итоги, сохраняя данные на пересечениях, выполним настройки оформления:

  1. Перейдем на вкладку Настройки и выберем корневой элемент отчета или конкретную таблицу.
  2. Откроем вкладку Другие настройки в нижней части окна.
  3. Найдем параметры Расположение итогов по горизонтали и Расположение итогов по вертикали и установим для них значение Не выводить.

Шаг 3. Удаление повторяющегося заголовка ресурса в колонках

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

  1. Очистка заголовка: На вкладке Выбранные поля зайдём в свойства поля ДатаПлатежа и укажем в качестве заголовка один символ пробела. Если оставить поле полностью пустым, платформа может автоматически подставить имя поля обратно.
  2. Отключение автопозиции ресурсов: На вкладке Другие настройки установим параметр Автопозиция ресурсов в значение Не использовать.

Шаг 4. Группировка и форматирование периодов

Для создания понятной шапки колонок по месяцам и годам проанализируем структуру группировок колонок таблицы:

  1. Для корректного вывода наименования месяца в наборе данных для поля Месяц настроим свойство Формат: ДФ='MMMM yyyy "г."'.
  2. Если требуется создать двухуровневую шапку (Год -> Месяц), добавим в структуру колонок верхнеуровневую группировку по полю с выражением НАЧАЛОПЕРИОДА(Дата, ГОД), а внутрь нее поместим вложенную группировку Месяц.

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

← На главную