Имя: Пароль:
1C
1С v8
СКД. Вычисление выражения по нижестоящей группировке
, , skorm
0 vicof
 
14.03.14
13:54
Пусть есть три группировки Контрагент, Договор, ПериодМесяц и ресурс ОДЗ.
Хочется на уровне группировки по договору для ОДЗ видеть значение ОДЗ по последнему периоду.
Пишу так:
ВычислитьВыражение("СУММА(ОДЗ)", "ПериодМесяц", "Группировка", "Последняя", "Последняя")
рассчитываю это выражение для Договора.
Для остальных группировок просто СУММА(ОДЗ)

В результате в поле ОДЗ для Договора ничего не попадает.
В чем проблема?
1 ИС-2
 
naïve
14.03.14
14:06
2 Armando
 
14.03.14
14:07
(0) Может сортировку надо указать?
3 vicof
 
14.03.14
14:13
(2) Не, сортировка тут не нужна. Если для нижестоящих группировок или ПериодМесяц указывать мое выражение, то для них мое выражение считается нормально, а для вышестоящей не хочет, как у (1)
4 vicof
 
14.03.14
14:41
Призываю Железодемона и Дефендера :)
5 fisher
 
14.03.14
14:58
Проблема в том, что ВычислитьВыражение() не работает для нижестоящих группировок.
6 vicof
 
14.03.14
14:59
(5) Спасибо, тогда как можно поступить?
7 ИС-2
 
naïve
14.03.14
15:00
мне пришлось делать функцию в общем модуле и отправлять туда таблицу значений для расчета
8 fisher
 
14.03.14
15:04
(6) Честно говоря, плохо помню, чем закончились мои борения с аналогичной проблемой. Толи таки красиво решил, то ли выкрутился альтернативно. Попробуй "обернуть" это дело в формуле ресурса ВычислитьВыражениеСГруппировкойМассив(), чтобы "поднять" полученные данные на верхний уровень.
9 fisher
 
14.03.14
15:05
То бишь попробуй в формуле вычисляемого поля ВычислитьВыражение(), а в формуле ресурса по этому полю - ВычислитьВыражениеСГруппировкойМассив()
10 vicof
 
14.03.14
15:07
(9) щас, забацаю
11 fisher
 
14.03.14
15:08
Точно помню, что пробовал этот вариант. Но не могу вспомнить, успешно ли :)
12 Necessitudo
 
14.03.14
15:36
(11) Я пробовал неоднократно. Вполне успешно)
13 Necessitudo
 
14.03.14
15:39
только тут наверное нужно поднимать наверх ТЗ - ВычислитьВыражениеСГруппировкойТаблицаЗначений с колонками Период и ОДЗ - потом передавать эту тз во внешнюю функцию и там считать.
14 vicof
 
14.03.14
16:42
(13) Не хочу корежить модули.
(11) не получается.
http://hkar.ru/qEbK
http://hkar.ru/qEbM

Ругается на то, что не может вычислить выражение
Выражение не может быть вычислено "ОДЗ_ПДЗ.ОДЗ, ПериодМесяц"
15 fisher
 
14.03.14
17:05
Покажи полностью выражение ресурса. И почему "рассчитывать по" стоит "ПериодМесяц"? Вроде ж по договору считать собирался? На этапе экспериментов лучше поубирай везде "Рассчитывать по" и второй ресурс, чтобы не мешались.
16 vicof
 
14.03.14
17:14
И почему "рассчитывать по" стоит "ПериодМесяц"
Это я экспериментирую :)

ВычислитьВыражениеСГруппировкойМассив("Сумма(ОДЗ1)", "ПериодМесяц"), рассчитывать по ДоговорКонтрагента
Остальные расчеты по ресурсам убрал, все равно также ругается, и я так подозреваю на вычисляемое поле.
17 vicof
 
14.03.14
17:23
"подозреваю на вычисляемое поле."
зачеркнуть, написать без на
18 ppdisk
 
14.03.14
17:32
У меня в своё время получлось так: ВычислитьВыражение("Сумма(СуммаОборот)", "", "Группировка")
19 vicof
 
14.03.14
17:51
(18) Так считает, но после этого в ВычислитьВыражениеСГруппировкойМассив("Сумма(ОДЗ1)", "ПериодМесяц") появляются три строчки с нужными суммами за три месяца, как бы мне теперь их отсортироватьи отобрать только одну
20 vicof
 
14.03.14
18:52
(19) Отсортировал. Как получить одну сроку из таблицы?, [0] не катит
21 echo77
 
14.03.14
19:38
(20) Фильтрануть? Применить функцию Максимум()?
22 vicof
 
14.03.14
20:30
не получилось, написал "периодмесяц=максимум(периодмесяц)" в параметре
Закон Брукера: Даже маленькая практика стоит большой теории.