|
Группировки в СКД | ☑ | ||
---|---|---|---|---|
0
Rom_Kat
20.08.18
✎
15:15
|
Требуется вывести значение группировку так, чтобы итоги по верхней группировке считались только в разрезе верхней группировки.
Как можно построить так? Если просто выводить группировку, то итоги в верхней группировке умножаются на количество значений в нижней группировке. Нужно и вывести значения группировки и итоги в верхней вывести корректно. |
|||
1
Rom_Kat
20.08.18
✎
15:25
|
Если Вариант использования группировки Дополнительная информация то Нужное поле не может быть использовано в группировке.
|
|||
2
kittystark
20.08.18
✎
15:27
|
раза 3 перечитал, не понятно что ты хочешь
скрин с примером в студию |
|||
3
Rom_Kat
20.08.18
✎
15:32
|
||||
4
Rom_Kat
20.08.18
✎
15:33
|
так с группировкой Поставщик
|
|||
5
Rom_Kat
20.08.18
✎
15:35
|
https://yadi.sk/i/mavtNfk13aPgV6
а так без группировки Поставщик. Надо чтобы цифры были такие как без группировки, но поставщики выводились. |
|||
6
Deon
20.08.18
✎
15:39
|
(5) Тут надо запрос смотреть. Ибо тут явно поставщик каким левым соединением присоединяется и ресурс задваивается.
А Цыбукова - молодец, хорошие обороты делает |
|||
7
Rom_Kat
20.08.18
✎
15:45
|
(6)с услугами это всегда так. Профит то копеечный.
запрос норм. ВЫБРАТЬ ДоходыПоНаправлениямДеятельностиОбороты.КоммерческаяОперация КАК ПаспортНаПеревозку, ДоходыПоНаправлениямДеятельностиОбороты.СчетНаОплату КАК СчетНаОплату, ДоходыПоНаправлениямДеятельностиОбороты.Контрагент КАК Клиент, ДоходыПоНаправлениямДеятельностиОбороты.СчетНаОплату.Ответственный КАК Менеджер, ДоходыПоНаправлениямДеятельностиОбороты.СуммаОборот КАК СуммаДоход, РасходыПоНаправлениямДеятельностиОбороты.СуммаОборот КАК СуммаРасход, ДоходыПоНаправлениямДеятельностиОбороты.СуммаОборот - РасходыПоНаправлениямДеятельностиОбороты.СуммаОборот КАК СуммаМД ПОМЕСТИТЬ ДоходыРасходы ИЗ РегистрНакопления.ДоходыПоНаправлениямДеятельности.Обороты(&НачалоПериода, &КонецПериода, Период, ) КАК ДоходыПоНаправлениямДеятельностиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасходыПоНаправлениямДеятельности.Обороты(, , Период, ) КАК РасходыПоНаправлениямДеятельностиОбороты ПО ДоходыПоНаправлениямДеятельностиОбороты.СчетНаОплату = РасходыПоНаправлениямДеятельностиОбороты.СчетНаОплату ГДЕ ДоходыПоНаправлениямДеятельностиОбороты.Подразделение = &Подразделение И РасходыПоНаправлениямДеятельностиОбороты.Подразделение = &Подразделение {ГДЕ ДоходыПоНаправлениямДеятельностиОбороты.Контрагент.* КАК Клиент} ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ РасходыПоНаправлениямДеятельности.СчетНаОплату КАК СчетНаОплату, РасходыПоНаправлениямДеятельности.Контрагент КАК Поставщик ПОМЕСТИТЬ Подразделения ИЗ РегистрНакопления.РасходыПоНаправлениямДеятельности КАК РасходыПоНаправлениямДеятельности ГДЕ РасходыПоНаправлениямДеятельности.Подразделение = &Подразделение {ГДЕ РасходыПоНаправлениямДеятельности.Контрагент.* КАК Клиент} ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДоходыРасходы.ПаспортНаПеревозку КАК ПаспортНаПеревозку, ДоходыРасходы.СчетНаОплату КАК СчетНаОплату, ДоходыРасходы.Клиент КАК Клиент, ДоходыРасходы.Менеджер КАК Менеджер, ДоходыРасходы.СуммаДоход КАК СуммаДоход, ДоходыРасходы.СуммаРасход КАК СуммаРасход, ДоходыРасходы.СуммаМД КАК СуммаМД, Подразделения.Поставщик КАК Поставщик {ВЫБРАТЬ ПаспортНаПеревозку.*, СчетНаОплату.*, Клиент.*, Менеджер.*, СуммаДоход, СуммаРасход, СуммаМД, Поставщик.*} ИЗ ДоходыРасходы КАК ДоходыРасходы ВНУТРЕННЕЕ СОЕДИНЕНИЕ Подразделения КАК Подразделения ПО ДоходыРасходы.СчетНаОплату = Подразделения.СчетНаОплату |
|||
8
Rom_Kat
20.08.18
✎
15:46
|
Сделаю только ЛЕВОЕ
|
|||
9
kittystark
20.08.18
✎
15:46
|
в ресурсах что прописано?
просто Сумма() или ВычислитьВыражениеСГруппировкойМассив() ? я бы пошел по второму пути и почему на группировке Поставщик первого скрина ячейки пустые? скорее всего над числовыми полями естьNULL надо применить |
|||
10
Rom_Kat
20.08.18
✎
15:47
|
(9)точно. Ща ресурсы попробую
|
|||
11
Rom_Kat
20.08.18
✎
15:50
|
(9)в выбранных полях по этой группировке только поставщик. Так и надо.
|
|||
12
Rom_Kat
20.08.18
✎
16:16
|
(9) для ресурсов ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаРасход)", "Поставщик")[0] по группировке счет. Но выводятся все элементы массива.
https://yadi.sk/i/VXdK1N4_3aPma6 https://yadi.sk/i/HhUc3E3Q3aPmhe Как вывести первый элемент массива. |
|||
13
azernot
20.08.18
✎
16:17
|
Явно же задваиваютс суммы по счёту.
Вот есть счёт на 1000 руб Вот есть две записи в регистре РасходыПоНаправлениямДеятельности по этому счёту, с разными поставщиками. Что же будет в таблице после соединения? Правильно две записи, обе на 1000 руб. Естественно 2000 руб. Что и видим в результате. Так что хочет автор? Он хочет в итогах видеть 1000 руб, но при этом присоединить кучу поставщиков? Очевидно, что нужно добиться, чтобы в запросе сумма фигурировала только один раз (например, только в первой строке). А лучше всё же подумать, понять задачу, что и для чего делается. Возможно есть более красивое решение. |
|||
14
Rom_Kat
20.08.18
✎
16:20
|
(13)задача как по мне типичная. Простым формированием таблица это конечно же делается тупо и просто. Что вот в этом случае делать с СКД?
|
|||
15
kittystark
20.08.18
✎
16:20
|
по мне так от второго и третьего запроса вообще можно избавиться и дернуть данные тупо добавив нужные поля в первый запрос
|
|||
16
azernot
20.08.18
✎
16:22
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
Подразделения.СчетНаОплату КАК СчетНаОплату, Максимум(Подразделения.Контрагент) КАК Поставщик ПОМЕСТИТЬ МаксимальныеПоставщикиСчетов ИЗ Подразделения ; .... Выбор когда Подразделения.Поставщик = МаксимальныеПоставщикиСчетов.Поставщик ТОгда ДоходыРасходы.СуммаДоход Иначе 0 Конец КАК СуммаДоход, ... ДоходыРасходы КАК ДоходыРасходы ВНУТРЕННЕЕ СОЕДИНЕНИЕ Подразделения КАК Подразделения ПО ДоходыРасходы.СчетНаОплату = Подразделения.СчетНаОплату ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксимальныеПоставщикиСчетов КАК МаксимальныеПоставщикиСчетов ПО ДоходыРасходы.СчетНаОплату = МаксимальныеПоставщикиСчетов.СчетНаОплату |
|||
17
azernot
20.08.18
✎
16:23
|
(14) Ещё раз призываю сформулировать изначальную задачу, в бизнес-терминах. Возможно, есть более красивое решение.
|
|||
18
Rom_Kat
20.08.18
✎
16:28
|
(17)не думаю, что вы хотите увидеть бизнес требования )))
в (13) вы всё верно сформулировали. Нужно получить ресурсы по счёту и к счету вывести поставщиков. |
|||
19
azernot
20.08.18
✎
16:33
|
(18) Чтобы получить гарантированно правильную работу СКД, без извращений, нужно дать ей правильный запрос, с правильным результатом. Как пример в (16).
Но, это дурацкое решение задачи сформулированной вами в технических терминах. Возможно, ваш выбор технического решения бизнес-задачи не оптимален. Поэтому и рекомендую сформулировать бизнес требования. Что это за отчёт? Какую информауию он должен дать? Какие решения будут приниматься на основе этого отчёта? А если поставщиков сделать ресурсом, просто перечислить в отдельном поле через запятую, а не делать измерением, раз уж ресурсы в разрезе поставщиков не агрегируются? |
|||
20
Rom_Kat
20.08.18
✎
16:51
|
(19) по варианту (16) получается то что нужно. Спасибо.
Что касается бизнес требований, то в моём случае это большая роскошь. Они примерно выглядят вот так: https://yadi.sk/i/m1LWN_p73aPreJ В общем где-то примерно может это всё звучать как: Вывести по счету маржинальную прибыть. При этом нужно видеть какие клиенты и поставщики эту прибыль сформировали. |
|||
21
azernot
20.08.18
✎
17:00
|
(20) Хм.. почему бы просто не объединить данные регистров ДоходыПоНаправлениямДеятельности и РасходыПоНаправлениямДеятельности?
Из первого взять клиентов, из второго поставщиков? Тогда сумма расходов расписывалась бы по поставщикам, сумма доходов по клиентам... Ну т.е., к примеру, банально в первом же запросе вывести поле РасходыПоНаправлениямДеятельности.Контрагент КАК Поставщик и переписать получение сумм? Всё равно же там левое соединение является по сути внутренним из-за условия. |
|||
22
kittystark
20.08.18
✎
17:07
|
я в (15) тоже самое говорил
|
|||
23
Rom_Kat
20.08.18
✎
17:08
|
(21)пока так будет. Надо дальше идти.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |