Зачастую требуется сводно получать не совсем связанные данные в одну таблицу. Например, требуется в одной таблице получить данные по продажам товаров и их остаткам на складах.
Номенклатура | Продано | Остаток всего | Склад 1 | Склад 2 | Склад 3 |
Цветок | 12 | 45 | 43 | 2 | |
Носки | 60 | 20 | 20 | 20 | |
Лампа | 10 | ||||
Карандаш | 5 | 5 | 5 | ||
Итого | 27 | 110 | 68 | 20 | 22 |
При этом желательно иметь возможность независимо фильтровать данные в каждом наборе. Это могут быть продажи контрагентам определенной группы или остатки только на определенных складах.
В СКД добавляем набор данных запрос, следующего содержания:
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.Контрагент КАК Контрагент,
ПродажиОбороты.КоличествоОборот КАК КоличествоПродажи,
NULL КАК Склад,
NULL КАК КоличествоОстаток
{ВЫБРАТЬ
Номенклатура.*,
Контрагент.*,
КоличествоПродажи,
Склад,
КоличествоОстаток}
ИЗ
РегистрНакопления.Продажи.Обороты({(&НачПериода)}, {(&КонПериода)}, , {(Номенклатура).*, (Контрагент).*}) КАК ПродажиОбороты
{ГДЕ
ПродажиОбороты.КоличествоОборот КАК КоличествоПродажи}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура,
NULL,
NULL,
ТоварыНаСкладахОстатки.Склад,
ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки({(&КонПериода)}, {(Номенклатура).*, (Склад).*}) КАК ТоварыНаСкладахОстатки
{ГДЕ
ТоварыНаСкладахОстатки.КоличествоОстаток}
То есть по каждому набору отдельная секция объединения.
Отдельно отмечу, чтобы отборы по количеству действительно работали независимо, их описываем в запросе явно в секциях {ГДЕ}.
В полях СКД Склад и Контрагент добавляем в ролях признаки "Измерение" (вообще-то оно автоматом устанавливается) и признак "Игнорировать NULL". Это делается, чтобы не было пустых фантомных строк и колонок, если продажи есть, а остатков нет или наоборот. Редакируем параметры и ресурсы. Наконец, сами настройки:
В группировке строк "Номенклатура" оставляем саму номенклатуру и ее реквизиты, например, артикул.
В детальных записях информация о продажах:
В группировке колонок Склад - информация об остатках:
И для выразительности устанавливаем у этой группировки "Расположение общих итогов" в значение "Начало".
Вот и все, теперь можно проверить, что отборы по продажам и остаткам работают независимо и корректно. При желании у группировки строк "Номенклатура" можно добавить подгруппировку "Контрагент".