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