Как правильно одну колонку из запроса разместить по двум разным колонкам в СКД.

1. Serg_2010 23.01.22 11:17 Сейчас в теме
Коллеги, прошу помочь.

В запросе три группировки: товар, склад, регистратор. Запрос получает данные из разных регистров накопления и сведений. В результате запроса получается несколько колонок с выбранными данными из БД и несколько колонок полученных расчетным путем.
И в принципе, если выводить запрос в СКД, с учетом наведения красоты, все работает как надо.
Проблема заключается в том, что одну колонку полученную расчетным путем нужно разместить в две разные колонки в СКД (если число положительное, то размещаем в одну колонку, если отрицательное то в другую) и посчитать итоги по двум колонкам.

Как я делал: в запросе получил все данные. Потом в СКД создал два вычисляемых поля.

В первом прописал условие:
ВЫБОР
КОГДА ДефицитИзлишекСумма<0 ТОГДА ДефицитИзлишекСумма
ИНАЧЕ 0
КОНЕЦ

Во втором наоборот
ВЫБОР
КОГДА ДефицитИзлишекСумма>0 ТОГДА ДефицитИзлишекСумма
ИНАЧЕ 0
КОНЕЦ

Потом эти поля прописал в ресурсах с агрегатной функцией Сумма(ДефицитСумма) и Сумма(ИзбытокСумма).

И получается "каша". По одной номенклатуре СКД стала заполнять суммы как в левой, так и в правой колонке, рассчитывая их группировкам ниже. Пример: у меня отрицательная сумма по номенклатуре - 1000 руб (в колонке из запроса). СКД разбивает эту сумму на две, но в первую колонку ставит 200 руб, а во вторую -1200 руб. В общем получается -1000. (скрин СКД1) Соответственно итоги не реальные. Конечно можно добиться всякими хитростями, чтобы по строкам группировки Номенклатура цифры заполнялись корректно, но итоги по колонкам кривые всегда.

Коллеги, может кто сталкивался с такой проблемой, подскажите, как правильно сделать.
Уже весь мозг сломал.

Во вложении схема. В запросе есть параметр "КоэффициентОстатка". Он дописанный, поэтому при попытке сформировать отчет выйдет ошибка. Но без схемы, тут не разберешься.
Скрин из Excel как должно быть.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. glek 119 23.01.22 16:10 Сейчас в теме
(1) приложите еще скрин, как должно быть.
Кстати, а если попробовать вместо
ВЫБОР
КОГДА ДефицитИзлишекСумма<0 ТОГДА ДефицитИзлишекСумма
ИНАЧЕ 0
КОНЕЦ

Сделать
ВЫБОР
КОГДА Сумма(ДефицитИзлишекСумма)<0 ТОГДА Сумма(ДефицитИзлишекСумма)
ИНАЧЕ 0
КОНЕЦ
?
8. Serg_2010 23.01.22 16:46 Сейчас в теме
3. user1646207 23.01.22 16:16 Сейчас в теме
Думаю, можно воспользоваться методом, доступным в СКД: в настройке ресурсов нужно указать группировку, по которой рассчитываются поля (колонка "Рассчитывать по..."). Добавить пользовательские поля, которые будут рассчитываться только по итогам нужных группировок
5. Serg_2010 23.01.22 16:23 Сейчас в теме
(2)
Сумма(ДефицитИзлишекСумма)<0 ТОГДА Сумма(ДефицитИзлишекСумма)

(3) делал и по группировкам: отдельно прописывал расчет для номенклатуры и обнулял выражение в ресурсах для Склада и Регистратора. Результат тот же самый. Пользовательские поля не использовал.
6. user1646207 23.01.22 16:33 Сейчас в теме
(5)
делал и по группировкам: отдельно прописывал расчет для номенклатуры и обнулял выражение в ресурсах для Склада и Регистратора. Результат

Использовалась функция ВычислитьВыражение?
7. Serg_2010 23.01.22 16:43 Сейчас в теме
(6)тоже пробовал. СКД все равно заполняет значения по обеим колонкам, но уже берет итог по группировке "номенклатура" (т.е. та группировка, которая прописана в функции) и подставляет в колонки. В этом случае итоговые значения по группировке номенклатура заполняются верно, но итоги кривые, опять таки из-за того, что суммы заполняются по двум колонкам.
4. Serg_2010 23.01.22 16:18 Сейчас в теме
Пробовал делать и так. В ресурсах стоит функция по этому полю Сумма(ДефицитСумма), т.е. итог должен быть посчитан по этой колонке. Соответственно, когда я прописывал "Сумма(ДефицитИзлишекСумма)<0 ТОГДА Сумма(ДефицитИзлишекСумма)" вылетала ошибка "Использование агрегатных функций в агрегатных функциях запрещено" (могу ошибаться в формулировке, но смысл, что нельзя считать Сумму в Сумме).
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот