Имя: Пароль:
1C
1С v8
Расчет ресурсов для группировок
0 Astema
 
27.03.18
21:35
Добрый вечер, участники форума. Делаю отчет, подобный Анализу заказов в УТ 10.3, с использованием СКД и столкнулся с проблемой. В отчете есть группировки по Контрагенту, Договору и Заказу, далее идут детальные записи по номенклатуре. Ресурсы: Планируется отгрузить, Осталось отгрузить, Сумма заказа, Осталось оплатить. Если в документе Заказ покупателя более одной строки отчет ставит для каждой строки детальных записей сумму заказа и остаток по оплате. Нужно, чтобы он выводил сумму только для группировок и не задваивал.
Как должно быть: https://cloud.mail.ru/public/A2CX/Ts1Aj4Z2B .
Как получается: https://cloud.mail.ru/public/E6ky/X68Thweoi
Также упрощенная модель базы
https://cloud.mail.ru/public/7bCP/hcryHTrfz

Спасибо за помощь
1 Малыш Джон
 
27.03.18
22:38
(0) На вкладке "ресурсы" для разных уровней группировки прописывай разные выражения
2 Малыш Джон
 
27.03.18
22:40
и почитай про ВычислитьВыражение()
3 Astema
 
27.03.18
23:18
Я так смотрю. Но сработало только для первой группировки Заказ. Пытался сделать вторую группировку, он выдал сообщение: "использование вложенных агрегатных функций не допускается"
4 Sereja
 
27.03.18
23:56
(0) Мысль конечно так себе, но попробуй для группировки "Осталось оплатить" на вкладке ресурсы использовать функцию "Максимум". И ты будешь видеть то, что тебе нужно
5 Astema
 
28.03.18
07:03
(4), спасибо. Функция "Максимум" покажет корректные значения только для самой нижней группировки (Заказ). Если по одному договору несколько заказов, то уже будет неправильное значение данного ресурса
6 LordCMEPTb
 
28.03.18
07:08
Как вариант, можно разбить набор данных на 2:
1 - получение данных по заказу (сумма заказа и остаток по оплате),
2 - получение данных по номенклатуре (планируется отгрузить, осталось отгрузить).
И уже наборы соединить. Можно и объединить, но тогда условия по номенклатуре не будут влиять на заказы.

Если разбить набор не вариант, тогда надо изучать выражение "ВычислитьВыражениеСГруппировкойМассив". Сейчас под рукой данных нет, но скорее всего должно получиться что-то вроде:
Сумма(
    ВычислитьВыражениеСГруппировкойМассив(
        "Максимум(СуммаЗаказа)",
        "Заказ"
    )
)
7 Astema
 
28.03.18
08:34
(6), вот я решил пойти по второму пути, что вы указали. С использованием функции "ВычислитьВыражениеСГруппировкойМассив". Нашел одну небольшую статью http://erpdev.ru/blog/236
Но она работает только для нижнего уровня группировки
8 Малыш Джон
 
28.03.18
08:50
(7) а для верхних отказывается?)))
9 Astema
 
28.03.18
09:13
(7), получается, моя невнимательность))
Предложенное решение (6) помогло. Спасибо всем за помощь!
10 Малыш Джон
 
28.03.18
09:16
(9) вдогонку - может на уровне товара считать сумму товара?Которая на уровне заказа будет просто суммироваться и будет получаться сумма заказа без усложнения вычисления выражений?
11 Astema
 
28.03.18
09:22
(9) Так тоже можно, я думаю. Но для оплаты все равно нужно делать вычисление выражения с помощью предложенной функции
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.