Имя: Пароль:
1C
1С v8
помогите с функцией ВычислитьВыражение
0 Сильф
 
29.09.15
13:26
Коллеги, растолкуйте, пожалуйста, всю голову себе сломал уже.
СКД. В одной из группировок нужно выдавать значение = значение родительской группировки  (неважно, какая она) * некий коэффициент. В описание функции ВычислитьВыражение говорится буквально следующее:

ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)

Параметры:

Выражение. Тип Строка. Содержит вычисляемое выражение;
Группировка. Тип Строка. Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.

То есть, чтобы указать, что вычислять нужно от родительской группировки, мне обязательно нужно задавать её имя? А если пользователь поменяет структуру отчета? (так и сделал, цифры "поехали", ага) Что делать, куды бечь?
1 MiamiVice
 
29.09.15
13:33
Что-то не понял, что значит "родительская группировка". Вроде написано или явно указываешь группировку или оставляешь пустой - тогда вычисление по текущей группировке.
2 Сильф
 
29.09.15
13:40
Пример:

Подразделение
+----Проект
+-------День

Я подразумеваю, что:
"День" - текущая группировка, в ней нужно считать значение
"Проект" - "родительская" группировка

Если мы поменяем структуру:
Проект
+----Подразделение
+-------День

то для группировки "День" родительской будет "Подразделение", и значение должно считаться от значения в этой группировке

у меня сейчас написано
ВычислитьВыражение("--выражение--", "Проект") * (Коэффициент * 0.01)

Пробовал убирать имя группировки - не считает тогда вообще ничего.
3 Сильф
 
29.09.15
14:01
Или, может, вообще что-то другое здесь нужно?
4 aleks_default
 
29.09.15
14:08
Чтобы цифры "не ехали", нужно заполнять поля в "расчитывать по"
5 Сильф
 
29.09.15
14:42
(4) они заполнены.
6 ЧеловекДуши
 
29.09.15
14:50
(0) Может просто, слепи второй Подзапрос (Набор данных № 2) и все :)
7 ЧеловекДуши
 
29.09.15
14:50
(4) Нет, ненужно :)
8 ЧеловекДуши
 
29.09.15
14:51
+(6) С нужным отбором и группировкой
9 Сильф
 
29.09.15
20:33
В общем, кому интересно - обошёл проблему следующим образом. В процедуре "ПриКомпоновкеРезультата" выясняю, какая группировка в текущих настройках является родительской у груп-ки "День", и на лету в схеме компоновки 1. убиваю все поля итогов (ресурсы), выражения которых нужно поменять; 2. добавляю новые поля итогов, с новыми выражениями. На первый взгляд, похоже на извращение, но код достаточно компактен, хотя и не универсален.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший