Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/64: Рейтинг темы: голосов - 64, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 24.03.2018
Сообщений: 2
1

Синтаксическая ошибка в запросе 1С

24.03.2018, 18:19. Показов 12002. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ОказаниеУслуги.МодульОбъекта(42)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(19, 4)}: Синтаксическая ошибка "ОказаниеУслугиПереченьНоменклатуры.НаборСвойств"
<<?>>ОказаниеУслугиПереченьНоменклатуры.НаборСвойств

P.S Я по книги делаю, Радченко, 100 раз все проверил, все сделал как там.
Изначально запрос строился в конструкторе, но после добавление Плана видов характеристик, в документ Оказание услуг добавили поле НаборСвойств и запрос дополнил в ручную этой строкой!

Объясните поподробнее пожалуйста, а то я в 1С пару дней!
код
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
Процедура ОбработкаПроведения(Отказ, Режим)
    
    
    Движения.ОстаткиМатериалов.Записывать = Истина;
    Движения.СтоимостьМатериалов.Записывать = Истина;
    Движения.Продажи.Записывать = Истина;
    
    // Создать менеджер временных таблиц
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    
    #Область НоменклатураДокумента
 
    Запрос = Новый Запрос;
    
     // Укажем, какой менеджер временных таблиц использует этот запрос
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
 
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры 
        |                                                     КАК ВидНоменклатуры,
        |   ОказаниеУслугиПереченьНоменклатуры.НаборСвойств,
        |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) 
        |                                       КАК КоличествоВДокументе,
        |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) 
        |                                    КАК СуммаВДокументе
        |ПОМЕСТИТЬ НоменклатураДокумента
        |ИЗ
        |   Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
        |ГДЕ
        |   ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры
        |   ОказаниеУслугиПереченьНоменклатуры.НаборСвойств ";
 
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
 
    РезультатЗапроса = Запрос.Выполнить();
    #КонецОбласти
    
    
     #Область ДвиженияДокумента
    
    Запрос2 = Новый Запрос;
    Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
    Запрос2.Текст = "ВЫБРАТЬ
                    |    НоменклатураДокумента.Номенклатура,
                    |    НоменклатураДокумента.ВидНоменклатуры,
                    |    НоменклатураДокумента.НаборСвойств,
                    |    НоменклатураДокумента.КоличествоВДокументе,
                    |    НоменклатураДокумента.СуммаВДокументе,
                    |   ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
                    |   ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
                    |ИЗ
                    |    НоменклатураДокумента КАК  НоменклатураДокумента
                    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
                    |               ,
                    |               Материал В
                    |                   (ВЫБРАТЬ
                    |                       НоменклатураДокумента.Номенклатура
                    |                   ИЗ
                    |                       НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
                    |       ПО  НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал
                    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
                    |               ,
                    |               Материал В
                    |                   (ВЫБРАТЬ
                    |                       НоменклатураДокумента.Номенклатура
                    |                   ИЗ
                    |                       НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
                    |       ПО  НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал  ";
                    
                    
        // Установим необходимость блокировки данных в регистрах СтоимостьМатериалов
         // и ОстаткиМатериалов
      Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина;
      Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина;
                    
    // Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе
    Движения.СтоимостьМатериалов.Записать();
    Движения.ОстаткиМатериалов.Записать();
                    
    РезультатЗапроса = Запрос2.Выполнить();
    
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
              СтоимостьМатериала = 0;
         Иначе
              СтоимостьМатериала =
              ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
        КонецЕсли;
        
        
        
        Если ВыборкаДетальныеЗаписи.ВидНоменклатуры =
            Перечисления.ВидыНоменклатуры.Материал Тогда 
            // регистр ОстаткиМатериалов Расход
        Движение = Движения.ОстаткиМатериалов.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
        Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств;
        Движение.Склад = Склад;
        Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
        // регистр СтоимостьМатериалов Расход
        Движение = Движения.СтоимостьМатериалов.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
        Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;
                                                                  
                                                                   
    КонецЕсли;
    
    // Регистр Продажи
        Движение = Движения.Продажи.Добавить();
        Движение.Период = Дата;
        Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        Движение.Клиент = Клиент;
        Движение.Мастер = Мастер;
        Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
        Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
        Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе;
 
    
 
    КонецЦикла;
    Движения.Записать();
    #КонецОбласти
    
    
    #Область КонтрольОстатков
           Если Режим = РежимПроведенияДокумента.Оперативный Тогда
           // Проверить отрицательные остатки
           Запрос3 = Новый Запрос;
           Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;
           Запрос3.Текст = "ВЫБРАТЬ
                           |    ОстаткиМатериаловОстатки.Материал,
                           |    ОстаткиМатериаловОстатки.НаборСвойств,
                           |    ОстаткиМатериаловОстатки.КоличествоОстаток
                           |ИЗ
                           |    РегистрНакопления.ОстаткиМатериалов.Остатки(,(Материал, НаборСвойств)В
                           |                    (ВЫБРАТЬ
                           |                        НоменклатураДокумента.Номенклатура
                           |                        НоменклатураДокумента.НаборСвойств
                           |                    ИЗ
                           |                        НоменклатураДокумента)
                           |                И Склад = &Склад) КАК ОстаткиМатериаловОстатки
                           |ГДЕ
                           |    ОстаткиМатериаловОстатки.КоличествоОстаток < 0 ";
                           
           Запрос3.УстановитьПараметр("Склад", Склад);
           РезультатЗапроса = Запрос3.Выполнить();
           ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
           
              Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
              Сообщение = Новый СообщениеПользователю();
              Сообщение.Текст = "Не хватает " + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) +
                       " единиц материала """ + ВыборкаДетальныеЗаписи.Материал + """" + 
                       " из набора свойств """ + ВыборкаДетальныеЗаписи.НаборСвойств + """";
               Сообщение.Сообщить();
                    Отказ = Истина;
КонецЦикла;
 
            КонецЕсли;
 
#КонецОбласти   
КонецПроцедуры
Миниатюры
Синтаксическая ошибка в запросе 1С  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2018, 18:19
Ответы с готовыми решениями:

Синтаксическая ошибка в запросе
При проведении документа расходная накладная выскакивает ошибка (Синтаксическая ошибка...

Синтаксическая ошибка в запросе
Здравствуйте! Пытаемся изменить документ &quot;Счет на оплату покупателю&quot;, его печатную форму, Для...

синтаксическая ошибка в запросе
Здравствуйте форумчане, На этой строке показывает ошибку, не знаю, где она SqlCommand cmd = new...

Синтаксическая ошибка в запросе
Всем привет. Пишу приложение, взаимодействующие с БД Access, столкнулся с проблемой, что запросы...

3
Модератор
1289 / 809 / 232
Регистрация: 22.04.2013
Сообщений: 5,977
Записей в блоге: 1
24.03.2018, 19:36 2
Лучший ответ Сообщение было отмечено GreenkA как решение

Решение

Цитата Сообщение от Edik111 Посмотреть сообщение
СГРУППИРОВАТЬ ПО
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры
| ОказаниеУслугиПереченьНоменклатуры.НаборСвойств ";
запятую надо поставить
1
Эксперт 1С
3062 / 2009 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
24.03.2018, 19:57 3
Edik111, и используйте "Конструктор запросов", а не переписывайте из книжки текст. Так хотя бы синтаксических ошибок в запросах избежать удастся
0
0 / 0 / 0
Регистрация: 24.03.2018
Сообщений: 2
25.03.2018, 13:58  [ТС] 4
Спасибо за помощь! И за совет )
0
25.03.2018, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2018, 13:58
Помогаю со студенческими работами здесь

Синтаксическая ошибка в запросе
люди помогите понять что не так сервер не хочет выполнять запрос говорит в сроке запроса к базе...

Синтаксическая ошибка в запросе
Помогите пожалуйста с запросами. Те которые я написал, выдают кучу синтаксических ошибок. ...

Синтаксическая ошибка в запросе
я щас лопну от злости!!!! почему не работает String qwe = &quot;SELECT T.id FROM Ліки AS T&quot; + ...

Синтаксическая ошибка в запросе Update
Form1.ADOQuery1.SQL.Add('UPDATE uspev SET ball = '+stringgrid1.Cells+' WHERE (id_student = (SELECT...

Непонятная синтаксическая ошибка в запросе
Не понимаю, в чем тут ошибка синтаксиса. Потратил 2 часа, разглядывая этот код OleDbDataAdapter...

Синтаксическая ошибка в запросе (syntax to use near '' at line 1)
Ответ от сервера MySQL: You have an error in your SQL syntax; check the manual that corresponds to...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru