Имя: Пароль:
1C
1С v8
Обращение к полям запроса в самом запросе.
0 Diesellogin
 
09.10.12
22:20
В запросах 1с7.7 можно было обратиться в тексте запроса к полю запроса как ЗАПРОС.Поле.
В 8.2 такое не получается.

Вопрос: как можно обратиться к уже рассчитанному полю в запросе, чтобы обработать его при получении следующих полей?

Пример:
Рассмотри шаблон запрос:
ВЫБРАТЬ
 Ресурс.Рекв1,
 Ресурс.Рекв2,
 .........
 ВЫБОР
   КОГДА Ресурс.Рекв10=1 ТОГДА "А"
   КОГДА Ресурс.Рекв10=2 ТОГДА "B"
   КОГДА Ресурс.Рекв10=3 ТОГДА "С"
   ИНАЧЕ ""
 КОНЕЦ КАК Рекв10,
 ВЫБОР
   КОГДА ЗАПРОС.Рекв10="A" Тогда "выаыв"
   КОГДА ЗАПРОС.Рекв10="B" Тогда "авпвап"
   КОГДА ЗАПРОС.Рекв10="C" Тогда "апрапру"
   ИНАЧЕ ""
 КОНЕЦ КАК Рекв10_2
ИЗ
 Ресурс

Здесь не прокатывает ЗАПРОС.Рекв10
Как можно получить в процессе формирования строк результат запроса уже расчитанное значение поля Рекв10?
Спасибо.
1 Фокусник
 
09.10.12
22:24
(0) можно сделать вложенный запрос и обратиться к его полям
2 rs_trade
 
09.10.12
22:30
(0) в семерке тоже такое не прокатывало, не обманывай.
3 Diesellogin
 
09.10.12
23:15
(1) это запасной варинат, хотелось бы не раздувать запрос )
(2) вот фрагмент из 7.7
   Запрос=СоздатьОбъект("Запрос");
   ТекстЗапроса="
   |Период с ДатаНачала по ДатаКонца;
   |ОбрабатыватьДокументы "+?((ВклПроведенные=1) и (Макс(ВклТекущие, ВклУдаленные)=0), "Проведенные", ?((ВклПроведенные=0) и (Макс(ВклТекущие, ВклУдаленные)=1), "Непроведенные", ?((ВклПроведенные=0) и (Макс(ВклТекущие, ВклУдаленные)=0), "Непроведенные", "Все")))+";
   |Обрабатывать "+?((ВклПроведенные+ВклТекущие>=1) и (ВклУдаленные=1), "Все", ?((ВклПроведенные+ВклТекущие>=1) и (ВклУдаленные=0), "НеПомеченныеНаУдаление", ?((ВклПроведенные+ВклТекущие=0) и (ВклУдаленные=1), "ПомеченныеНаУдаление", "Все")))+";
   |Док    = Документ.ПоступлениеТМЦ.ТекущийДокумент;
   |Фирма    = Документ.ПоступлениеТМЦ.Фирма;
   |УпрАналитика    = Документ.ПоступлениеТМЦ.Фирма.УпрАналитика;
   |ЮрЛицо = Документ.ПоступлениеТМЦ.Фирма.ЮрЛицо;
   |СкладПолучатель    = Документ.ПоступлениеТМЦ.Склад;
   |Поставщик = Документ.ПоступлениеТМЦ.Контрагент;
   |Договор    = Документ.ПоступлениеТМЦ.Договор;
   |ТК = Документ.ПоступлениеТМЦ.ТК;
   |ВхСчет_Дата = Документ.ПоступлениеТМЦ.ВхСчет_Дата;
   |ВхСчет_Номер = Документ.ПоступлениеТМЦ.ВхСчет_Номер;
   |Счет = Документ.ПоступлениеТМЦ.ВхСчет;
   |Номенклатура    = Документ.ПоступлениеТМЦ.Номенклатура;
   |Цена    = Документ.ПоступлениеТМЦ.Цена;
   |КодОперации    = Документ.ПоступлениеТМЦ.КодОперации;
   |ГруппаТоваров=Документ.ПоступлениеТМЦ.ГруппаТоваров_Удобная;
   |ВхСчет_Сумма_врм = Документ.ПоступлениеТМЦ.ВхСчет_Сумма;
   |Объем_врм=Документ.ПоступлениеТМЦ.Объем;
   |Места_врм=Документ.ПоступлениеТМЦ.Места;
   |Масса_врм=Документ.ПоступлениеТМЦ.Масса;
   |";

   ТекстЗапроса=ТекстЗапроса+"
   |ДатаОтгрузкиОтПоставщика = Документ.ПоступлениеТМЦ.ДатаОтгрузкиОтПоставщика;
   |ДатаПогрузкиВТК = Документ.ПоступлениеТМЦ.ДатаПогрузкиВТК;
   |ДатаОтправкиИзТК = Документ.ПоступлениеТМЦ.ДатаОтправкиИзТК;
   |ДатаПоступленияВТК = Документ.ПоступлениеТМЦ.ДатаПоступленияВТК;
   |ДатаПриходованияНаСклад = Документ.ПоступлениеТМЦ.ДатаДок;
   |Функция сч=Счётчик(Номенклатура);
   |Функция ВхСчет_Сумма=Сумма(ВхСчет_Сумма_врм) Когда (Запрос.сч=1);
   |Функция Объем=Сумма(Объем_врм) Когда (Запрос.сч=1);
   |Функция Места=Сумма(Места_врм) Когда (Запрос.сч=1);
   |Функция Масса=Сумма(Масса_врм) Когда (Запрос.сч=1);

последние строчки...
4 Diesellogin
 
09.10.12
23:16
правда здесь применяется к функциям.
5 rs_trade
 
09.10.12
23:24
(3) не путай язык запросов 1с8, который производный от SQL и плод наркотической галюцинации в 1с7.7, которая совсем не SQL.
6 Diesellogin
 
09.10.12
23:39
(5) Согласен ))
остановимся на варианте вложенного запроса (1)
7 vmv
 
09.10.12
23:52
(6) пакетный с вт оптимальнее, вложенные для тюфяков
8 mikecool
 
10.10.12
00:22
мляха муха...

КОГДА Ресурс.Рекв10=1 ТОГДА "А"
  КОГДА Ресурс.Рекв10=2 ТОГДА "B"
  КОГДА Ресурс.Рекв10=3 ТОГДА "С"

   ИНАЧЕ ""
 КОНЕЦ КАК Рекв10,
 ВЫБОР
   КОГДА Ресурс.Рекв10=1 Тогда "выаыв"
   КОГДА Ресурс.Рекв10=2 Тогда "авпвап"
   КОГДА Ресурс.Рекв10=3 Тогда "апрапру"
   ИНАЧЕ ""