Как объединить два запроса в СКД и корректно вывести данные в отчет

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

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

Оптимизация структуры запросов

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


ВЫБРАТЬ
    Взаиморасчеты.Период КАК Период,
    Взаиморасчеты.Валюта КАК Валюта,
    СУММА(ВЫБОР КОГДА ВидДанных = "Наши" ТОГДА Сумма ИНАЧЕ 0 КОНЕЦ) КАК НашиДанные,
    СУММА(ВЫБОР КОГДА ВидДанных = "Клиент" ТОГДА Сумма ИНАЧЕ 0 КОНЕЦ) КАК ДанныеКлиента
ИЗ
    РегистрНакопления.Взаиморасчеты.Обороты(&начало, &конец, День, ) КАК Взаиморасчеты
СГРУППИРОВАТЬ ПО
    Взаиморасчеты.Период,
    Взаиморасчеты.Валюта

Использование нескольких наборов данных

Если же логика получения данных кардинально отличается, лучше использовать механизм Набор данных - Объединение. Это позволяет разделить логику выборки на два независимых запроса. Чтобы система понимала, какая строка к какому набору относится, можно добавить в каждый запрос вспомогательное поле с типом Булево или Строка:


// Первый набор данных
ВЫБРАТЬ
    Истина КАК НашиДанные,
    Взаиморасчеты.Период КАК Период,
    Взаиморасчеты.Сумма КАК Сумма
ИЗ ...

// Второй набор данных
ВЫБРАТЬ
    Ложь КАК НашиДанные,
    Взаиморасчеты.Период КАК Период,
    Взаиморасчеты.Сумма КАК Сумма
ИЗ ...

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

Настройка условного оформления для сравнения колонок

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

  1. Перейдите на закладку Условное оформление в настройках СКД.
  2. В поле Оформляемые поля выберите конкретные колонки или оставьте список пустым, чтобы окрашивалась вся строка.
  3. В разделе Условие создайте выражение, сравнивающее ваши показатели. Если вы используете вычисляемые поля, можно создать поле СуммаСовпадает с выражением: ВЫБОР КОГДА Поле1 = Поле2 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ.
  4. Если оформление применяется только к итогам, убедитесь, что в поле Группировка у вас выбраны соответствующие уровни или значение Детальные записи.

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

Советы по работе

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

← На главную