• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

puh14

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

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

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

Это работает

А если

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

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

vitfil

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

puh14

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

vitfil

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

puh14

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

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

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

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

vitfil

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

puh14

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

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