Как убрать повторяющееся наименование склада и настроить группировки в отчете СКД

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

При разработке отчетов на Системе компоновки данных (СКД) начинающие разработчики часто сталкиваются с проблемой: отчет выглядит «плоским», а данные, по которым нужно подводить итоги (например, Склад или Подразделение), дублируются в каждой строке. Попытка решить эту проблему «в лоб» через изменение текста запроса (использование ОБЪЕДИНИТЬ ВСЕ или UNION ALL) обычно приводит к усложнению кода и трудностям при поддержке. Рассмотрим, как правильно организовать структуру отчета, используя штатные механизмы СКД.

Разбор типичной ошибки: почему объединение таблиц в запросе — это плохо

Проанализируем ситуацию, когда разработчик пытается вручную создать строку итогов в запросе. Обычно это выглядит так: выбираются остатки товаров, а затем к ним через ОБЪЕДИНИТЬ ВСЕ добавляется еще одна выборка, где поля номенклатуры заполнены значением NULL, а заполнено только поле Склад и сумма. Такой подход в СКД считается крайне неэффективным по нескольким причинам:

Шаг 1. Оптимизация текста запроса

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


ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад КАК Склад,
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.Характеристика КАК Партия,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
    ТоварыНаСкладахОстатки.СуммаОстаток КАК Себестоимость,
    ШтрихкодыНоменклатурСрезПоследних.Штрихкод КАК Штрихкод
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатур.СрезПоследних КАК ШтрихкодыНоменклатурСрезПоследних
        ПО ТоварыНаСкладахОстатки.Номенклатура = ШтрихкодыНоменклатурСрезПоследних.Номенклатура

Обратите внимание, что мы не используем виртуальные таблицы внутри вложенных запросов без необходимости. Для корректной работы отчета в реальных условиях не забудьте передать параметры &Период в виртуальные таблицы.

Шаг 2. Настройка ресурсов

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

Шаг 3. Создание структуры группировок

Это ключевой этап, который определяет визуальный вид отчета. Перейдем на вкладку Настройки. Вместо одной группировки Детальные записи, создадим иерархическую структуру:

  1. Нажмем правой кнопкой мыши на «Отчет» и выберем «Новая группировка».
  2. Выберем поле Склад.
  3. Внутри группировки Склад создадим еще одну группировку — Детальные записи (или укажите конкретные поля, например, Номенклатура).

При такой настройке СКД сама выведет строку со складом, подставит туда итоговые значения ресурсов, а ниже выведет все товары, относящиеся к этому складу.

Шаг 4. Настройка расположения группировок

Для того чтобы отчет выглядел эстетично, и наименование склада не дублировалось в каждой колонке рядом с товаром, проанализируем дополнительные настройки отчета (вкладка «Другие настройки»):

Шаг 5. Использование условного оформления для скрытия полей

Если специфика отчета требует, чтобы поле Склад все же присутствовало в выбранных полях детальных записей, но не отображалось текстом (чтобы избежать визуального шума), воспользуемся Условным оформлением:

  1. Перейдем на вкладку «Условное оформление».
  2. Добавим новый элемент оформления.
  3. В параметрах выберем Текст и оставим его пустым.
  4. В условии укажем, что оформление применяется только для области Детальные записи.
  5. В оформляемых полях выберем только поле Склад.

Таким образом, в строках с товарами колонка склада будет пустой, а в строке группировки — заполненной.

Шаг 6. Важные нюансы при соединении таблиц (Роли полей)

Выясним причину, по которой итоги могут «двоиться» при использовании штрихкодов. Если у одной номенклатуры несколько штрихкодов, левое соединение размножит строки с остатками. Чтобы этого не произошло, на вкладке Набор данных нужно правильно настроить Роли:

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

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

← На главную