• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

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

puh14

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

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

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

Это работает

А если

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

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

vitfil

Ну вот так работает интерпретатор запросов в 1С.
Переходите на прямые запросы к базе и будет вам счастье.
 
P

puh14

Эхх - а в рекордсете обход группировок есть?
 
V

vitfil

В результате выполнения запроса получаем плоскую таблицу. Как такового метода обхода группировок нет, но есть возможность получения итогов по необходимым группировкам с указанием, что данная запись является именно группировкой.
В примерах запросов в документации к 1С++ как раз есть такой запрос.
 
P

puh14

Нашел таки как может -

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

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

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

vitfil

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

puh14

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

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