|
группировка полей по строкам | ☑ | ||
---|---|---|---|---|
0
Luganchanin
29.08.16
✎
14:57
|
Есть отчет на СКД в котором данные получаются следующим запросом:
ВЫБРАТЬ ОстаткиИПродажи.Номенклатура КАК Номенклатура, Склады.Ссылка КАК Склад, СУММА(ОстаткиИПродажи.ВНаличииОстаток) КАК ОстатокМагазина, СУММА(ОстаткиИПродажи.КоличествоОборот) КАК ПродажиМагазина, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена ПОМЕСТИТЬ ВТ_1 ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток, 0 КАК КоличествоОборот ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаАнализа, Склад = &Склад) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура, 0, ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачалаАнализа, &ДатаАнализа, , Склад = &Склад) КАК ВыручкаИСебестоимостьПродажОбороты) КАК ОстаткиИПродажи ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаАнализа, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ПО ОстаткиИПродажи.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура, Справочник.Склады КАК Склады ГДЕ Склады.Ссылка В(&ЦСклад) СГРУППИРОВАТЬ ПО ОстаткиИПродажи.Номенклатура, Склады.Ссылка, ЦеныНоменклатурыСрезПоследних.Цена ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_1.Номенклатура, ВТ_1.Цена, ВТ_1.ОстатокМагазина, ВТ_1.ПродажиМагазина, ВТ_1.Склад, ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличииОстаток ИЗ ВТ_1 КАК ВТ_1 ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаАнализа, Склад В (&ЦСклад)) КАК СвободныеОстаткиОстатки ПО ВТ_1.Номенклатура = СвободныеОстаткиОстатки.Номенклатура И ВТ_1.Склад = СвободныеОстаткиОстатки.Склад Проблема в следующем: если поставить группировку по номенклатуре по строкам, то поля ОстатокТЦ и ПродажиТЦ суммируются, а если не ставить группировку то тогда каждая номенклатура идет столько раз, сколько доп.складов есть в параметре &ЦСклад Подскажите, люди мудрые, как сгруппировать по номенклатуре таким образом, чтобы поля ОстатокТЦ, ОборотыТЦ и пр. не суммировались |
|||
1
Лефмихалыч
29.08.16
✎
14:59
|
из ресурсов эти поля убери
|
|||
2
Luganchanin
29.08.16
✎
15:06
|
(1) внесение и вынесение этих полей из ресурсов картины не меняет
|
|||
3
Ёпрст
29.08.16
✎
15:10
|
(0) выкинь кросс джоин со справочником Склады.
|
|||
4
Ёпрст
29.08.16
✎
15:10
|
И из селекта тоже выкинь эту дурь.
|
|||
5
Ёпрст
29.08.16
✎
15:11
|
В селект листе смотри на измерение.
Наслаждайся, кушай печенки |
|||
6
Luganchanin
29.08.16
✎
15:27
|
(5) Ёпрст, за печеньки спасибо.
из первого запроса склад убрал, во втором добавил, ибо в результатах нужны остатки по каждому из складов отдельным столбцом. по факту ничего не изменилось в отчете. а что значит смотреть на измерение? У меня для полей Номенклатура и Склад стоит роль "Измерение" |
|||
7
Ёпрст
29.08.16
✎
15:29
|
(6) показывай, че ты там выкинул
|
|||
8
Luganchanin
29.08.16
✎
15:30
|
(7) как-то так получилось:
ВЫБРАТЬ ОстаткиИПродажи.Номенклатура КАК Номенклатура, СУММА(ОстаткиИПродажи.ВНаличииОстаток) КАК ОстатокМагазина, СУММА(ОстаткиИПродажи.КоличествоОборот) КАК ПродажиМагазина, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена ПОМЕСТИТЬ ВТ_1 ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток, 0 КАК КоличествоОборот ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаАнализа, Склад = &Склад) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура, 0, ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачалаАнализа, &ДатаАнализа, , Склад = &Склад) КАК ВыручкаИСебестоимостьПродажОбороты) КАК ОстаткиИПродажи ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаАнализа, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ПО (ОстаткиИПродажи.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура) СГРУППИРОВАТЬ ПО ОстаткиИПродажи.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_1.Номенклатура КАК Номенклатура, ВТ_1.Цена КАК Цена, ВТ_1.ОстатокМагазина КАК ОстатокМагазина, ВТ_1.ПродажиМагазина КАК ПродажиМагазина, СвободныеОстаткиОстатки.Склад, ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличииОстаток ИЗ ВТ_1 КАК ВТ_1 ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаАнализа, Склад В (&ЦСклад)) КАК СвободныеОстаткиОстатки ПО (ВТ_1.Номенклатура = СвободныеОстаткиОстатки.Номенклатура) |
|||
9
Ёпрст
29.08.16
✎
15:33
|
(8) во втором запросе, либо делай соединение и по складу тоже.
А то в одном регистре смотришь останки по одному складу, во втором запросе по-другому, в результате каша мала. |
|||
10
Ёпрст
29.08.16
✎
15:34
|
Нафига 2 разных условия ?
Склад = &Склад и Склад В (&ЦСклад) ? Че с чем "скрещиваешь" ? |
|||
11
Ёпрст
29.08.16
✎
15:37
|
>>>а что значит смотреть на измерение?
Это значит, что в запросе выбирать ТоварыНаСкладахОстатки.Склад или ВыручкаИСебестоимостьПродажОбороты.Склад а не делать кросс джоин с Справочником.Склады |
|||
12
Luganchanin
29.08.16
✎
15:37
|
(10) это два разных параметра.
1-й это склад по которому делается отчет. Т.е. смотрятся остатки и обороты, а из них вычисляются данные для дозаказа а ЦСклад это группа складов (один и более или вообще может не быть) остатки на которых показываются как дополнительная информация |
|||
13
Ёпрст
29.08.16
✎
15:41
|
(12) И ?
вот в первом запросе ты получил валенки , остаток на Склад = 12 штук. Делая левое соединение по номенклатуре, получишь ровно столько строк, сколько было складов в регистре Свободные остатки, где остаток по валенкам был не нуль.. Те так надо ? То и имеешь. |
|||
14
Luganchanin
29.08.16
✎
15:44
|
(13) именно так и получаю
ровно столько раз каждую позицию по номенклатуре сколько дополнительных складов выбрано. но надо как раз чтобы склады из одного столбца развернуть в строку (это СКД сделало) и по номенклатуре остатки на основном складе не суммировались |
|||
15
hhhh
29.08.16
✎
15:57
|
(14) напиши
СГРУППИРОВАТЬ ПО ОстаткиИПродажи.Номенклатура, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) должно быть всё одинаково, чтобы поменьше глюков |
|||
16
Luganchanin
29.08.16
✎
16:01
|
(15) хорошо, но ведь это принципиально ничего не меняет
|
|||
17
Luganchanin
30.08.16
✎
12:18
|
Спасибо, народ. Ошибка самоустранилася.
Судя по всему битая копия базы. Выполнил отчет на другой копии: все отработало как положено |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |