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