Имя: Пароль:
1C
1С v8
Расчет вычисляемого поля на уровне группировок, СКД
0 kassbar
 
08.05.18
23:22
<a href="http://www.picshare.ru/view/8781460/"; target="_blank"><img src="http://www.picshare.ru/uploads/180508/40IPopzWd2.jpg"; border="0" width="725" height="206" title="Хостинг картинок PicShare.ru"></a>

Суть задачи - для каждой детальной записи рассчитывается некое вычисляемое поле, достаточно сложным алгоритмом, в разрезе группировки РТУ.
  Нужно вывести на уровне группировок (РТУ и Клиент) суммы этих вычисляемых полей (пример, который нужно получить, на картинке).
На уровне группировки РТУ удалось получить нужное значение в ресурс с помощью функции СУММА(ВычислитьВыражениеСГруппировкойМассив("ВычисляемоеПоле")).
Но на верхних группировках (Клиент) этот способ уже не работает.
Может все-таки есть какой-то способ получить итог вычисляемого поля в группировке, или переносить все расчеты в модули ?
1 kassbar
 
08.05.18
23:23
2 Franchiser
 
гуру
09.05.18
02:05
Можно сделать вычисляемое поле ещё одно, которое будет считать сумму в контексте определенной группировки, тогда ты сможешь его просто указать в ресурсе без функции сумма(). Можно сделать несколько таких вычисляемых полей и указывать на разных уровнях.
3 Franchiser
 
гуру
09.05.18
02:07
Функция Вычислить()
4 Franchiser
 
гуру
09.05.18
02:15
По рисунку у тебя на всех уровнях группировок считается сумма,
не работает Сумма(ВычисляемоеПоле")?
5 kassbar
 
09.05.18
08:35
(4) неа, Сумма(ВычисляемоеПоле) совсем по другому работает, не так как я ожидал. Она складывает не уже рассчитанные вычисляемые поля, а заново их вычисляет. Причем в разрезе той группировки, на уровне которой она установлена. Соответственно, на уровне группировки "Клиент" вычисляемые поля рассчитываются в контексте записей именно этой группировки, и цифры получаются совсем другие (не такие, как на уровне группировки "РТУ")
6 kassbar
 
09.05.18
08:36
(4) на рисунке я руками исправил итог по группировке "Клиент", для наглядности. По факту там другие цифры (не те, что нужно)
7 bolder
 
09.05.18
10:06
(0) ВычислитВыражение сГруппировкой ВМассив имеет параметры.Нужно их задействовать.
8 DrShad
 
09.05.18
10:36
(7)+1
9 kassbar
 
09.05.18
15:01
(7) если речь идет о 2 параметре  "ВыражениеПолейГруппировки" для
ВычислитьВыражениеСГруппировкойМассив(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>)
то я его применял в настройках ресурсов, в разных вариантах
http://www.picshare.ru/view/8782124/
только результат от него все равно не тот, что ожидался:
http://www.picshare.ru/view/8782127/
10 Franchiser
 
гуру
09.05.18
16:24
(5) у меня тоже были сложности с расчетом ресурсов при использовании вычисляемых полей, я решил эту проблему 2мя способами: 1. Использование 2 наборов вместо одного. 2. Использовал функцию вычислитьвыражениесгруппировкоймассив() не в ресурсе а в отдельном ВычисляемоеПоле, которое потом подставил в ресурс.
Как решить конкретно в твоём случае нужно смотреть на твоих данных.
11 Franchiser
 
гуру
09.05.18
16:50
Нашел отчет в котором я экспериментировал:
СуммаСводТест - вычисляемое поле
В ресурсе стоит такое выражение:
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаСводТест)","ПериодМесяц,Комиссионер,Организация,КодСтрокиОтчета"))
12 kassbar
 
09.05.18
17:03
(11) СуммаСводТест - это дополнительное вычисляемое поле ? А сам отчет можешь скинуть ?
13 Franchiser
 
гуру
09.05.18
17:43
(12) нет, это просто ВычисляемоеПоле
Скинуть могу
14 kassbar
 
09.05.18
20:59
15 Franchiser
 
гуру
10.05.18
00:30
(14) отправил
16 kassbar
 
10.05.18
17:42
Похоже что ВычислитьВыражениеСГруппировкойМассив() не будет работать корректно, если в вычисляемом поле используется функция ВычислитьВыражение(Группировка, Первый, Текущий).
По итогу сделал вычисление поля в модуле отчета и вернул результат в СКД в виде внешнего набора данных.
17 kassbar
 
11.05.18
22:48
спасибо Franchiser,
эта функция работает для группировок.
Нужно вызывать ее в виде вложений, на каждом уровне, вот таким образом:    
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(ВычислитьВыражениеСГруппировкойМассив(""ВычисляемоеПоле"", ""Номенклатура""))", "Реализация"))
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн