|
|
|
СКД как вывести итоги группировки в другой группировке | ☑ | ||
|---|---|---|---|---|
|
0
egorover
27.04.10
✎
11:41
|
Колонки 1 2 3 4
Всего Всего с ком. % от (2/1*100) ?(%>30%,1,0) Кон1 45 16 36% => «1» Заказ1 10 5 50% 1 Заказ2 5 1 20% 0 Заказ3 30 10 33% 1 Кон2 45 16 36% => «1» Заказ1 10 5 50% 1 Заказ2 5 1 20% 0 Заказ3 30 10 33% 1 Итого 90 32 36% СуммаИтогиПоКон1+Кон2 должно быть СуммаИтогиПоКон1+Кон2 = 2 как в запросе или СКД это описать? Помогите пожалуйста, нигде не нашел такой реализации. |
|||
|
1
Garkin
27.04.10
✎
11:46
|
(0)В СКД - два набора данных. Читать в любой книжке по СКД.
|
|||
|
2
egorover
27.04.10
✎
11:49
|
(1) хотябы главу в книге Хрусталева или как сделать? - добавить набор данных и обращаться к ним?
|
|||
|
3
egorover
27.04.10
✎
11:59
|
который в {}?
|
|||
|
4
egorover
27.04.10
✎
13:28
|
(1) пожалуйста подскажите, ну нет нигде
|
|||
|
5
Garkin
27.04.10
✎
14:08
|
(4) В Хрусталевой нет главы посвященной соединению наборов данных? Неверю (с)
|
|||
|
6
egorover
27.04.10
✎
14:34
|
стр. 62 создадим два одинаковых набора? и попытаемся в одном указать Реквизит а в другом Сумма(Реквизит) и свяжем их?
|
|||
|
7
Garkin
27.04.10
✎
15:04
|
(6) ыыыы...
Создадим 2 набора данных Первый должен выдавать таблицу Колонки СуммаИтоги ?(%>30%,1,0) Кон1 «1» Кон2 «1» Итого «2» Второй - таблицу Колонки 1 2 3 Сумма Всего Всего с ком. % от (2/1*100) ?(%>30%,1,0) Кон1 Заказ1 10 5 50% 1 Кон1 Заказ2 5 1 20% 0 Кон1 Заказ3 30 10 33% 1 Кон2 Заказ1 10 5 50% 1 Кон2 Заказ2 5 1 20% 0 Кон2 Заказ3 30 10 33% 1 Итого 90 32 36% 4 Соединяем наборы по "Кон" Для наглядности выводим в СКД рядышком ресурсы "Сумма" и "СуммаИтоги". После просветления колдуем над ресурсами. |
|||
|
8
egorover
27.04.10
✎
15:07
|
(7) сейчас поробую
|
|||
|
9
Kashemir
27.04.10
✎
15:20
|
Также можно форумулы расчета ресурса 4 задать в разрезе группировок
Ресурс4 для всех группировок кроме "общий итог" = Максимум(Выбор когда сумма(Рес2)/Сумма(Рес1) > 0,30 тогда 1 иначе 0 конец) Ресурс4 только для группировки "общий итог" = Сумма(Рес2) + Сумма(Рес1) |
|||
|
10
egorover
27.04.10
✎
16:41
|
(9) Максимум(Выбор когда сумма(Рес2)/Сумма(Рес1) две функции агрегирования работать не будут
|
|||
|
11
egorover
27.04.10
✎
16:46
|
(9) а функция Вычислить() только в контексте текущей группировки вычисляет значения
|
|||
|
12
GRAF_84
27.04.10
✎
16:48
|
Попробуй поколдуй во вкладке ресурсы -> Расчитывать по...
|
|||
|
13
Kashemir
27.04.10
✎
17:52
|
(10) Значит избавься от максимума - и правда здесь не уместен, оставь только "Выбор когда сумма(Рес2)/Сумма(Рес1) > 0,30 тогда 1 иначе 0 конец" для всех
|
|||
|
14
egorover
27.04.10
✎
17:53
|
(13) делал везде получим 1
|
|||
|
15
egorover
27.04.10
✎
17:56
|
(7) вот как бы как раз и получить первую таблицу в СКД с итогом
Колонки СуммаИтоги ?(%>30%,1,0) Кон1 «1» Кон2 «1» Итого «2» такой таблицы неполучишь всегда сумма будет складывать значения нижних группировок |
|||
|
16
Kashemir
27.04.10
✎
18:19
|
(15) Только теперь понял какой результат требуется - тогда ответ дан в (1).
В отличии от соединений в рамках запросов, соединение наборов схемы происходит в момент расчета каждой группировки, потому складываться значение группировок, по которым не было связи не будет. Итого создаем набор1 - с полной детализацией. Набор 2 с детализацией до измерений по которым требуется получить итог. |
|||
|
17
Garkin
27.04.10
✎
18:24
|
(16) Что значит не получишь? Элементарный ведь запрос.
|
|||
|
18
Garkin
27.04.10
✎
18:25
|
Ой, (17) это к (15)
|
|||
|
19
egorover
27.04.10
✎
18:36
|
(15) (17) режте меня прямо здесь, никак непойму как запрос
ВЫБРАТЬ Контрагенты.ГоловнойКонтрагент.Регион.Родитель КАК КонтрагентГоловнойКонтрагентРегионРодитель, Контрагенты.ГоловнойКонтрагент КАК КонтрагентГоловнойКонтрагент, Контрагенты.Ссылка КАК Контрагент, ТаблицаРегистра.СтоимостьОборот КАК СтоимостьОборот, ТаблицаРегистра.КоличествоОборот КАК КоличествоОборот, ТаблицаРегистра.ТипЦен КАК ТипЦен, МАКСИМУМ(ВЫБОР КОГДА ТаблицаРегистра.СтоимостьОборот > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК К ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ТабРегистра.Контрагент КАК Контрагент, ТабРегистра.СтоимостьОборот КАК СтоимостьОборот, ТабРегистра.КоличествоОборот КАК КоличествоОборот, ЦеныНоменклатуры.ТипЦен КАК ТипЦен ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ТабРегистра ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ТабРегистра.Номенклатура = ЦеныНоменклатуры.Номенклатура) КАК ТаблицаРегистра ПО Контрагенты.Ссылка = ТаблицаРегистра.Контрагент СГРУППИРОВАТЬ ПО Контрагенты.ГоловнойКонтрагент.Регион.Родитель, Контрагенты.ГоловнойКонтрагент, Контрагенты.Ссылка, ТаблицаРегистра.СтоимостьОборот, ТаблицаРегистра.КоличествоОборот, ТаблицаРегистра.ТипЦен получить детализацию измерений "выше", получаем тот же запрос |
|||
|
20
egorover
27.04.10
✎
18:38
|
уже при получении данных из РегистрНакопления.Продажи.Обороты там уровень до номенклатуры, "выше" тогда как получить?
|
|||
|
21
egorover
27.04.10
✎
18:50
|
тьфу, ну надоже, получилось
|
|||
|
22
egorover
27.04.10
✎
18:52
|
Garkin и Kashemir огромное спасибо, прям и незнаю 3 дня борюсь
|
|||
|
23
egorover
27.04.10
✎
18:59
|
объясняю для таких как я:
создаем два Набор данных Набор1 запрос (19) + ТаблицаРегистра.Номенклатура, второй Набор2 без ТаблицаРегистра.Номенклатура, Связь между наборами по контрагенту, изменяем реквизит К на КК ВЫБРАТЬ Контрагенты.ГоловнойКонтрагент.Регион.Родитель КАК КонтрагентГоловнойКонтрагентРегионРодитель, Контрагенты.ГоловнойКонтрагент КАК КонтрагентГоловнойКонтрагент, Контрагенты.Ссылка КАК Контрагент, ТаблицаРегистра.СтоимостьОборот КАК СтоимостьОборот, ТаблицаРегистра.КоличествоОборот КАК КоличествоОборот, ТаблицаРегистра.ТипЦен КАК ТипЦен, МАКСИМУМ(ВЫБОР КОГДА ТаблицаРегистра.СтоимостьОборот > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КК ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ТабРегистра.Контрагент КАК Контрагент, ТабРегистра.СтоимостьОборот КАК СтоимостьОборот, ТабРегистра.КоличествоОборот КАК КоличествоОборот, ЦеныНоменклатуры.ТипЦен КАК ТипЦен ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ТабРегистра ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ТабРегистра.Номенклатура = ЦеныНоменклатуры.Номенклатура) КАК ТаблицаРегистра ПО Контрагенты.Ссылка = ТаблицаРегистра.Контрагент СГРУППИРОВАТЬ ПО Контрагенты.ГоловнойКонтрагент.Регион.Родитель, Контрагенты.ГоловнойКонтрагент, Контрагенты.Ссылка, ТаблицаРегистра.СтоимостьОборот, ТаблицаРегистра.КоличествоОборот, ТаблицаРегистра.ТипЦен и в реквизите КК получаем нужные значения |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |