Имя: Пароль:
1C
 
СКД как вывести итоги группировки в другой группировке
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
       КОНЕЦ) КАК КК
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ТабРегистра.Контрагент КАК Контрагент,
           ТабРегистра.СтоимостьОборот КАК СтоимостьОборот,
           ТабРегистра.КоличествоОборот КАК КоличествоОборот,
           ЦеныНоменклатуры.ТипЦен КАК ТипЦен
       ИЗ
           РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ТабРегистра
               ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
               ПО ТабРегистра.Номенклатура = ЦеныНоменклатуры.Номенклатура) КАК ТаблицаРегистра
       ПО Контрагенты.Ссылка = ТаблицаРегистра.Контрагент

СГРУППИРОВАТЬ ПО
   Контрагенты.ГоловнойКонтрагент.Регион.Родитель,
   Контрагенты.ГоловнойКонтрагент,
   Контрагенты.Ссылка,
   ТаблицаРегистра.СтоимостьОборот,
   ТаблицаРегистра.КоличествоОборот,
   ТаблицаРегистра.ТипЦен
и в реквизите КК получаем нужные значения