|
Нарастающий итог по числу (без периодов) | ☑ | ||
---|---|---|---|---|
0
newbling
10.08.16
✎
12:14
|
Доброго времени суток. Решил запилить 'свой' ABC анализ, т.е. выделить номенклатуру, приносящую наибольшую часть прибыли. Нашёл кучу инфы по нарастающему итогу, где связь устанавливается по Период >= Период, но в данном случае, мне бы хотелось просто просуммировать по возрастанию значения доли прибыли. Вот что сейчас есть:
ВЫБРАТЬ СУММА(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот) КАК ОбщееКоличество, СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК ОбщаяВыручка, СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот - ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот) КАК ОбщаяПрибыль, 1 КАК Поле1 ПОМЕСТИТЬ ОбщаяСумма ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура, СУММА(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК СуммаВыручкиОборот, СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот - ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот) КАК Прибыль, ВыручкаИСебестоимостьПродажОбороты.ПериодМесяц, 1 КАК Поле1 ПОМЕСТИТЬ Суммы ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты, ОбщаяСумма КАК ОбщаяСумма СГРУППИРОВАТЬ ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура, ВыручкаИСебестоимостьПродажОбороты.ПериодМесяц ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Суммы.АналитикаУчетаНоменклатурыНоменклатура КАК Номенклатура, Суммы.КоличествоОборот, Суммы.СуммаВыручкиОборот, Суммы.Прибыль, Суммы.ПериодМесяц, ВЫБОР КОГДА ЕСТЬNULL(ОбщаяСумма.ОбщееКоличество, 0) = 0 ТОГДА 0 ИНАЧЕ Суммы.КоличествоОборот / ОбщаяСумма.ОбщееКоличество КОНЕЦ КАК ДоляКоличества, ВЫБОР КОГДА ЕСТЬNULL(ОбщаяСумма.ОбщаяВыручка, 0) = 0 ТОГДА 0 ИНАЧЕ Суммы.СуммаВыручкиОборот / ОбщаяСумма.ОбщаяВыручка КОНЕЦ КАК ДоляВыручки, ВЫБОР КОГДА ЕСТЬNULL(ОбщаяСумма.ОбщаяПрибыль, 0) = 0 ТОГДА 0 ИНАЧЕ Суммы.Прибыль / ОбщаяСумма.ОбщаяПрибыль КОНЕЦ КАК ДоляПрибыли ИЗ Суммы КАК Суммы ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма ПО Суммы.Поле1 = ОбщаяСумма.Поле1 Так вот, в итоге, у нас есть табличка с Номенклатурой, количеством, долей количества, выручкой, долей выручки и прибылью, долей прибыли. Я попробовал выделить в вт Номенклатуру, долю прибыли, соединить вт саму с собой так: ВЫБРАТЬ СуммыИДоли.Номенклатура, СуммыИДоли.ДоляПрибыли, СУММА(ТеЖеСуммыИДоли.ДоляПрибыли) КАК ДоляПрибылиНарастающийИтог ИЗ СуммыИДоли КАК СуммыИДоли ЛЕВОЕ СОЕДИНЕНИЕ СуммыИДоли КАК ТеЖеСуммыИДоли ПО СуммыИДоли.ДоляПрибыли >= ТеЖеСуммыИДоли.ДоляПрибыли И СуммыИДоли.Номенклатура = ТеЖеСуммыИДоли.Номенклатура СГРУППИРОВАТЬ ПО СуммыИДоли.Номенклатура, СуммыИДоли.ДоляПрибыли Но в итоге, нарастающий итог получается равен доле прибыли. Я так понимаю, что это из-за того, что я соединяю по суммируемому полю. Как быть? |
|||
1
newbling
10.08.16
✎
12:25
|
пардон, я зря там установил
И СуммыИДоли.Номенклатура = ТеЖеСуммыИДоли.Номенклатура Без него что-то такое считается. Надо ещё раскурить устраивает ли меня >= или надо <= или просто > или < в ПО СуммыИДоли.ДоляПрибыли >= ТеЖеСуммыИДоли.ДоляПрибыли |
|||
2
newbling
10.08.16
✎
12:29
|
Да, прикольный метод соединения самого с собой, конечный правильный результат для такой задачи:
ВЫБРАТЬ СуммыИДоли.Номенклатура, СуммыИДоли.ДоляПрибыли, СУММА(ТеЖеСуммыИДоли.ДоляПрибыли) КАК ДоляПрибыли1 ИЗ СуммыИДоли КАК СуммыИДоли ЛЕВОЕ СОЕДИНЕНИЕ СуммыИДоли КАК ТеЖеСуммыИДоли ПО СуммыИДоли.ДоляПрибыли <= ТеЖеСуммыИДоли.ДоляПрибыли СГРУППИРОВАТЬ ПО СуммыИДоли.Номенклатура, СуммыИДоли.ДоляПрибыли |
|||
3
newbling
10.08.16
✎
12:30
|
Молодец (0)
"Сам себя не похвалишь - никто не похвалит" © |
|||
4
aleks_default
10.08.16
✎
12:48
|
я бы точно за такое не похвалил
|
|||
5
newbling
10.08.16
✎
12:56
|
(4) жалко, что в инете не передаётся интонация - это сарказм.
Ну а вообще, по поводу оптимизации, говорите |
|||
6
newbling
16.08.16
✎
09:52
|
Ещё можно в СКД использовать ВычислитьВыражение() =D
|
|||
7
Dragner
16.08.16
✎
10:07
|
Опиши логику, чего хочешь добиться. Потому как ABC анализом пока не "пахнет".
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |