Меню

Синтаксическая ошибка выбрать во вложенном запросе

Синтаксическая ошибка ВЫБРАТЬ при выполнении запроса

Синтаксическая ошибка «ВЫБРАТЬ»<?> ВЫБРАТЬ возникает в 1С, когда в тексте запроса идут его блоки в подряд без разделения между собой.

Синтаксическая ошибка ВЫБРАТЬ

Рис.1 Скриншот ошибки «Выбрать»

Например, в случаях:

  • объединения запросов, когда подзапросы должны отделяться служебными словами «ОБЪЕДИНИТЬ» или «ОБЪЕДИНИТЬ ВСЕ«
  • два запроса идущие в подряд для последующей выборки методом ВыбратьПакет(): требуется их разделение » ; «
  • последующая выборка из временной таблицы: также необходимо разделение » ; «
  • неверный синтаксис во вложенном запросе в конструкции ГДЕ Значение В (Выбрать ссылка из Справочники.ПримерСправочника): доступно только сравнение » В ()«, а не «=«, «>» и прочее

Замечу, что такая ошибка возникает при ручной правке текста, поскольку при формировании  конструктором запроса, он вставляет разделители самостоятельно:

Разделение подзапросов

Цифры в начале ошибки (на рисунке — 386,1) —  это номер строки в запросе. При большом тексте  такая информация поможет быстрее локализовать ошибку.

Поведение системы

Выполнение запроса прерывается, но система продолжает работать

Реклама — искусство превращения полуправды в полную ложь.

   AnisaL

20.09.13 — 12:39

Добрый день!

Помогите разобраться где ошибка во вложенном запросе, точнее я не очень понимаю как правильно его написать. Вот кусок запроса, и он выдает ошибку «Синтаксическая ошибка «ВЫБРАТЬ»

        // Цена

                   ВЫБОР

                       КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена

                       Тогда         ВЫБОР     

                                   КОГДА ТЧ.ЦенаВнутренная = 1

                                   ТОГДА

                                   (ВЫБРАТЬ

                                     РаботникиОрганизацийСрезПоследних.Стоимость1часа

                                 ИЗ

                                     РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних

                                 ГДЕ

                                     РаботникиОрганизацийСрезПоследних.Организация = &Организация

                                 АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций                       

                                     ИНАЧЕ ТЧ.ЦенаВнутренная

                             КОНЕЦ

                            
                    ИНАЧЕ 0

                   КОНЕЦ КАК ЦенаРабочаяСмена,

   ДенисЧ

1 — 20.09.13 — 12:40

Не прокатит так.

   AnisaL

2 — 20.09.13 — 12:41

+(0) ошибку выдает на 6 строку (как здесь)

   AnisaL

3 — 20.09.13 — 12:43

(1) ага, не прокатывает, наверно нужно чтобы было предложение с «ИЗ»

   ДенисЧ

4 — 20.09.13 — 12:45

(3) Нужно для начала читать документацию. И осознавать, что запросы 1с — это не запросы SQL

   kanalex

5 — 20.09.13 — 12:46

(0)

а скобку закрыть не пробовали?

   Ёпрст

6 — 20.09.13 — 12:47

(0) в снеговике это не реализовано.. пока

   kanalex

7 — 20.09.13 — 12:47

(4) хотя, конечно, в выражении ВЫБОР так нельзя, видимо

   AnisaL

8 — 20.09.13 — 12:47

(3) смысл этого выбора в том заключается, что сначала идет условие на то что является ли эта номенклатура «Рабочей сменой», если да то опять условие: если Цена(стоимость 1 часа) этой рабочей смены = 1 (такое у нас бывает на внутренние работы), то нужно эту стоимость брать из вложенного подзапроса из период. РС РаботникиОрганизаций, иначе если не равно 1, то из ТЧ — табличной части документа

   Ёпрст

9 — 20.09.13 — 12:48

нет там реализации подзапроса в кейсе

   AnisaL

10 — 20.09.13 — 12:49

(5) в какой строке?

   George Wheels

11 — 20.09.13 — 12:52

В качестве цены у тебя получается результат запроса.

Выбери ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа

   AnisaL

12 — 20.09.13 — 12:52

(4) а какую документацию почитать?

   AnisaL

13 — 20.09.13 — 12:52

(11) да

   AnisaL

14 — 20.09.13 — 12:55

(11) а как это написать ?

   AnisaL

15 — 20.09.13 — 13:00

Написала так:

    // Цена

                   ВЫБОР

                       КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена

                       Тогда         ВЫБОР     

                                   КОГДА ТЧ.ЦенаВнутренная = 1

                                   ТОГДА

                                   ВЫБРАТЬ ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа ИЗ

                                   (ВЫБРАТЬ

                                     РаботникиОрганизацийСрезПоследних.Стоимость1часа

                                 ИЗ

                                     РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних

                                 ГДЕ

                                     РаботникиОрганизацийСрезПоследних.Организация = &Организация

                                 АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций                       

                                     ИНАЧЕ ТЧ.ЦенаВнутренная

                             КОНЕЦ

                            
                    ИНАЧЕ 0

                   КОНЕЦ КАК ЦенаРабочаяСмена,

   AnisaL

16 — 20.09.13 — 13:01

(15) + но все равно ошибка

   catena

17 — 20.09.13 — 13:04

(15)Было же сказано, что не работает так. Можно соединить.

   AnisaL

18 — 20.09.13 — 13:06

(17) а как тогда сделать по-другому?

   manti

19 — 20.09.13 — 13:07

(15) приведи полный текст запроса

   AnisaL

20 — 20.09.13 — 13:08

(19)         

ВЫБРАТЬ

    ДатаСоздания,

    Клиент,

    Сумма(СуммаРабочаяСмена) КАК СуммаРабСмена,

    Сумма(КоличествоРабочаяСмена) КАК КоличествоРабочаяСмена,

    Сумма(ЦенаРабочаяСмена) КАК ЦенаРабочаяСмена,

    Сумма(СуммаДопРаботы) КАК СуммаДопРаботы,

    Сумма(СуммаПитание) КАК СуммаПитание,

    Сумма(СуммаТранспорт) КАК СуммаТранспорт

    ИЗ            

                    
            (ВЫБРАТЬ

            
                 Ссылка.ДатаСоздания,

                 Ссылка.Клиент,

                   // Количество

                   ВЫБОР

                       КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена

                       Тогда ТЧ.Количество

                ИНАЧЕ 0

                   КОНЕЦ КАК КоличествоРабочаяСмена,  

                 ВЫБОР

                       КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена           

                       Тогда ТЧ.Количество

                    ИНАЧЕ 0

                       Конец КАК КоличествоДопРаботы,

                   0 КАК КоличествоПитание,

                   0 КАК КоличествоТранспорт,

                   
                // Цена

                   ВЫБОР

                       КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена

                       Тогда         ВЫБОР     

                                   КОГДА ТЧ.ЦенаВнутренная = 1

                                   ТОГДА

                                   ВЫБРАТЬ ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа ИЗ

                                   (ВЫБРАТЬ

                                     РаботникиОрганизацийСрезПоследних.Стоимость1часа

                                 ИЗ

                                     РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних

                                 ГДЕ

                                     РаботникиОрганизацийСрезПоследних.Организация = &Организация

                                 АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций                       

                                     ИНАЧЕ ТЧ.ЦенаВнутренная

                             КОНЕЦ

                            
                    ИНАЧЕ 0

                   КОНЕЦ КАК ЦенаРабочаяСмена,  

                 ВЫБОР

                       КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена           

                       Тогда ТЧ.ЦенаВнутренная

                    ИНАЧЕ 0

                       Конец КАК ЦенаДопРаботы,

                   0 КАК ЦенаПитание,

                   0 КАК ЦенаТранспорт,

    
                   // Сумма

                   ВЫБОР

                       КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена

                       Тогда ТЧ.Количество*ТЧ.ЦенаВнутренная

                ИНАЧЕ 0

                   КОНЕЦ КАК СуммаРабочаяСмена,  

                 ВЫБОР

                       КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена           

                       Тогда ТЧ.Количество*ТЧ.ЦенаВнутренная

                    ИНАЧЕ 0

                       Конец КАК СуммаДопРаботы,

                   0 КАК СуммаПитание,

                   0 КАК СуммаТранспорт

                      
               ИЗ

                   Документ.ЗаявкаНаряд.Работы КАК ТЧ

               ГДЕ

                   Ссылка.Работы.Исполнитель = &Исполнитель

                   И

                   Ссылка.ДатаСоздания Между &Начало и &Конец

                               
            ОБЪЕДИНИТЬ

              ВЫБРАТЬ

                 Ссылка.ДатаСоздания,

                 Ссылка.Клиент,

                 // Количество

                0 КАК  КоличествоРабочаяСмена,

                   0 КАК  КоличествоДопРаботы,

                      (ВЫБОР

                       Когда ТЧ.Работы.Наименование ПОДОБНО &Питание

                       Тогда

                       ТЧ.Количество

                       КОНЕЦ) КАК КоличествоПитание,

                          (ВЫБОР

                          Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт

                          Тогда

                       ТЧ.Количество

                       Конец) КАК КоличествоТранспорт,

                   // Цена

                   0 КАК  ЦенаРабочаяСмена,

                   0 КАК  ЦенаДопРаботы,

                      (ВЫБОР

                       Когда ТЧ.Работы.Наименование ПОДОБНО &Питание

                       Тогда

                       ТЧ.ЦенаВнутренная

                       КОНЕЦ) КАК ЦенаПитание,

                          (ВЫБОР

                          Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт

                          Тогда

                       ТЧ.ЦенаВнутренная

                       Конец) КАК ЦенаТранспорт,

                // Сумма

                   0 КАК  СуммаРабочаяСмена,

                   0 КАК  СуммаДопРаботы,

                      (ВЫБОР

                       Когда ТЧ.Работы.Наименование ПОДОБНО &Питание

                       Тогда

                       ТЧ.Количество*ТЧ.ЦенаВнутренная

                       КОНЕЦ) КАК СуммаПитание,

                          (ВЫБОР

                          Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт

                          Тогда

                       ТЧ.Количество*ТЧ.ЦенаВнутренная

                       Конец) КАК СуммаТранспорт

                   
                                                   
               ИЗ

                   Документ.ЗаявкаНаряд.НакладныеРасходы КАК ТЧ

               ГДЕ

                   Ссылка.Работы.Исполнитель = &Исполнитель

                   И

                   Ссылка.ДатаСоздания Между &Начало и &Конец ) КАК ВложенныйЗапрос

      
    СГРУППИРОВАТЬ ПО ДатаСоздания, Клиент              

    УПОРЯДОЧИТЬ ПО

             ДатаСоздания, Клиент

    ИТОГИ ПО ОБЩИЕ

   Ёпрст

21 — 20.09.13 — 13:08

(18) см. (9).

   AnisaL

22 — 20.09.13 — 13:10

(21) уже посмотрела, тогда как иначе сделать?

   George Wheels

23 — 20.09.13 — 13:14

Всё-таки лучше через соединение.

   AnisaL

24 — 20.09.13 — 13:15

(22) + понятно что цену можно оставить такой какая есть и уже потом ее вытащить, после выполнения запроса, но хочется чтоб в запросе все считалось

   AnisaL

25 — 20.09.13 — 13:15

(23) а что с чем соединять?

   George Wheels

26 — 20.09.13 — 13:17

ФизЛицо, которое во вложенном запросе есть в документе?

   AnisaL

27 — 20.09.13 — 13:19

(26) оно есть в табличной части, из которой берутся цифры

   Dmitry1c

28 — 20.09.13 — 13:20

Брутально

   George Wheels

29 — 20.09.13 — 13:21

Или соединить документ с регистром по реквизиту Организация (думаю в документе он должен быть). И оставить то же условие по ФизЛицу.

   AnisaL

30 — 20.09.13 — 13:21

(26) в документе есть реквизит «Исполнитель», но бывают случаи когда в ТЧ помимо исполнителя еще другой сотрудник выбран, поэтому физлицо берется из ТЧ документа

   AnisaL

31 — 20.09.13 — 13:22

(29) проблема в том что в документе нету реквизита Организация(

   George Wheels

32 — 20.09.13 — 13:25

(30) Ну так соединяй по ФизЛицу из ТЧ.

   AnisaL

33 — 20.09.13 — 13:26

(31) у нас несколько организаций, но только в одной возможны такие случаи когда стоимость 1 часа = 1, и именно по ней идет отбор в подзапросе

   George Wheels

34 — 20.09.13 — 13:32

Всё, что в ВЫБОР оставляешь.

Вложенный запрос убираешь. Вместо него — РаботникиОрганизацийСрезПоследних.Стоимость1часа

ну и в конце

ИЗ

    Документ.ЗаявкаНаряд.Работы КАК ТЧ

    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) КАК РаботникиОрганизацийСрезПоследних

    ПО ТЧ.Сотрудник = РаботникиОрганизацийСрезПоследних.ФизЛицо

ГДЕ

    …

   AnisaL

35 — 20.09.13 — 13:52

(34) спасибо большое! единственное что получилось так, что когда в регистре РаботникиОрганизаций 1 запись по сотруднику, то запрос правильно выдает, а когда записей в регистре несколько по этому сотрдунику но от разных дат, то Цена 1 часа суммируется

   AnisaL

36 — 20.09.13 — 13:54

(35) + как сделать чтобы выбиралась только последняя запись?

   George Wheels

37 — 20.09.13 — 14:00

(35) СрезПоследних выдаёт несколько записей? Тогда смотри какие ещё измерения у регистра.

   AnisaL

38 — 20.09.13 — 14:02

(37) у регистра 3 измерения: ФизЛицо, Организация, Подразделение

   catena

39 — 20.09.13 — 14:10

(38)Это клево. Какой смысл?

Тогда так

Выбрать РабОрг.Стоимость1часа из (Выбрать физлицо, максимум(период) как Период из РегистрСведений.РаботникиОрганизаций как РаботникиОрганизаций где Организация=&Организация) как ВложеныйЗапрос

Левое соединение РегистрСведений.РаботникиОрганизаций как РабОрг

по РабОрг.Физлицо = ВложеныйЗапрос.Физлицо

и РабОрг.Период = ВложеныйЗапрос.Период

   AnisaL

40 — 20.09.13 — 14:18

(39) этот запрос написать вместо этого ?

    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) КАК РаботникиОрганизацийСрезПоследних

                ПО ТЧ.Исполнитель = РаботникиОрганизацийСрезПоследних.ФизЛицо

   catena

41 — 20.09.13 — 14:23

(40)Вместо РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец)

   AnisaL

42 — 20.09.13 — 14:26

(41) ошибку выдает:

Поле не входит в группу «Физлицо»

Выбрать Физлицо

   catena

43 — 20.09.13 — 14:26

Вот так вернее для ваших целей.

Выбрать РабОрг.Стоимость1часа, РабОрг.Физлицо

из (Выбрать физлицо, максимум(период) как Период из РегистрСведений.РаботникиОрганизаций как РаботникиОрганизаций где Организация=&Организация и Период <=&Конец

Сгруппировать по физлицо

) как ВложеныйЗапрос

Левое соединение РегистрСведений.РаботникиОрганизаций как РабОрг

по РабОрг.Физлицо = ВложеныйЗапрос.Физлицо

и РабОрг.Период = ВложеныйЗапрос.Период

   catena

44 — 20.09.13 — 14:27

(42)Да, группировку забыла, смотри (43)

   AnisaL

45 — 20.09.13 — 14:40

(44) спасибо) только запрос выдает стоимости1часа без отбора по организации

   AnisaL

46 — 20.09.13 — 14:50

(45) разобралась, в конце надо было еще одну строчку добавить

где РабОрг.организация = &Организация (43) чтоб отбор был по организации у второй таблицы

   AnisaL

47 — 20.09.13 — 14:54

(44) запрос вставила вместо РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) выдает ошибку:

Ожидается имя таблицы

<<?>>Выбрать РабОрг.физлицо

   catena

48 — 20.09.13 — 15:02

(47)А скобочки есть?

ЛЕВОЕ СОЕДИНЕНИЕ (ТУТ_ТЕКСТ_ЗАПРОСА)  КАК РаботникиОрганизацийСрезПоследних

                ПО ТЧ.Исполнитель = РаботникиОрганизацийСрезПоследних.ФизЛицо

   AnisaL

49 — 23.09.13 — 07:42

(48) ага спасибо )

   AnisaL

50 — 23.09.13 — 09:58

У меня не считает итог по строке — такое возможно осуществить в запросе?

«ВЫБРАТЬ

|    ДатаСоздания,

|    Клиент,

|    Проведен,

|     Сумма(СуммаРабочаяСмена) КАК СуммаРабочаяСмена,

|     Сумма(КоличествоРабочаяСмена) КАК КоличествоРабочаяСмена,

|     Сумма(ЦенаРабочаяСмена) КАК ЦенаРабочаяСмена,

|     Сумма(СуммаДопРаботы) КАК СуммаДопРаботы,

|     Сумма(СуммаПитание) КАК СуммаПитание,

|     Сумма(СуммаТранспорт) КАК СуммаТранспорт,

|   Сумма(СуммаРабочаяСмена+СуммаДопРаботы+СуммаПитание+СуммаТранспорт) КАК СуммаИтог

   AnisaL

51 — 23.09.13 — 10:00

(50) + т.е. в последней строчке почему-то считает «Суммаитог» как СуммаРабочаяСмена а остальные суммы не прибавляет

  

AnisaL

52 — 23.09.13 — 10:35

(51) а если в ИТогах написать, то получится?

I have this query:

$FullName = mysql_real_escape_string($_REQUEST['name']);
$EmailAdd = mysql_real_escape_string($_REQUEST['email_address']);
$City = mysql_real_escape_string($_REQUEST['city']);
$State = mysql_real_escape_string($_REQUEST['state']);

$SqlEInsert= "INSERT INTO `td_email` VALUES ((SELECT ownerid FROM 'td_events' where event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";

$RsEmail = mysql_query($SqlEInsert) or die('Error :' . mysql_error());

but I’m getting the following error when I run the application

Error :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near »td_events’ where event_id = ‘394’),’email@hotmail.com’,’Full Name’, ‘Atl’ at line 1

j0k's user avatar

j0k

22.4k28 gold badges80 silver badges88 bronze badges

asked Jul 1, 2012 at 16:02

dansasu11's user avatar

3

You don’t need for the table name when you want to use quotes then you have to use `

$SqlEInsert= "INSERT INTO td_email VALUES ((SELECT ownerid FROM td_events WHERE event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";

And please take a look at SQL Injections and Security

$SqlEInsert= "INSERT INTO td_email VALUES ((SELECT ownerid FROM td_events WHERE event_id = '".(int)$EvID."'),'".mysql_real_escape_string($EmailAdd)."','".mysql_real_escape_string($FullName)."', '".mysql_real_escape_string($City)."'  ,'".mysql_real_escape_string($State)."')";

answered Jul 1, 2012 at 16:09

René Höhle's user avatar

René HöhleRené Höhle

26.4k22 gold badges72 silver badges82 bronze badges

The td_event is a field name rather than a value. Escape it with an apostrophe.

$SqlEInsert= "INSERT INTO `td_email` VALUES ((SELECT ownerid FROM `td_events` where event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";

answered Jul 1, 2012 at 16:08

Nikolay Dutchuk's user avatar

Nikolay DutchukNikolay Dutchuk

6832 gold badges6 silver badges11 bronze badges

Make sure your values are escaped. You can run them through: mysql_real_escape_string() to do so.

answered Jul 1, 2012 at 16:05

Micah Carrick's user avatar

Micah CarrickMicah Carrick

9,8073 gold badges31 silver badges42 bronze badges

0

I have this query:

$FullName = mysql_real_escape_string($_REQUEST['name']);
$EmailAdd = mysql_real_escape_string($_REQUEST['email_address']);
$City = mysql_real_escape_string($_REQUEST['city']);
$State = mysql_real_escape_string($_REQUEST['state']);

$SqlEInsert= "INSERT INTO `td_email` VALUES ((SELECT ownerid FROM 'td_events' where event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";

$RsEmail = mysql_query($SqlEInsert) or die('Error :' . mysql_error());

but I’m getting the following error when I run the application

Error :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near »td_events’ where event_id = ‘394’),’email@hotmail.com’,’Full Name’, ‘Atl’ at line 1

j0k's user avatar

j0k

22.4k28 gold badges80 silver badges88 bronze badges

asked Jul 1, 2012 at 16:02

dansasu11's user avatar

3

You don’t need for the table name when you want to use quotes then you have to use `

$SqlEInsert= "INSERT INTO td_email VALUES ((SELECT ownerid FROM td_events WHERE event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";

And please take a look at SQL Injections and Security

$SqlEInsert= "INSERT INTO td_email VALUES ((SELECT ownerid FROM td_events WHERE event_id = '".(int)$EvID."'),'".mysql_real_escape_string($EmailAdd)."','".mysql_real_escape_string($FullName)."', '".mysql_real_escape_string($City)."'  ,'".mysql_real_escape_string($State)."')";

answered Jul 1, 2012 at 16:09

René Höhle's user avatar

René HöhleRené Höhle

26.4k22 gold badges72 silver badges82 bronze badges

The td_event is a field name rather than a value. Escape it with an apostrophe.

$SqlEInsert= "INSERT INTO `td_email` VALUES ((SELECT ownerid FROM `td_events` where event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";

answered Jul 1, 2012 at 16:08

Nikolay Dutchuk's user avatar

Nikolay DutchukNikolay Dutchuk

6832 gold badges6 silver badges11 bronze badges

Make sure your values are escaped. You can run them through: mysql_real_escape_string() to do so.

answered Jul 1, 2012 at 16:05

Micah Carrick's user avatar

Micah CarrickMicah Carrick

9,8073 gold badges31 silver badges42 bronze badges

0

programmist1c82
02.12.2013 02:07 Прочитано: 2873

Доброго времени суток всем. Выбираю для счета услуги (для УТ 10.3).
Написал запрос:
Код 1C v 8.2 УП

 Шапка = Запрос.Выполнить().Выгрузить();
Шапка.Следующий();

СтрокаВыборкиПоляСожержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПокупателя");

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
Запрос.Текст = "
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК НаименованиеПолное,
| ВложенныйЗапрос.Количество КАК Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена КАК Цена,
| ВложенныйЗапрос.Сумма КАК Сумма,
| ВложенныйЗапрос.СуммаНДС КАК СуммаНДС,
| NULL КАК Характеристика,
| NULL КАК Серия,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| Метка
|ИЗ
|(
| ВЫБРАТЬ
| ЗаказПокупателя.Номенклатура,
| ЗаказПокупателя.Количество КАК Количество,
| ЗаказПокупателя.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
| ЗаказПокупателя.Цена КАК Цена,
| ЗаказПокупателя.Сумма КАК Сумма,
| ЗаказПокупателя.СуммаНДС КАК СуммаНДС,
| NULL КАК Характеристика,
| NULL КАК Серия,
| ЗаказПокупателя.НомерСтроки КАК НомерСтроки,
| 1 КАК Метка
| ИЗ
| Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателя
|
| ГДЕ
| ЗаказПокупателя = &ТекущийДокумент
| СРУППИРОВАТЬ ПО
| ЗаказПокупаетля.Номенклатура,
| ЗаказПокупателя.Количество,
| ЗаказПокупателя.Цена
|) КАК ЗаказПокупателя
|УПОРЯДОЧИТЬ ПО
|Метка
|НомерСтроки";

ЗапросТовары = Запрос.Выполнить().Выгрузить();

Форма добавилась, но при печати: Не удалось сформировать внешнюю печатную форму! Ошибка при вызове метода контекста (Выполнить): {(14, 1)}: Синтаксическая ошибка «ИЗ» <<?>>ИЗ

need help on a MySQL query, can’t seem to figure out how to correctly write this statement. I am trying to nest a select in an insert statment and ifnull is also used.

INSERT INTO vo (vo_id, agreement_id, serial_no, vo_date, vo_status) 
VALUES (NULL, '3',  (SELECT IFNULL(max(serial_no),1) FROM vo WHERE agreement_id = '3'), CURDATE(), 'Open')

Any help is appreciated!
Thank you!

EDIT: Error i got in mysql is : #1093 — You can’t specify target table ‘vo’ for update in FROM clause

potashin's user avatar

potashin

43.8k11 gold badges82 silver badges107 bronze badges

asked May 13, 2014 at 19:53

user3448267's user avatar

1

You can get rid of this error by wrapping your subquery in another subquery without WHERE clause :

INSERT INTO vo 
(vo_id, agreement_id, serial_no, vo_date, vo_status) 
VALUES 
(NULL, '3',  (SELECT x.* 
             FROM (SELECT IFNULL(max(serial_no),1) 
                   FROM vo 
                   WHERE agreement_id = '3'
                  ) x), CURDATE(), 'Open')

answered May 13, 2014 at 19:54

potashin's user avatar

potashinpotashin

43.8k11 gold badges82 silver badges107 bronze badges

5

Try this

   INSERT INTO vo (vo_id, agreement_id, serial_no, vo_date, vo_status) 
   VALUES (NULL, '3', (SELECT * from  (SELECT IFNULL(max(serial_no),1) FROM vo WHERE agreement_id = '3')t), CURDATE(), 'Open')

answered May 13, 2014 at 20:01

echo_Me's user avatar

echo_Meecho_Me

36.8k5 gold badges58 silver badges78 bronze badges

1

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Система windows обнаружила на этом диске ошибки которые необходимо исправить восстановите диск ssd
  • Синтаксическая ошибка вставьте variabledeclarators для завершения localvariabledeclaration