Имя: Пароль:
1C
1C 7.7
v7: Прямые вложенные запросы
0 BolshoySmal
 
30.09.16
12:31
Добрый день всем. Только изучаю тему. Наступил на грабли. Прошу помощи.
вот такой запрос работает
ТекстЗапроса = "
    |SELECT
    |*
    |FROM
    |(
    |SELECT
    |    Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],  
    |    Рег.Партия as [Партия $Справочник.Партии],
    |    Рег.СуммаБезНДСРасход         as  СуммаБезНДСРасход,
    |    Рег.СуммаУпрРасход           as  СуммаУпрРасход,
    |    Рег.Период Период
    |FROM
    |    $РегистрОстаткиОбороты.ПартииНАличие(:НачДата, :КонДата~, Месяц,,,
    |                                  (МОЛ = :ВыбМол),
    |                                 (Номенклатура,Партия), (СуммаУпр,СуммаБезНДС)) as Рег
    |WHERE
    |   Рег.СуммаУпрРасход>0
    |UNION ALL
    |SELECT
    |    Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],  
    |    Рег.Партия as [Партия $Справочник.Партии],
    |    -1*Рег.СуммаБезНДСПриход         as  СуммаБезНДСПриход,
    |    -1*Рег.СуммаУпрПриход           as  СуммаУпрРасход,
    |    Рег.Период Период
    |FROM
    |    $РегистрОстаткиОбороты.ПартииНАличие(:НачДата, :КонДата~, Месяц,,,
    |                                  (МОЛ IN (SELECT Val FROM #Группа)),
    |                                 (Номенклатура,Партия), (СуммаУпр,СуммаБезНДС)) as Рег
    |WHERE
    |   Рег.СуммаУпрПриход>0 ) As Test1;";


А если вместо звездочки указать например вот так
ТекстЗапроса = "
    |SELECT
    |Test1.Номенклатура
    |FROM
    |(
    |SELECT
    |    Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],  
    |    Рег.Партия as [Партия $Справочник.Партии],
    |    Рег.СуммаБезНДСРасход         as  СуммаБезНДСРасход,
    |    Рег.СуммаУпрРасход           as  СуммаУпрРасход,
    |    Рег.Период Период
    |FROM
    |    $РегистрОстаткиОбороты.ПартииНАличие(:НачДата, :КонДата~, Месяц,,,
    |                                  (МОЛ = :ВыбМол),
    |                                 (Номенклатура,Партия), (СуммаУпр,СуммаБезНДС)) as Рег
    |WHERE
    |   Рег.СуммаУпрРасход>0
    |UNION ALL
    |SELECT
    |    Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],  
    |    Рег.Партия as [Партия $Справочник.Партии],
    |    -1*Рег.СуммаБезНДСПриход         as  СуммаБезНДСПриход,
    |    -1*Рег.СуммаУпрПриход           as  СуммаУпрРасход,
    |    Рег.Период Период
    |FROM
    |    $РегистрОстаткиОбороты.ПартииНАличие(:НачДата, :КонДата~, Месяц,,,
    |                                  (МОЛ IN (SELECT Val FROM #Группа)),
    |                                 (Номенклатура,Партия), (СуммаУпр,СуммаБезНДС)) as Рег
    |WHERE
    |   Рег.СуммаУпрПриход>0 ) As Test1;";
То выдаёт вот такую ошибку :  State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя столбца "Номенклатура".
как посмотреть имен а столбцов результирующей таблицы  ?
1 Ёпрст
 
30.09.16
12:38
(0)выкини нахрен типизацию из вложенного запроса, и больше так не делай.
2 Ёпрст
 
30.09.16
12:39
+1

|SELECT
|Test1.Номенклатура [Номенклатура $Справочник.Номенклатура]  
|FROM
|(
|    SELECT
|    Рег.Номенклатура as Номенклатура,
3 BolshoySmal
 
30.09.16
13:13
Огромный респект !!
4 varelchik
 
30.09.16
13:47
(3) Так это всем известно и никому не интересно!
5 Это_mike
 
30.09.16
13:49
(4) и уже мало кому нужно...
вон, Злоп уже на снеговике первую поделку налабал...
6 BolshoySmal
 
03.10.16
14:37
А что такое  снеговик ?
7 Это_mike
 
03.10.16
14:41
(6) восьмерка...
8 BolshoySmal
 
03.10.16
14:45
на восьмерке  внутренний конструктор очень приличный и использование прямых запросов вообще не поощряется :).
9 Это_mike
 
03.10.16
14:46
(8) на семерке тоже есть нормальный конструктор прямых запросов.
собственно, нормальные запросы там только те, которые прямые. все остальные - кривые :-)
10 BolshoySmal
 
03.10.16
14:50
не совсем согласен, так как выполнение их на клиент-сервере работает вполне прилично.
11 Это_mike
 
03.10.16
14:51
(10) не понял, кто на ком прилично работает, но "чОрные запросы" я на клюшках так и не осилил...
12 BolshoySmal
 
03.10.16
15:29
клиент сервер на MSSQL.
13 orefkov
 
03.10.16
15:30
(11)
Мне, как уже знакомому с скл, они нанесли вывих мозга.