Имя: Пароль:
1C
1С v8
Суммирование в запросе по различным строкам
,
0 Kaperang
 
27.08.12
11:56
Имеется результат запроса типа

Сотрудник  ПродолжительностьСмены
---------------------------------
Иванов      9
Петров      8
Сидоров     12

Мне нужно получить на выходе дерево значений, где в корневой ветке будет посчитано общее количество часов бригады, а в подчиненных строках - детализация.
В данном случае общее количество часов бригады рассчитать в запросе просто:
"ИТОГИ
Сумма(ПродолжительностьСмены)
ПО
Сотрудник"  
дает правильный результат -29

Далее, имеем результат запроса типа:

Сотрудник  Работа     Загрузка    ПродолжительностьСмены
---------------------------------------------------------
Иванов      Работа1       3                 9
Петров      Работа2       4                 8
Петров      Работа3       2                 8
Сидоров     Работа4       5                 12

Мне точно также необходимо получить дерево запросов с общим количеством часов бригады в корневой ветке.
Конструкция  
"ИТОГИ
Сумма(ПродолжительностьСмены)
ПО
Сотрудник" дает 37.
Правильное количество - 29
Чего то никак не соображу, как получить правильное количество часов :(
1 Kaperang
 
27.08.12
12:09
Вроде с виду задачка-то простенькая, а чего-то никак не вкурю, с какого края за нее взяться
2 Ненавижу 1С
 
гуру
27.08.12
12:11
37 вроде как, если сложить
3 Kaperang
 
27.08.12
12:15
Мне необходимо получить сумму часов по различным строкам. Т.е. чтобы часы по Петрову считались 1 раз, а не 2.
4 rutony
 
27.08.12
12:18
Ну так сделай выборку различных по сотруднику: ВЫБРАТЬ РАЗЛИЧНЫЕ, а потом левым соединением прицепи ПродолжительностьСмены и возьми итоги суммы по сотруднику
5 Zmich
 
27.08.12
12:20
А так не сработает?
ИТОГИ МИНИМУМ(ПродолжительностьСмены)
ПО Сотрудник
6 acsent
 
27.08.12
12:23
на скд можно сделать
7 Kaperang
 
27.08.12
12:23
(5) Да на уровне детализации по сотрудникам отработает. А вот общие итоги....

"ИТОГИ
МИНИМУМ(ПродолжительностьСмены)
ПО
Общие,
Сотрудник"

выдаст заведомо не тот результат.
8 Kaperang
 
27.08.12
12:24
(6) А поподробнее можно?
9 Kaperang
 
27.08.12
12:25
(6) Пробовал с исползованием СКД:

"ПродолжительностьСмены" добавлял в ресурсы. В результате - те же яйца, только сбоку
10 Kaperang
 
27.08.12
12:29
(6)

Вот тестовый запрос, выдающий наш пример:

"ВЫБРАТЬ
   "Иванов" КАК Сотрудник,
   "Работа1" КАК Работа,
   2 КАК Загрузка,
   9 КАК ПродолжительностьСмены

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Петров" КАК Сотрудник,
   "Работа2" КАК Работа,
   4 КАК Загрузка,
   8 КАК ПродолжительностьСмены

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Петров" КАК Сотрудник,
   "Работа3" КАК Работа,
   2 КАК Загрузка,
   8 КАК ПродолжительностьСмены

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Сидоров" КАК Сотрудник,
   "Работа3" КАК Работа,
   5 КАК Загрузка,
   12 КАК ПродолжительностьСмены"

Какие настройки мне выставить в СКД, чтобы получить в общем итоге правильную цифру?
11 Kaperang
 
27.08.12
12:37
(6) Итого, судя по всему, СКД здесь тоже бессилен (((
12 mistеr
 
27.08.12
12:38
(8) Строки размножаются после соединения с другой таблицей, верно? Если соединять не в запросе, а в СКД (связи наборов данных), каждая строка будет учтена в итогах один раз.
13 acsent
 
27.08.12
12:38
(7) нужно делать через объединение:
1 запрос детальные данные, 2 запрос - данные по сотруднику обобщенно
14 Kaperang
 
27.08.12
12:39
(12) Вот, вот примерно это мне и нужно. Буду пробовать
15 nicxxx
 
27.08.12
12:55
16 Kaperang
 
27.08.12
21:51
(15) Коллега, спасибо!

Оказывается, объединение наборов данных в СКД не такая сложная штука.
Очень похоже на объединение данных в запросе, в чем то даже проще.

На тестовом примере алгоритм отладил, счас буду делать реальный отчет.