|
v8: Итоги по периодам в запросе | ☑ | ||
---|---|---|---|---|
0
Sanya ZH
02.09.11
✎
15:13
|
Здравствуйте, помогите разобраться, почему в отчете при выборе разных группировок по периоду выводятся разные итоги, уже сломал всю голову.
|
|||
1
Sanya ZH
02.09.11
✎
15:16
|
ВЫБРАТЬ
СУММА(ЕСТЬNULL(ТаблицаРегистра.Стоимость, 0)) КАК Стоимость, СУММА(ТаблицаРегистраСредняяСебестоимость.Стоимость) КАК СредняяСебестоимость, СпрНоменклатура.Ссылка КАК Номенклатура, ТаблицаДат.Период КАК Период, НАЧАЛОПЕРИОДА(ТаблицаДат.Период, ДЕНЬ) КАК ПериодДень, НАЧАЛОПЕРИОДА(ТаблицаДат.Период, МЕСЯЦ) КАК ПериодМесяц {ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Номенклатура, (НАЧАЛОПЕРИОДА(ТаблицаДат.Период, ДЕНЬ)) КАК ПериодДень, (НАЧАЛОПЕРИОДА(ТаблицаДат.Период, МЕСЯЦ)) КАК ПериодМесяц} ИЗ Справочник.Номенклатура КАК СпрНоменклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК НомерДняИзДиапазона ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd ПО (ИСТИНА) ГДЕ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ)) КАК ТаблицаДат ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПродажиОборот.СтоимостьОборот КАК Стоимость, НАЧАЛОПЕРИОДА(ПродажиОборот.Период, ДЕНЬ) КАК Период, ПродажиОборот.Номенклатура КАК Номенклатура, ПродажиОборот.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, Номенклатура = &Номенклатура) КАК ПродажиОборот ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНач, &ДатаКон, Регистратор, Номенклатура = &Номенклатура) КАК ТаблицаРегистраСебестоимость ПО ПродажиОборот.Номенклатура = ТаблицаРегистраСебестоимость.Номенклатура И ПродажиОборот.ХарактеристикаНоменклатуры = ТаблицаРегистраСебестоимость.ХарактеристикаНоменклатуры И ПродажиОборот.Регистратор = ТаблицаРегистраСебестоимость.Регистратор ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СУММА(ЕСТЬNULL(ПродажиСебестоимость.Стоимость, 0)) КАК СтоимостьОборот, ПродажиСебестоимость.Номенклатура КАК Номенклатура, ПродажиСебестоимость.ДокументДвижения КАК ДокументДвижения, ПродажиСебестоимость.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры ИЗ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость СГРУППИРОВАТЬ ПО ПродажиСебестоимость.Номенклатура, ПродажиСебестоимость.ДокументДвижения, ПродажиСебестоимость.ХарактеристикаНоменклатуры) КАК ТаблицаРегистраСебестоимостьКорректировка ПО ПродажиОборот.Номенклатура = ТаблицаРегистраСебестоимостьКорректировка.Номенклатура И ПродажиОборот.ХарактеристикаНоменклатуры = ТаблицаРегистраСебестоимостьКорректировка.ХарактеристикаНоменклатуры И ПродажиОборот.Регистратор = ТаблицаРегистраСебестоимостьКорректировка.ДокументДвижения) КАК ТаблицаРегистра ПО СпрНоменклатура.Ссылка = ТаблицаРегистра.Номенклатура И (ТаблицаДат.Период = ТаблицаРегистра.Период) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Оборот1.Дата КАК ДатаС, МИНИМУМ(ВЫБОР КОГДА Оборот2.Дата ЕСТЬ NULL ТОГДА КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ) ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Оборот2.Дата, ДЕНЬ, -1), ДЕНЬ) КОНЕЦ) КАК ДатаПо, Оборот1.СтоимостьКонечныйОстаток КАК Стоимость, Оборот1.Номенклатура КАК Номенклатура, Оборот1.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры ИЗ (ВЫБРАТЬ ПартииТоваровНаСкладах.Период КАК Дата, ПартииТоваровНаСкладах.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток, ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры ИЗ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, , Номенклатура = &Номенклатура) КАК ПартииТоваровНаСкладах) КАК Оборот1 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПартииТоваровНаСкладах.Период КАК Дата, ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры ИЗ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, , Номенклатура = &Номенклатура) КАК ПартииТоваровНаСкладах) КАК Оборот2 ПО Оборот1.Дата < Оборот2.Дата И Оборот1.Номенклатура = Оборот2.Номенклатура И Оборот1.ХарактеристикаНоменклатуры = Оборот2.ХарактеристикаНоменклатуры СГРУППИРОВАТЬ ПО Оборот1.Дата, Оборот1.СтоимостьКонечныйОстаток, Оборот1.Номенклатура, Оборот1.ХарактеристикаНоменклатуры) КАК ТаблицаРегистраСредняяСебестоимость ПО СпрНоменклатура.Ссылка = ТаблицаРегистраСредняяСебестоимость.Номенклатура И (ТаблицаДат.Период МЕЖДУ ТаблицаРегистраСредняяСебестоимость.ДатаС И ТаблицаРегистраСредняяСебестоимость.ДатаПо) ГДЕ СпрНоменклатура.Ссылка = &Номенклатура {ГДЕ СпрНоменклатура.Ссылка КАК Номенклатура} СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка, ТаблицаДат.Период {УПОРЯДОЧИТЬ ПО СпрНоменклатура.Ссылка КАК Номенклатура} ИТОГИ СУММА(Стоимость), СУММА(СредняяСебестоимость) ПО ОБЩИЕ, Номенклатура, ПериодМесяц КАК ПериодМесяц {ИТОГИ ПО Номенклатура.* КАК Номенклатура, (НАЧАЛОПЕРИОДА(ТаблицаДат.Период, ДЕНЬ)) КАК ПериодДень, (НАЧАЛОПЕРИОДА(ТаблицаДат.Период, МЕСЯЦ)) КАК ПериодМесяц} АВТОУПОРЯДОЧИВАНИЕ |
|||
2
Sanya ZH
02.09.11
✎
15:23
|
Если в отчете присутствует группировка по дням, то данные выводятся правильные, стоит оставить только группировку по месяцам, показывает какую-то ерунду.
|
|||
3
SaM58
02.09.11
✎
15:24
|
что это???
|
|||
4
kible
02.09.11
✎
15:25
|
Читай ИТС. И периодичность "Авто" поставь.
|
|||
5
Sanya ZH
02.09.11
✎
15:32
|
Мне нужно посчитать за каждый день оборот по регистру продажи и на конец каждого дня остаток по партиям, т.е в итого получить следующую формулу:
(валовая прибыль за период)/(средняя себестоимость за период), где средняя себестоимость = (остаток на каждый день)/(число дней за период) а период может быть любой, кратный месяцам, кварталам и т.д. |
|||
6
Sanya ZH
02.09.11
✎
15:39
|
Если в консоле запросов запустить запрос, как он есть, то все считает правильно (только я еще не сделал деление на число дней в периоде), а если убрать из группировки ПериодДень и убрать Период из выбранных полей, т.е. сделать шруппировку по месяцам, то суммы средней себестоимости вообще не те.
|
|||
7
Sanya ZH
02.09.11
✎
16:09
|
Смотрю отчет с группировкой по месяцам за март: сумма "средней" себестоимости стоит 24591,40, нажимаешь на расшифровку этой суммы по дням сумма в итогах 762333,40
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |