|
Отчет в СКД: Вычисление ресурсов при отборе по группировкам? | ☑ | ||
---|---|---|---|---|
0
BigTaur
01.09.16
✎
16:29
|
Добрый день, что-то совсем запутался. В СКД простейший запрос.
ВЫБРАТЬ "ИВАНОВ" КАК Поле1, 225 КАК Поле2, 25 КАК Поле3, ИСТИНА КАК Поле4, "БС1" КАК Поле5, "Док1" КАК Поле6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "ИВАНОВ", 0, 45, ЛОЖЬ, "БС2", "Док2" Группировки Поле1 Поле5 Поле6 Ресурсы Сумма(Поле2) Сумма(Поле3) Максимум(Поле4) Результат: Поле1 Поле2 Поле3 Поле4 Поле5 Поле6 ИВАНОВ 225 70 Да БС1 225 25 Да Док1 225 25 Да БС2 45 Нет Док2 45 Нет Итого 225 Да Ставлю отбор на группировку Поле5 Поле4 = ИСТИНА Результат: Поле1 Поле2 Поле3 Поле4 Поле5 Поле6 ИВАНОВ 225 70 Да Отбор: Поле4 Равно "Да" БС1 225 25 Да Док1 225 25 Да Итого 225 Да Почему он все равно в группировке по Поле1 все равно суммирует все строки - 70? Хотя по идее должно быть 25? И как этого добиться. Пробовал ресурс считать с условием ВЫБОР КОГДА Поле4 = ИСТИНА ТОГДА СУММА(Поле3) ИНАЧЕ 0 КОНЕЦ Поле1 Поле2 Поле3 Поле4 Поле5 Поле6 ИВАНОВ 225 70 Да БС1 225 25 Да Док1 225 25 Да БС2 Нет Док2 Нет Итого 225 Да Все равно суммирует все и получается 70. Чувствую что решение на поверхности, а найти не могу, не по моей логике. А нужно, через отбор сделать, т.к. пользователь должен иметь возможность вкл./выкл. Помогите господа :) |
|||
1
vicof
01.09.16
✎
16:30
|
"Хотя по идее должно быть 25"
По чьей идее? |
|||
2
Jokero
01.09.16
✎
16:39
|
Ставлю отбор на группировку Поле5
Так ставь отбор на весь отчет, раз хочешь видеть результат группировки во всем отчете, а не в отдельной группировке. |
|||
3
BigTaur
01.09.16
✎
17:02
|
(1) По моей идее конечно, которая не всегда совпадает с идеями 1С
|
|||
4
BigTaur
01.09.16
✎
17:08
|
(2) Не подходит на весь отчет, пример не до конца раскрывал суть задачи, попробую объяснить подробней, усложнил запрос:
ВЫБРАТЬ "ИВАНОВ" КАК Поле1, 225 КАК Поле2, 25 КАК Поле3, ИСТИНА КАК Поле4, "БС1" КАК Поле5, "Док1" КАК Поле6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "ИВАНОВ", 0, 45, ЛОЖЬ, "БС2", "Док2" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "ИВАНОВ", 0, 45, ЛОЖЬ, "БС2", "Док3" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "ИВАНОВ", 15, 0, ИСТИНА, "БС2", "Док4" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "ИВАНОВ", 0, 65, ЛОЖЬ, "БС3", "Док1" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "ИВАНОВ", 0, 33, ЛОЖЬ, "БС3", "Док2" Вот его результат: Поле1 Поле2 Поле3 Поле4 Поле5 Поле6 ИВАНОВ 240 213 Да БС1 225 25 Да Док1 225 25 Да БС2 15 90 Да Док2 45 Нет Док3 45 Нет Док4 15 Да БС3 98 Нет Док1 65 Нет Док2 33 Нет Итого 240 213 Да Наложения отбора на весь отчет уберет все строчки с Нет, т.е. строки БС2-ДоК2, БС2-Док4 посчитаны не будут. А мне нужно, чтобы отсекались только группировки где нет, т.е. БС 3 быть не должно, а БС1 и БС2 должны остаться. Но чтобы для Иванова посчиталась сумма Поля3 только по БС1 и БС2 (90+25), а не по всему отчету. |
|||
5
aleks_default
01.09.16
✎
17:20
|
Отбор все равно работает для исходной таблицы, до того как СКД навешивает на нее структуру группировок. Поэтому тебе нужно максимум вычислять в запросе
|
|||
6
BigTaur
02.09.16
✎
11:21
|
(5) Не понятно, причем тут максимум? Нужно чтобы Поле 4 по строкам Док не "смотрело". А считало по группировкам БС с учетом отбора, если у БС поле4=да, то прибавляем если нет то не учитываем.
|
|||
7
BigTaur
02.09.16
✎
15:41
|
Подскажите если кто знает, что отбор по группировке применяется после того как уже ресурсы посчитаны что-ли? Почему ресурсы рассчитываются не смотря на этот отбор? Пробовал через ВЫЧИСЛИТЬВЫРАЖЕНИЕ (EVALEXPRESSION)
Описание ИТС: Функция предназначена для вычисления выражения в контексте некоторой группировки... Функция учитывает отбор группировок, но не учитывает иерархические отборы... А фиг там,есть отбор нет отбора, как считало нижний уровень, так и считает... Может я, что не так делаю??? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |