Имя: Пароль:
1C
1С v8
СКД: вызов глобальной функции в вычисляемом поле с параметром таблицей значений
0 serzh44
 
27.06.14
02:18
Расчет некоторого ресурса выполняется глобальной функцией, одним из параметров которой является таблица значений. В качестве таблицы значений необходимо передавать табличную часть элемента справочника, т.е. расчет выполняется для элемента справочника на основании данных табличной части.

Для передачи таблицы значений в глобальную функцию в вычисляемом поле использую новую функцию СКД "ТАБЛИЦАЗНАЧЕНИЙ".

Например, если есть справочник "Маршруты" и в нем табличная часть "Пункты", то запрос набора данных выгладит следующим образом:
ВЫБРАТЬ
  Маршруты.Ссылка КАК Маршрут,
  Маршруты.Пункты. (Расстояние КАК Расстояние) КАК Пункты
ИЗ
  Справочник.Маршруты

То, в вычисляемом поле пишу следующее:
глРасчет(Маршрут, ТАБЛИЦАЗНАЧЕНИЙ(Пункты.Расстояние КАК Расстояние))

В результате для детальных записей все работает как надо, но по группировкам не работает расчет итогов путем суммирования, почему-то выводится максимум.

И вообще, путем долгих проб сделал такой вывод. Если есть вычисляемое поле, выражение которого содержит вызов глобальной функции с передачей в качестве одного из параметров таблицы значений, сформированной функцией СКД "ТАБЛИЦАЗНАЧЕНИЙ", то по данному вычисляемому поле не работает суммирование в итогах, почему-то выводится максимум.

А мне нужно выводить в итогах сумму. Может как-то по-другому написать? Такое ощущение, что когда СКД видит функцию "ТАБЛИЦАЗНАЧЕНИЙ", то начинает как-то странно работать.
1 mistеr
 
27.06.14
03:09
А в итогах-то СУММА?
2 serzh44
 
27.06.14
15:50
В итогах сумма. Если в итогах написать "МАССИВ(<ИмяВычисляемогоПоле>)", то выводится только одно значение. Т.е. выходит, что СКД "думает", что для расчета итогов по группировке есть только одно значение.

Визуально это выглядит так: есть 2 группировки. На 2 уровне две строки со значениями 10 и 15. На 1 уровне в итогах будет 15. При этом используется функция "СУММА".
3 Alex S D
 
27.06.14
15:51
а нельзя передать ссылку, а таб. часть получить уже в функции?
4 serzh44
 
27.06.14
23:07
(2) можно, но хотелось, чтобы отчет быстрее строился. Так получится запрос в цикле.
5 mistеr
 
27.06.14
23:51
(4) Можно кэшировать.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.