ОБСУЖДЕНИЕ

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

8 ответов 18,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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

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

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

Это работает

А если

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

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

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

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

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