Подстановка своих функций в запрос 7.7

puh14

Well-Known Member
11.07.2008
1 412
0
#1
Вопрос такой - в запрос в качестве условия можно вывести свою функцию из модуля, и это будет работать. А мож-но ли вывести эту функцию для вычисления значения? Если да - каким образом?

Пример как может
Функция ВозвратСуммы(Док);
Возврат Док.Итог("Всего");
КонецФункции

ТекстЗапроса = "
|Док = Регистр.Деньги.ТекущийДокумент;
|Группировка Док;
|Условие (ВозвратСуммы(док) > 1000);

Это работает

А если

ТекстЗапроса = "
|Док = Регистр.Деньги.ТекущийДокумент;
|Группировка Док;
|Функция суммаДок = ВозвратСуммы(док);

то не работает, хотя ограничений по вычисленю я не вижу - может ведь как в предыдущем примере!
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#2
Ну вот так работает интерпретатор запросов в 1С.
Переходите на прямые запросы к базе и будет вам счастье.
 

puh14

Well-Known Member
11.07.2008
1 412
0
#3
Эхх - а в рекордсете обход группировок есть?
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#4
В результате выполнения запроса получаем плоскую таблицу. Как такового метода обхода группировок нет, но есть возможность получения итогов по необходимым группировкам с указанием, что данная запись является именно группировкой.
В примерах запросов в документации к 1С++ как раз есть такой запрос.
 

puh14

Well-Known Member
11.07.2008
1 412
0
#5
Нашел таки как может -

Функция ВозвратСуммы(Док);
Возврат Док.Итог("Всего");
КонецФункции

ТекстЗапроса = "
|Док = Регистр.Деньги.ТекущийДокумент;
|Группировка Док;
|Функция суммаДок = Сумма(ВозвратСуммы(док));

при таком раскладе хоть и медленно, но работает
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#6
Ради прикола, приведите полный текст запроса, перекину его на прямой - посмотрите результат.
 

puh14

Well-Known Member
11.07.2008
1 412
0
#7
Да знаю я что быстрее - мне сильно лень переделывать выводную таблицу, она в основном на группировках. И сильно много расшифровки используются ( как кстати с этим у рекордсета? Он объекты выдает или только поля?).