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

  • Автор темы Автор темы puh14
  • Дата начала Дата начала
P

puh14

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

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

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

Это работает

А если

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

то не работает, хотя ограничений по вычисленю я не вижу - может ведь как в предыдущем примере!
 
Ну вот так работает интерпретатор запросов в 1С.
Переходите на прямые запросы к базе и будет вам счастье.
 
Эхх - а в рекордсете обход группировок есть?
 
В результате выполнения запроса получаем плоскую таблицу. Как такового метода обхода группировок нет, но есть возможность получения итогов по необходимым группировкам с указанием, что данная запись является именно группировкой.
В примерах запросов в документации к 1С++ как раз есть такой запрос.
 
Нашел таки как может -

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

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

при таком раскладе хоть и медленно, но работает
 
Ради прикола, приведите полный текст запроса, перекину его на прямой - посмотрите результат.
 
Да знаю я что быстрее - мне сильно лень переделывать выводную таблицу, она в основном на группировках. И сильно много расшифровки используются ( как кстати с этим у рекордсета? Он объекты выдает или только поля?).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!