Имя: Пароль:
1C
1C 7.7
v7: Не получается получить имя колонки подзапроса 1с++ Класс ПрямойЗапрос
0 botman4
 
26.08.18
09:49
ТекстЗапроса = " Select Товар  from (Select ID as [Товар :Справочник.Номенклатура] from Справочник.Номенклатура) ";    

Ругается на  " no such column: Товар "

Как обратиться именно к колонке по имени?
1 Sserj
 
26.08.18
10:09
Типизировать колонку запроса нужно только в итоговой выборке, так как эту типизацию будет обрабатывать уже 1С++ а не sql сервер. Сам сервер выражение [Товар :Справочник.Номенклатура] воспринимает просто как длинное имя колонки.
Поэтому должно выглядеть вот так:

Select Товар as [Товар :Справочник.Номенклатура] from (Select ID as [Товар] from Справочник.Номенклатура)
2 Sserj
 
26.08.18
10:16
И кстати если используешь именно "ПрямойЗапрос" то типизации лучше писать как в мануале используя "$" а не ":" и использовать синонимы. Так как двоеточие воспринимает sqlite но не воспримет MS SQL и еще куча всяких нюансов в трансформации.
Тобишь лучше для класса будет:

ВЫБРАТЬ Товар КАК [Товар :Справочник.Номенклатура]
ИЗ (ВЫБРАТЬ $Товары.ТекущийЭлемент КАК [Товар] ИЗ Справочник.Номенклатура КАК Товары $nolock)

$nolock - вырежется при использовании sqlite и трансформируется в (nolock) для MSSQL
3 Sserj
 
26.08.18
10:17
У самого двоеточие не убралось :)

ВЫБРАТЬ Товар КАК [Товар $Справочник.Номенклатура]
ИЗ
(
  ВЫБРАТЬ $Товары.ТекущийЭлемент КАК [Товар]
  ИЗ Справочник.Номенклатура КАК Товары $nolock
  )
4 botman4
 
26.08.18
10:31
Спасибо. Буду пробовать.