Имя: Пароль:
1C
1С v8
Можно ли в запросе использовать результат функции
0 al_an77
 
16.07.16
11:01
Например в запросе есть строка
Выразить(ТЧ.ЦенаВал * &Курс Как Число(15,2)) как ЦенаРуб
Могу ли в следующей строке запроса обращаться к ценаруб?
Выразить(ценаруб * ТЧ.Количество как число(15,2))
Или придется в каждой строке целиком описывать расчет ценыруб?
1 В тылу врага
 
16.07.16
11:14
придется описывать
но не переживай, сервер БД очень умный и возможно оптимизирует
2 RomanYS
 
16.07.16
11:29
результат запроса во временную таблицу, а в следующем пакете делай с ценаруб что хочешь.
3 В тылу врага
 
16.07.16
11:36
(2) по-моему не стоит того
4 Фрэнки
 
16.07.16
11:45
(0) попробуй конструктором заставить сделать группировку по ЦенаРуб и он тебе покажет, как он это может делать на самом деле и ответит на твой вопрос.

(3) На все случаи не зарекайся. Пакетные запросы и создание виртуальных таблиц тоже имеют право на жизнь
5 Фрэнки
 
16.07.16
11:51
(0) лично я сделал бы отдельной таблицей расчет всех нужных полей, а уже затем выполнил какие-то операции над результирующей. Это если ЦенаРуб нужна в обращениях.
А если нужна перед обработкой результата, то и вычислять ее перед результатом, когда выборка уже определена со составу и осталось только посчитать.

Так и внешне логично, и оптимизатор тебе сюрпрайз не подкинет. Еще можно первую-вторую-промежуточную временную проиндексировать для ускорения соединений и пронести вычисленные данные по многим другим источникам (если их там действительно много и объемы выборки существенные).
6 Горогуля
 
16.07.16
12:03
а на зачем это округление в "следующей строке"?
7 В тылу врага
 
16.07.16
13:23
(4) не зарекаюсь, но они для того чтобы данные не выбирать повторно, а не для отказа от дублирования полей
8 bura_limon
 
16.07.16
20:04
(0) если скуль,то у него есть кэш вызова,если скуль отработал функцию,результат сохр.в кэше,следующий раз он не будет делать запрос снова,а вернет результат из кэша.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн