|
Запрос. Обнуление ассортиментной матрицы Отчет | ☑ | ||
|---|---|---|---|---|
|
0
Juliaa12344
06.04.26
✎
16:33
|
Нужно вывести отчет, где по каждой номенклатуре выводился признак 0 или 1 есть в матрице и есть остаток (Может быть в остатке но не быть в матрице если что)
Потом все единички суммируются и по формуле вычисляется % обнуления матрицы. В целом вот все реализовано, заказчик принял НО попросил так же добавить итоги по категориям номенклатуры. А я ума не приложу как это сделать. У меня сейчас %обнуления показывается только в общем итоге, по детализации там пусто. В коде видно, что я сначала суммирую все детальные единички, а потом уже вставляю сумму в формулу. Но как это сделать на уровне иерархии? Может есть решение? ВЫБРАТЬ ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура, ОстаткиНоменклатурыОстатки.Склад.ТорговыйОбъект КАК Магазин, ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток ПОМЕСТИТЬ ВТ_Остатки ИЗ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&ДатаОтчета, ) КАК ОстаткиНоменклатурыОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ АссортиментнаяМатрицаМагазинаСрезПоследних.Магазин КАК Магазин, АссортиментнаяМатрицаМагазинаСрезПоследних.АссортиментнаяМатрица КАК АссортиментнаяМатрица, СоставМатрицыСрезПоследних.Матрица КАК Матрица, СоставМатрицыСрезПоследних.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ_Матрица ИЗ РегистрСведений.АссортиментнаяМатрицаМагазина.СрезПоследних(&ДатаОтчета, ) КАК АссортиментнаяМатрицаМагазинаСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставМатрицы.СрезПоследних КАК СоставМатрицыСрезПоследних ПО АссортиментнаяМатрицаМагазинаСрезПоследних.АссортиментнаяМатрица = СоставМатрицыСрезПоследних.Матрица ГДЕ СоставМатрицыСрезПоследних.Включена ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Матрица.Магазин КАК Магазин, ВТ_Матрица.АссортиментнаяМатрица КАК АссортиментнаяМатрица, ВТ_Матрица.Матрица КАК Матрица, ВТ_Матрица.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ_ВсеНоменклатура ИЗ ВТ_Матрица КАК ВТ_Матрица ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ АссортиментнаяМатрицаМагазинаСрезПоследних.Магазин, АссортиментнаяМатрицаМагазинаСрезПоследних.АссортиментнаяМатрица, АссортиментнаяМатрицаМагазинаСрезПоследних.АссортиментнаяМатрица, ВТ_Остатки.Номенклатура ИЗ ВТ_Остатки КАК ВТ_Остатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АссортиментнаяМатрицаМагазина.СрезПоследних(&ДатаОтчета, ) КАК АссортиментнаяМатрицаМагазинаСрезПоследних ПО ВТ_Остатки.Магазин = АссортиментнаяМатрицаМагазинаСрезПоследних.Магазин ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ВсеНоменклатура.Магазин КАК Магазин, ВТ_ВсеНоменклатура.АссортиментнаяМатрица КАК АссортиментнаяМатрица, ВТ_ВсеНоменклатура.Матрица КАК Матрица, ВТ_ВсеНоменклатура.Номенклатура КАК Номенклатура, МАКСИМУМ(ВЫБОР КОГДА ВТ_Матрица.Номенклатура ЕСТЬ НЕ NULL ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ЕстьВМатрице, МАКСИМУМ(ВЫБОР КОГДА ЕСТЬNULL(ВТ_Остатки.КоличествоОстаток, 0) > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ЕстьОстаток ПОМЕСТИТЬ ВТ_Детализация ИЗ ВТ_ВсеНоменклатура КАК ВТ_ВсеНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Матрица КАК ВТ_Матрица ПО ВТ_ВсеНоменклатура.Магазин = ВТ_Матрица.Магазин И ВТ_ВсеНоменклатура.Номенклатура = ВТ_Матрица.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки ПО ВТ_ВсеНоменклатура.Магазин = ВТ_Остатки.Магазин И ВТ_ВсеНоменклатура.Номенклатура = ВТ_Остатки.Номенклатура СГРУППИРОВАТЬ ПО ВТ_ВсеНоменклатура.Магазин, ВТ_ВсеНоменклатура.АссортиментнаяМатрица, ВТ_ВсеНоменклатура.Матрица, ВТ_ВсеНоменклатура.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Детализация.Магазин КАК Магазин, ВТ_Детализация.АссортиментнаяМатрица КАК АссортиментнаяМатрица, ВТ_Детализация.Матрица КАК Матрица, СУММА(ВЫБОР КОГДА ВТ_Детализация.ЕстьВМатрице = 1 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК МатрицаSKU, СУММА(ВТ_Детализация.ЕстьОстаток) КАК Остаток ПОМЕСТИТЬ ВТ_Итоги ИЗ ВТ_Детализация КАК ВТ_Детализация СГРУППИРОВАТЬ ПО ВТ_Детализация.Магазин, ВТ_Детализация.АссортиментнаяМатрица, ВТ_Детализация.Матрица ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Детализация.Магазин КАК Магазин, ВТ_Детализация.АссортиментнаяМатрица КАК АссортиментнаяМатрица, ВТ_Детализация.Матрица КАК Матрица, ВТ_Детализация.Номенклатура КАК Номенклатура, СУММА(ВТ_Детализация.ЕстьВМатрице) КАК ЕстьВМатрице, СУММА(ВТ_Детализация.ЕстьОстаток) КАК ЕстьОстаток, (ВТ_Итоги.МатрицаSKU - СУММА(ВТ_Итоги.Остаток)) * 100 / ВТ_Итоги.МатрицаSKU КАК Обнуление, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Итоги.МатрицаSKU) КАК МатрицаSKU, СУММА(ВТ_Итоги.Остаток) КАК Остаток ИЗ ВТ_Детализация КАК ВТ_Детализация ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Итоги КАК ВТ_Итоги ПО ВТ_Детализация.Магазин = ВТ_Итоги.Магазин И ВТ_Детализация.АссортиментнаяМатрица = ВТ_Итоги.АссортиментнаяМатрица И ВТ_Детализация.Матрица = ВТ_Итоги.Матрица ГДЕ (ВТ_Детализация.ЕстьВМатрице = 1 ИЛИ ВТ_Детализация.ЕстьОстаток = 1) СГРУППИРОВАТЬ ПО ВТ_Детализация.Магазин, ВТ_Детализация.АссортиментнаяМатрица, ВТ_Детализация.Матрица, ВТ_Детализация.Номенклатура, ВТ_Итоги.МатрицаSKU, ВТ_Детализация.ЕстьВМатрице, (ВТ_Детализация.ЕстьВМатрице - ВТ_Детализация.ЕстьОстаток) * 100 / ВТ_Детализация.ЕстьВМатрице |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |