![]() |
![]() |
![]() |
|
Общие итоги в УО | ☑ | ||
---|---|---|---|---|
0
John83
11.11.14
✎
16:43
|
УТ 10.3
Соединяю регистр продаж и свой РС, нужно вывести общие итоги, но что-то идея не идет.. ВЫБРАТЬ ПродажиОбороты.Контрагент КАК Контрагент, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПоказателиДляРасчетаВаловойПрибыли.Бонус КАК Бонус ИЗ РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказателиДляРасчетаВаловойПрибыли КАК ПоказателиДляРасчетаВаловойПрибыли ПО ПродажиОбороты.Контрагент = ПоказателиДляРасчетаВаловойПрибыли.Покупатель ИТОГИ ВЫБОР КОГДА ДокументПродажи ЕСТЬ НЕ NULL ТОГДА 0 КОГДА Контрагент ЕСТЬ НЕ NULL ТОГДА СУММА(Бонус) / КОЛИЧЕСТВО(ДокументПродажи) КОГДА Контрагент ЕСТЬ NULL И ДокументПродажи ЕСТЬ NULL ТОГДА СУММА(Бонус) / КОЛИЧЕСТВО(ДокументПродажи) * КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагент) ИНАЧЕ 0 КОНЕЦ КАК Бонус ПО ОБЩИЕ, Контрагент, ДокументПродажи |
|||
1
John83
11.11.14
✎
16:44
|
ТОГДА СУММА(Бонус) / КОЛИЧЕСТВО(ДокументПродажи) * КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагент)
хорошо считает, когда для каждого контрагента заполнен РС, но что делать, когда это не так? |
|||
2
Крошка Ру
11.11.14
✎
16:46
|
(1) Предусмотреть случай когда Бонус Есть Null
|
|||
3
John83
11.11.14
✎
16:48
|
(2) типа
КОГДА Бонус ЕСТЬ NULL ТОГДА 0 ?? не прокатывает |
|||
4
Крошка Ру
11.11.14
✎
16:50
|
(3) Нет
ЕстьNull(Бонус,0) |
|||
5
Крошка Ру
11.11.14
✎
16:51
|
+(4) И всегда при левом соединении, рекомендую предусматривать, что параметр из правой таблицы может быть NUll
|
|||
6
John83
11.11.14
✎
16:57
|
(4) (5) ты об этом?
ВЫБРАТЬ ПродажиОбороты.Контрагент КАК Контрагент, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ЕСТЬNULL(ПоказателиДляРасчетаВаловойПрибыли.Бонус, 0) КАК Бонус ИЗ РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказателиДляРасчетаВаловойПрибыли КАК ПоказателиДляРасчетаВаловойПрибыли ПО ПродажиОбороты.Контрагент = ПоказателиДляРасчетаВаловойПрибыли.Покупатель ИТОГИ ВЫБОР КОГДА ДокументПродажи ЕСТЬ НЕ NULL ТОГДА 0 КОГДА Контрагент ЕСТЬ НЕ NULL ТОГДА СУММА(Бонус) / КОЛИЧЕСТВО(ДокументПродажи) КОГДА Контрагент ЕСТЬ NULL И ДокументПродажи ЕСТЬ NULL ТОГДА СУММА(Бонус) / КОЛИЧЕСТВО(ДокументПродажи) * КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагент) ИНАЧЕ 0 КОНЕЦ КАК Бонус ПО ОБЩИЕ, Контрагент, ДокументПродажи |
|||
7
Крошка Ру
11.11.14
✎
17:17
|
(6) Ну, главным образом, я говорил об итогах, но и в выбираемых поля, да, тоже.
|
|||
8
John83
11.11.14
✎
18:17
|
ТОГДА СУММА(естьnull(Бонус, 0)) / КОЛИЧЕСТВО(ДокументПродажи) * КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагент)
и что от этого меняется? все равно не понял тебя |
|||
9
John83
12.11.14
✎
15:42
|
тут получается, что надо искать количество "бонусных" покупателей, но там есть и другие поля - получится нагромождение. Может есть другие варианты?
|
|||
10
John83
13.11.14
✎
10:34
|
в итоге имеем такой вариант
ВЫБРАТЬ ПродажиОбороты.Контрагент КАК Контрагент, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи ПОМЕСТИТЬ Продажи ИЗ РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Продажи.Контрагент) КАК КонтрагентБонус, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Продажи.ДокументПродажи) КАК ДокументПродажиБонус ПОМЕСТИТЬ Бонусы ИЗ Продажи КАК Продажи ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоказателиДляРасчетаВаловойПрибыли КАК ПоказателиДляРасчетаВаловойПрибыли ПО Продажи.Контрагент = ПоказателиДляРасчетаВаловойПрибыли.Покупатель ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Контрагент КАК Контрагент, Продажи.ДокументПродажи КАК ДокументПродажи, ПоказателиДляРасчетаВаловойПрибыли.Бонус КАК Бонус, Бонусы.КонтрагентБонус, Бонусы.ДокументПродажиБонус ИЗ Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказателиДляРасчетаВаловойПрибыли КАК ПоказателиДляРасчетаВаловойПрибыли ПО Продажи.Контрагент = ПоказателиДляРасчетаВаловойПрибыли.Покупатель, Бонусы КАК Бонусы ИТОГИ ВЫБОР КОГДА ДокументПродажи ЕСТЬ НЕ NULL ТОГДА 0 КОГДА Контрагент ЕСТЬ НЕ NULL ТОГДА СУММА(Бонус) / КОЛИЧЕСТВО(ДокументПродажи) КОГДА Контрагент ЕСТЬ NULL И ДокументПродажи ЕСТЬ NULL ТОГДА СУММА(Бонус) / МАКСИМУМ(Бонусы.ДокументПродажиБонус) * МАКСИМУМ(Бонусы.КонтрагентБонус) ИНАЧЕ 0 КОНЕЦ КАК Бонус ПО ОБЩИЕ, Контрагент, ДокументПродажи |
|||
11
John83
13.11.14
✎
10:35
|
может кто-нить посоветует вариант "покрасивше"?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |