Im having issues trying to figure out this syntax error. Heres the SQL query:
SQL QUERY
SELECT oh.date_modified, oh.physicianNote, os.name AS status
FROM order oh
LEFT JOIN order_status os ON oh.order_status_id = os.order_status_id
WHERE oh.order_id = '118' AND os.language_id = '1'
ORDER BY oh.date_added ASC LIMIT 0,10
SQL ERROR
1064 — 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 ‘order oh LEFT JOIN order_status os ON oh.order_status_id =
os.order_status_i’ at line 2
Not really sure whats wrong with it.
Guffa
684k108 gold badges733 silver badges1000 bronze badges
asked Sep 14, 2012 at 15:38
ORDER
is a reserved word. Quote it in backticks:
SELECT oh.date_modified, oh.physicianNote, os.name AS status
FROM `order` oh LEFT JOIN order_status os USING (order_status_id)
WHERE oh.order_id = '118' AND os.language_id = '1'
ORDER BY oh.date_added
LIMIT 0,10
answered Sep 14, 2012 at 15:39
eggyaleggyal
122k18 gold badges209 silver badges236 bronze badges
«ORDER» is reserved word. This is error. Use the word order Quote in backticks
answered Sep 14, 2012 at 15:40
JhonathanJhonathan
1,6112 gold badges13 silver badges24 bronze badges
29.04.13 — 12:00
Я только начал разбираться в 8-ке. Так что не бейте сильно.
В обработке подбора, при подборе по справочнику, необходимо добавить колонку с ценами рядом с остатками. Так вот хочу организовать это в том же запросе где и остатки достаются. добавил необходимого кода но он что то ругается, выдает ошибку :
{(72, 1)}: Синтаксическая ошибка «ЛЕВОЕ»
<<?>>ЛЕВОЕ СОЕДИНЕНИЕ
подскажите в чем дело?
Вот код:
ТекстЗапроса = »
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыНаСкладах.Номенклатура КАК Номенклатура,
// ++ Роман
| ЦеныНоменклатурыСрезПоследних.Цена,
// ++
| СУММА( ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0.00)
| — ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0.00)
| — ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0.00)
| » + ?(СтруктураЗаказов = Неопределено,»»,»+ ЕСТЬNULL(ТоварыВРезерве.КоличествоОстаток, 0.00)») + »
| ) КАК КоличествоСвободныйОстаток,
| СУММА(ЕСТЬNULL(ОстаткиОрганизации.КоличествоОстаток, 0.00)) КАК КоличествоОстатокОрганизации
|ИЗ
| (ВЫБРАТЬ
| ОбщиеОстатки.Номенклатура КАК Номенклатура,
| ОбщиеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ОбщиеОстатки.Качество КАК Качество,
| СУММА(ОбщиеОстатки.КоличествоОстаток) КАК КоличествоОстаток
| ИЗ
| («;
ТекстЗапроса = ТекстЗапроса + ПолучитьСтрокуЗапросаСвободныеОстатки(Новый Структура(«ТоварыНаСкладах,ТоварыВРознице,ТоварыОрганизаций,ТоварыВНТТ»), ТекстУсловияКачества, Истина);
ТекстЗапроса = ТекстЗапроса + »
| ) КАК ОбщиеОстатки
| СГРУППИРОВАТЬ ПО
| ОбщиеОстатки.Номенклатура, ОбщиеОстатки.ХарактеристикаНоменклатуры, ОбщиеОстатки.Качество
| ) КАК ТоварыНаСкладах
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата, » + мУсловиеНоменклатураСклад + «) КАК ТоварыВРезервеНаСкладах
|ПО
| ТоварыВРезервеНаСкладах.Номенклатура = ТоварыНаСкладах.Номенклатура
| И ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
| И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
// ++ Роман
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|ПО
| ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладах.Номенклатура.Ссылка
|ГДЕ
| (ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа = ЛОЖЬ
| И ЦеныНоменклатурыСрезПоследних.ТипЦен = ТипЦен)
// ++
|»;
1 — 29.04.13 — 12:06
И как то читать?
Поставь точку останова после формирования текста запроса.
И выложи нормальный запрос.
2 — 29.04.13 — 12:06
Конструктором запроса пользуйся
3 — 29.04.13 — 12:11
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
ДобавитьВременнуюТаблицу(Запрос);
//Если УчитыватьЗаказ[«СтруктураЗаказов»] равен Неопределено значит в запросе не нужно считать по заказам в резерве
//иначе нужно считать заказы в резерве
УчитыватьЗаказ = ПолучитьСтруктуруЗаказовВРезерве();
ДокументРезерва = Неопределено;
ВидРегистраПлюсСвободныйОстаток = Неопределено;
УчитыватьЗаказ.Свойство(«ДокументРезерва» , ДокументРезерва);
УчитыватьЗаказ.Свойство(«ВидРегистраПлюсСвободныйОстаток», ВидРегистраПлюсСвободныйОстаток);
СтруктураЗаказов = УчитыватьЗаказ[«СтруктураЗаказов»];
ЗаказИзШапки = УчитыватьЗаказ[«ЗаказИзШапки»];
Запрос.УстановитьПараметр(«ДокументРезерва» , ДокументРезерва);
Запрос.УстановитьПараметр(«Дата» , КонецДня(ДатаРасчетов));
Запрос.УстановитьПараметр(«МассивНоменклатуры» , МассивНоменклатуры);
Запрос.УстановитьПараметр(«Склад» , Склад);
Запрос.УстановитьПараметр(«Организация» , Организация);
Запрос.УстановитьПараметр(«ТипЦен» , СтруктураИсходныхПараметров.ТипЦен);
Запрос.УстановитьПараметр(«РазворачиватьДоКачества», РазворачиватьДоКачества);
СформироватьОтборыДляЗапросов(Новый Структура(«Организация, Склад, ДатаЗапроса, МассивНоменклатуры», Организация, Склад, ДатаРасчетов, МассивНоменклатуры), Истина);
СтруктураЗапросаОстаткиНоменклатурыСХарактеристиками(ДатаРасчетов, СтруктураИсходныхПараметров, Новый Структура(«ПоказыватьОстатки,ПоказыватьКолонки», Истина, ЭлементыФормы.ПоказыватьОстатки.Значение), РазворачиватьДоКачества);
ТекстУсловияКачества = » И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ»;
ТекстЗапроса = »
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыНаСкладах.Номенклатура КАК Номенклатура,
// ++ Роман
| ЦеныНоменклатурыСрезПоследних.Цена,
// ++
| СУММА( ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0.00)
| — ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0.00)
| — ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0.00)
| » + ?(СтруктураЗаказов = Неопределено,»»,»+ ЕСТЬNULL(ТоварыВРезерве.КоличествоОстаток, 0.00)») + »
| ) КАК КоличествоСвободныйОстаток,
| СУММА(ЕСТЬNULL(ОстаткиОрганизации.КоличествоОстаток, 0.00)) КАК КоличествоОстатокОрганизации
|ИЗ
| (ВЫБРАТЬ
| ОбщиеОстатки.Номенклатура КАК Номенклатура,
| ОбщиеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ОбщиеОстатки.Качество КАК Качество,
| СУММА(ОбщиеОстатки.КоличествоОстаток) КАК КоличествоОстаток
| ИЗ
| («;
ТекстЗапроса = ТекстЗапроса + ПолучитьСтрокуЗапросаСвободныеОстатки(Новый Структура(«ТоварыНаСкладах,ТоварыВРознице,ТоварыОрганизаций,ТоварыВНТТ»), ТекстУсловияКачества, Истина);
ТекстЗапроса = ТекстЗапроса + »
| ) КАК ОбщиеОстатки
| СГРУППИРОВАТЬ ПО
| ОбщиеОстатки.Номенклатура, ОбщиеОстатки.ХарактеристикаНоменклатуры, ОбщиеОстатки.Качество
| ) КАК ТоварыНаСкладах
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата, » + мУсловиеНоменклатураСклад + «) КАК ТоварыВРезервеНаСкладах
|ПО
| ТоварыВРезервеНаСкладах.Номенклатура = ТоварыНаСкладах.Номенклатура
| И ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
| И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
// ++ Роман
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|ПО
| ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладах.Номенклатура.Ссылка
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа = ЛОЖЬ
| И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
// ++
|»;
Если НЕ СтруктураЗаказов = Неопределено Тогда
Если ЗаказИзШапки Тогда
Если ВидРегистраПлюсСвободныйОстаток = «ТоварыВРезервеНаСкладах» Тогда
ТекстЗапроса = ТекстЗапроса +»
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата, » + мУсловиеНоменклатураСклад + » И ДокументРезерва = &ДокументРезерва) КАК ТоварыВРезерве
|ПО
| ТоварыВРезерве.Номенклатура = ТоварыНаСкладах.Номенклатура
| И ТоварыВРезерве.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
| И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
|»;
ИначеЕсли ВидРегистраПлюсСвободныйОстаток = «ТоварыКПередачеСоСкладов» Тогда
ТекстЗапроса = ТекстЗапроса +»
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&Дата, » + мУсловиеНоменклатураСклад + » И ДокументПередачи = &ДокументРезерва) КАК ТоварыВРезерве
|ПО ТоварыВРезерве.Номенклатура = ТоварыНаСкладах.Номенклатура
| И ТоварыВРезерве.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
| И ТоварыВРезерве.Качество = ТоварыНаСкладах.Качество
|»;
КонецЕсли;
Иначе
//временная таблица товаров в резерве
Запрос.Текст = »
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыВРезервеНаСкладах.Номенклатура КАК Номенклатура,
| ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(ТоварыВРезервеНаСкладах.КоличествоОстаток) КАК КоличествоОстаток
|ПОМЕСТИТЬ ТоварыВРезерве
|ИЗ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата, » + мУсловиеНоменклатураСклад + «) КАК ТоварыВРезервеНаСкладах
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| ЗаказыТаблицаНоменклатура КАК ЗаказаноПоДокументуЗаказ
|ПО
| ЗаказаноПоДокументуЗаказ.Номенклатура = ТоварыВРезервеНаСкладах.Номенклатура
| И ЗаказаноПоДокументуЗаказ.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры
| И ЗаказаноПоДокументуЗаказ.ДокументРезерва = ТоварыВРезервеНаСкладах.ДокументРезерва
|ГДЕ
| НЕ ЗаказаноПоДокументуЗаказ.ДокументРезерва ЕСТЬ NULL
| ИЛИ ТоварыВРезервеНаСкладах.ДокументРезерва = &ДокументРезерва
|СГРУППИРОВАТЬ ПО ТоварыВРезервеНаСкладах.Номенклатура, ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры
|ИНДЕКСИРОВАТЬ ПО ТоварыВРезервеНаСкладах.Номенклатура, ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры
|»;
Запрос.Выполнить();
ТекстЗапроса = ТекстЗапроса +»
|ЛЕВОЕ СОЕДИНЕНИЕ
| ТоварыВРезерве КАК ТоварыВРезерве
|ПО
| ТоварыВРезерве.Номенклатура = ТоварыНаСкладах.Номенклатура
| И ТоварыВРезерве.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
| И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
|»;
КонецЕсли;
КонецЕсли;
ТекстЗапроса = ТекстЗапроса +»
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&Дата, » + мУсловиеНоменклатураСклад + ТекстУсловияКачества + «) КАК ТоварыКПередачеСоСкладов
|ПО
| ТоварыКПередачеСоСкладов.Номенклатура = ТоварыНаСкладах.Номенклатура
| И ТоварыКПередачеСоСкладов.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
| И ТоварыКПередачеСоСкладов.Качество = ТоварыНаСкладах.Качество
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата, » + мУсловиеНоменклатураСкладОрганизация + ТекстУсловияКачества + «) КАК ОстаткиОрганизации
|ПО
| ОстаткиОрганизации.Номенклатура = ТоварыНаСкладах.Номенклатура
| И ОстаткиОрганизации.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
| И ОстаткиОрганизации.Качество = ТоварыНаСкладах.Качество
|
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладах.Номенклатура
|»;
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
4 — 29.04.13 — 12:13
(3) это что?
5 — 29.04.13 — 12:14
(4) это автор предлагает нам самим сделать (1)
6 — 29.04.13 — 12:15
(5) Предложение отклоняется =)
7 — 29.04.13 — 12:16
ну это весь текст запроса в обработке с моими дополнениями. Так вот на мои дополнения и идет ошибка. А что за синтаксическая ошибка непонятно.
8 — 29.04.13 — 12:17
Поставь точку останова после формирования текста запроса. вот на этой строке: «Запрос.Текст = ТекстЗапроса;»
И выложи нормальный запрос. то есть, содержимое переменной ТекстЗапроса.
а лучше предварительно посмотри на него внимательными глазами и расскажи впечатления
9 — 29.04.13 — 12:40
че то не впечатлил
даже не знаю что и сказать
Вроде мой кусок выглядит нормально
»
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТоварыНаСкладах.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыСрезПоследних.Цена,
СУММА( ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0.00)
— ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0.00)
— ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0.00)
+ ЕСТЬNULL(ТоварыВРезерве.КоличествоОстаток, 0.00)
) КАК КоличествоСвободныйОстаток,
СУММА(ЕСТЬNULL(ОстаткиОрганизации.КоличествоОстаток, 0.00)) КАК КоличествоОстатокОрганизации
ИЗ
(ВЫБРАТЬ
ОбщиеОстатки.Номенклатура КАК Номенклатура,
ОбщиеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
ОбщиеОстатки.Качество КАК Качество,
СУММА(ОбщиеОстатки.КоличествоОстаток) КАК КоличествоОстаток
ИЗ
(
ВЫБРАТЬ
ТаблицаОстатков.Номенклатура КАК Номенклатура,
ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
ТаблицаОстатков.Качество КАК Качество,
ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Номенклатура В (&МассивНоменклатуры) И Склад В (&Склад) И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ТаблицаОстатков.Номенклатура КАК Номенклатура,
ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
ТаблицаОстатков.Качество КАК Качество,
ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыВРознице.Остатки(&Дата, Номенклатура В (&МассивНоменклатуры) И Склад В (&Склад) И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ТаблицаОстатков.Номенклатура КАК Номенклатура,
ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
ТаблицаОстатков.Качество КАК Качество,
0 КАК КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата, Номенклатура В (&МассивНоменклатуры) И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ТаблицаОстатков.Номенклатура КАК Номенклатура,
ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
ЗНАЧЕНИЕ(Справочник.Качество.Новый) КАК Качество,
ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыВНТТ.Остатки(&Дата, Номенклатура В (&МассивНоменклатуры) И Склад В (&Склад) ) КАК ТаблицаОстатков
) КАК ОбщиеОстатки
СГРУППИРОВАТЬ ПО
ОбщиеОстатки.Номенклатура, ОбщиеОстатки.ХарактеристикаНоменклатуры, ОбщиеОстатки.Качество
) КАК ТоварыНаСкладах
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата, Номенклатура В (&МассивНоменклатуры) И Склад В (&Склад) ) КАК ТоварыВРезервеНаСкладах
ПО
ТоварыВРезервеНаСкладах.Номенклатура = ТоварыНаСкладах.Номенклатура
И ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО
ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладах.Номенклатура.Ссылка
ГДЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа = ЛОЖЬ
И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
ЛЕВОЕ СОЕДИНЕНИЕ
ТоварыВРезерве КАК ТоварыВРезерве
ПО
ТоварыВРезерве.Номенклатура = ТоварыНаСкладах.Номенклатура
И ТоварыВРезерве.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&Дата, Номенклатура В (&МассивНоменклатуры) И Склад В (&Склад) И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТоварыКПередачеСоСкладов
ПО
ТоварыКПередачеСоСкладов.Номенклатура = ТоварыНаСкладах.Номенклатура
И ТоварыКПередачеСоСкладов.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
И ТоварыКПередачеСоСкладов.Качество = ТоварыНаСкладах.Качество
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата, Номенклатура В (&МассивНоменклатуры) И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ОстаткиОрганизации
ПО
ОстаткиОрганизации.Номенклатура = ТоварыНаСкладах.Номенклатура
И ОстаткиОрганизации.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
И ОстаткиОрганизации.Качество = ТоварыНаСкладах.Качество
СГРУППИРОВАТЬ ПО
ТоварыНаСкладах.Номенклатура
«
10 — 29.04.13 — 12:42
и по-прежнему синтакчисеская ошибка на левое? в какой строке?
11 — 29.04.13 — 12:45
{(72, 1)}: Синтаксическая ошибка «ЛЕВОЕ»
<<?>>ЛЕВОЕ СОЕДИНЕНИЕ
12 — 29.04.13 — 12:51
такое ощущение что ему то то после моей выборке по регистру какого то символа не хватает вот в этом месте
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО
ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладах.Номенклатура.Ссылка
ГДЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа = ЛОЖЬ
И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
???????????????????????????????????????????????
ЛЕВОЕ СОЕДИНЕНИЕ
ТоварыВРезерве КАК ТоварыВРезерве
ПО
ТоварыВРезерве.Номенклатура = ТоварыНаСкладах.Номенклатура
13 — 29.04.13 — 12:55
секция ГДЕ делается после всех соединений
14 — 29.04.13 — 13:00
вот этого я не знал спасибо буду дальше ковырять
Godofsin
15 — 29.04.13 — 13:02
(14) ЖКК надо было читать
0 / 0 / 0
Регистрация: 24.03.2018
Сообщений: 2
1
24.03.2018, 18:19. Показов 10533. Ответов 3
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{Документ.ОказаниеУслуги.МодульОбъекта(42)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(19, 4)}: Синтаксическая ошибка «ОказаниеУслугиПереченьНоменклатуры.НаборСвойств»
<<?>>ОказаниеУслугиПереченьНоменклатуры.НаборСвойств
P.S Я по книги делаю, Радченко, 100 раз все проверил, все сделал как там.
Изначально запрос строился в конструкторе, но после добавление Плана видов характеристик, в документ Оказание услуг добавили поле НаборСвойств и запрос дополнил в ручную этой строкой!
Объясните поподробнее пожалуйста, а то я в 1С пару дней!
код
1C | ||
|
Миниатюры
0
|
|||
егаис
28.10.15 — 09:36 |
У некоторых пользователей вдруг стала возникать ошибка при записи операции. «(39,27) Синтаксическая ошибка «:» Неверное имя текущей таблицы <<?>> РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет» Ошибок в модулях нет. База на скуле, с /ClearCache запускал Всю базу перерыл, не нашел бага, куда копать? |
||
mikecool
1 — 28.10.15 — 09:37 |
копать в сторону РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет и до обеда, потом бросить и покушать |
||
егаис
2 — 28.10.15 — 09:43 |
а что в той стороне? ни модуля объекта, ни модуля менеджера, права нужные есть Повторюсь, не для всех пользователей эта ошибка |
||
Cyberhawk
3 — 28.10.15 — 09:45 |
Полный текст ошибки в студию |
||
егаис
4 — 28.10.15 — 09:47 |
это весь текст |
||
Cyberhawk
5 — 28.10.15 — 09:48 |
Тогда показывай на картинке этот текст |
||
mikecool
6 — 28.10.15 — 09:48 |
(2) тебе вроде русским языком написано, что нет такой таблицы в качестве текущей и кеш надо чистить выгнав пользователей и остановив сервер 1с, ибо слиркеш не всегда срабатывает однозначно |
||
егаис
7 — 28.10.15 — 09:54 |
(5) http://savepic.su/6345988.jpg (6) «и кеш надо чистить остановив сервер 1с» o_O |
||
Cyberhawk
8 — 28.10.15 — 09:55 |
(6) «слиркеш» это что? |
||
Cyberhawk
9 — 28.10.15 — 09:55 |
(7) включи разрешение отладки и через появившуюся кнопку «Подробно» скопируй текст ошибки |
||
Любопытная
10 — 28.10.15 — 09:56 |
А конфигурация вообще типовая? Найди эту строку в конфигураторе и посмотри на нее. Такое ощущение, что там реально просто синтаксическая ошибка в коде |
||
Господин ПЖ
11 — 28.10.15 — 09:57 |
текущая таблица? rls глючит? |
||
егаис
12 — 28.10.15 — 10:00 |
(9) пока не могу сервер тормознуть (10) добавил новый РС, после этого полезла эта ошибка. Под полными правами все работает (11) так в операции РС вообще не указываю, только РБ. По сути записываю пустую операцию, ошибка проявляется |
||
Cyberhawk
13 — 28.10.15 — 10:01 |
(12) Я ничего про сервер не говорил, разрешение отладки включается в настройках пользовательского сеанса |
||
егаис
14 — 28.10.15 — 10:03 |
Все, всем спасибо, вопрос решился |
||
егаис
15 — 28.10.15 — 10:04 |
Права на вновь созданный регистр, но сц уко, почему ругается на РС в сабже ,я не понял |
||
егаис
16 — 28.10.15 — 10:04 |
Ошибка при выполнении обработчика — ‘ПередЗаписью’ по причине: {Документ.ОперацияБух.МодульОбъекта(26)}: Ошибка при вызове метода контекста (Прочитать)
Движение.Прочитать();
по причине: Ошибка в ограничении доступа к данным. объект: 'РегистрСведений.ПараметрыАмортизацииСпецодежды', поле: 'Регистратор'; право: 'Чтение' {(39, 27)}: Синтаксическая ошибка ":" НеверноеИмяТекущейТаблицы<<?>>: "РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет" по причине: {(39, 27)}: Синтаксическая ошибка ":" НеверноеИмяТекущейТаблицы<<?>>: "РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет" |
||
егаис 17 — 28.10.15 — 10:04 |
меняю логику начисления амортизации по спецодежде, способы расчета привязываю через РС + документы изменений Спасибо еще раз |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Доброго времени суток ,подскажите пожалуйста ,если не затруднит,что не так делаю… ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаВРознице ИЗ я только учусь …и важно не столько поправка кода сколько объяснение отчего возникает ошибка и как это поправить= избежать в последующем. спасибо)
делай конструктором: ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
(&ТипЦен) -не там и не так.
вот это лишнее, только увиливает время работы:
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,ТипЦен=&ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
ЦеныНоменклатурыСрезПоследних.Цена В выборке нет ЦеныНоменклатурыСрезПоследних.Цена, а в Сгруппировать есть. Может, в этом дело?
к пардон, не туда посмотрела, вопрос снят
к текст ошибки: {Форма.Форма}: Ошибка при вызове метода контекста (Выполнить): {(6, 100)}: Ожидается имя таблицы ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних<<?>>(&ТипЦен) по причине: {(6, 100)}: Ожидается имя таблицы ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних<<?>>(&ТипЦен)
нет ппц, ты даже ничего не исправил
все исправил все работает))) сорь торможу)
спасибо за оперативность)
Тэги:
Комментарии доступны только авторизированным пользователям
Добрый день подскажите пожалуйста что значит «Синтаксическая ошибка» при формировании материального отчета (МХ-20). Заранее спасибо.
1С:Предприятие 8.3 (8.3.6.2100)
Бухгалтерия предприятия, редакция 3.0 (3.0.41.49) (http://v8.1c.ru/buhv8/)
Copyright (С) ООО «1C», 2009 — 2015. Все права защищены
(http://www.1c.ru)
Добрый день!
Приведите точный текст ошибки либо приложите скриншот ошибки.
Заполнить и подать уведомление об исчисленных суммах налогов и взносов
Добрый день!
Попробуйте сделать так:
при запуске программы удалите вашу базу из общего списка баз (предварительно запомнив путь к этой базе, он всегда прописан внизу). Потом по кнопке «Добавить» добавьте базу обратно в список. Таким образом кэш почистится и может быть проблема уйдет. Если не уйдет — ждем скриншот с описанием ошибки, и какой отчет формируете (типовой, или внешний, дописанный кем-то)
Добрый день!
Цитата (Бэлла КСК):формировании материального отчета (МХ-20).
В типовой конфигурации нет такой печатной формы, свяжитесь с тем кто ее для вас писал.
Цитата (Jilt):Добрый день!
Попробуйте сделать так:
при запуске программы удалите вашу базу из общего списка баз (предварительно запомнив путь к этой базе, он всегда прописан внизу). Потом по кнопке «Добавить» добавьте базу обратно в список. Таким образом кэш почистится и может быть проблема уйдет
Так и не понял, как очистка кэша скажется на внешнем отчете?🤦♀️
p.s. Кстати, кэш так не чистится, а уничтожается привязка его к данной базе. А в виде мусора на диске он остался.
Цитата (Культурный):Кстати, кэш так не чистится, а уничтожается привязка его к данной базе
Я очень даже часто так чищу, другое дело в этом случае это не поможет. При этом у базы теряется связь со старым «мусором» и появляется новый кэш. 😉
При работе с клиентом по телефону/в эл.письме как вы еще сможете ему подсказать? Ведь очень часто задача стоит не навести порядок на диске клиента, а запустить базу.
Заполняйте платежки с актуальными на сегодня КБК, кодами дохода и другими обязательными реквизитами
Добрый день, скриншот почему то не могу прикрепить, а вообще так и пишет «синтаксическая ошибка»
Цитата (Культурный):Так и не понял, как очистка кэша скажется на внешнем отчете?
p.s. Кстати, кэш так не чистится, а уничтожается привязка его к данной базе. А в виде мусора на диске он остался.
Вы когда решите в следующий раз чей-то вариант решения поправлять или критиковать, не забудьте предложить свой вариант действий — а то задающий вопрос рискует остаться без какой-либо помощи. А чтобы «мусор на диске» чистить — это еще надо уточняющие вопросы про ОС на компьютере задавать, а если там серверный вариант работы? Поэтому и был предложен оперативный вариант по отвязке старого кэша от базы
Бэлла КСК, между последним положительным формированием этого отчета и сегодняшним днем какие-то действия с базой выполнялись? Обновление ставили в этот период, права и роли для пользователей добавляли/меняли? Просто это может действительно сменилось наименование какого-то из реквизитов в коде, а во внешнем отчете идет привязка к старому наименованию. Тогда лучше обратиться к разработчикам отчета.
Цитата (Jilt):Вы когда решите в следующий раз чей-то вариант решения поправлять или критиковать, не забудьте предложить свой вариант действий
Так я не критикую, а говорю, что этот «вариант решения» никакого отношения к поставленной проблеме не имеет!
Вариант решения был прописан перед моим сообщением — внешний отчет должен исправлять его автор.
Цитата (Культурный):Так я не критикую, а говорю, что этот «вариант решения» никакого отношения к поставленной проблеме не имеет!
Вариант решения был прописан перед моим сообщением — внешний отчет должен исправлять его автор.
Я в таких случаях, когда в теме присутствуют и ответы по существу и не имеющие отношения к проблеме, просто «прохожу мимо». А Вы, видя, что ответ по существу уже был дан, не написали «последуйте совету Татьяны и обратитесь к автору внешнего отчета, очистка кэша не поможет в этом случае».
Вы написали
Цитата (Культурный): Так и не понял, как очистка кэша скажется на внешнем отчете?
Вопрос «как скажется?» это не одно и то же с утверждением «чистка кэша отношения не имеет».
Срочно нужна электронная подпись?
Подпись для госзакупок, маркировки, ЛесЕГАИС и других систем можно получить через час
Цитата (Jilt):Бэлла КСК, между последним положительным формированием этого отчета и сегодняшним днем какие-то действия с базой выполнялись? Обновление ставили в этот период, права и роли для пользователей добавляли/меняли? Просто это может действительно сменилось наименование какого-то из реквизитов в коде, а во внешнем отчете идет привязка к старому наименованию. Тогда лучше обратиться к разработчикам отчета.
Добрый день, да обновления производили, представители 1С с которыми мы работаем каждый месяц это делают, хотела попробовать , не вызывая их решить эту проблему, спасибо,обращусь к ним.
Приведены некоторые ошибки, их причины и решения при обновлении конфигураций баз всеми любимой 1С 8.3.
Обновление УТ 11.1.10.199 => 11.2.2.119
После обновления конфы при запуске в режиме Предприятия ошибка:
{ОбщийМодуль.Б_ОбменССайтомСервер.Модуль(225)}: Тип не определен (СправочникОбъект.ЕдиницыИзмерения)
Причина:
В новой версии конфы удаляется справочник ЕдиницыИзмерения и соответственно удаляются все обращения к нему в коде.
Но т.к. модуль БУС (модуль для обмена с сайтом Битрикс) не находится на поддержке, он обращается к справочнику, которого уже нет.
Решение:
1) Удалить в новой версии модуль БУС (отметить галочки)
2) Обновить модуль БУС после обновления
Обновление УТ 11.2.2.119 => 11.2.3.84
При внесении изменений в конфигурацию ошибка:
Записи регистра сведений стали неуникальными: ВерсииОбъектов.
Решение:
Зайти в Предприятие, ВсеФункции -> РегистрыСведений -> ВерсииОбъектов и удалить косячный объект.
В данном случае был объект с незаполненным реквизитом Объект.
“Виснет” обновление базы в режиме предприятия – запускается, но постоянно 0%.
Решение:
Отредактировать регламентное задание “Отложенное обновление ИБ”: устанавливал чтобы запускалось каждые 60 сек.
Ошибка после обновления платформы и запуске синхронизации:
"Не удалось подключиться к другой программе: Метод объекта не обнаружен (Connect)"
Решение:
Выполнить регистрацию COM-соединения:
Regsvr32 “C:Program Files (x86)1cv8НОМЕР_ПЛАТФОРМЫbincomcntr.dll”
При обновлении ЗУП 2.5 на 3.0 на платформе 8.3.12.1412 при запуске в режиме Предприятия:
Ошибка (идентификаторы могут быть разные):
ERROR: column "fld16387rref" does not exist
LINE 2: COALESCE(Fld16387RRef,Q_001_F_000RRef)
Причина: В клиент-серверном варианте инфорационной базы с использованием PostgreSQL при выполнении запроса, содержащего ПОЛНОЕ СОЕДИНЕНИЕ может происходить ошибка вида. Код ошибки: 10193154.
Решение:
Обновить платформу на 8.3.12.1529.
Обновление УТ 11.4.6.166 => 11.4.6.174
Ошибка на этапе запуска в режиме Предприятия (кажется):
{Документ.РеализацияТоваровУслуг.МодульОбъекта(3237,7)}: Переменная не определена (СуммаПредоплаты)
ВызватьИсключение(ТекстОшибки);
Причина:
Новый код в модуле объекта РеализацияТоваровУслуг я пометил на объединение с имеющимся в текущей конфигурации. Но, объединился он криво (или я недоглядел). Реквизит СуммаПредоплаты на самом деле был переименован в УдалитьСуммаПредоплаты, и вызываться в коде не должен).
Решение:
Откатился назад и обновился еще раз без объединения с имеющимся кодом. Уже после обновления исправил код вручную.
Обновление УТ 1.3.4.228 => 11.4.6.174
Ошибка на этапе объединения конфигураций:
На удаляемый объект ОбщийМодуль.УчетНДСУТ есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Подсистема.УчетНДС.Состав
На удаляемый объект РегламентноеЗадание.ФормированиеДвиженийПоПартиямЗатратамНДС есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Подсистема.УчетНДС.Состав
На удаляемый объект ЖурналДокументов.ПередачиВозвратыТоваровМеждуОрганизациями есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Подсистема.ПродажиМеждуОрганизациями.Состав
На удаляемый объект Обработка.НастройкаПередачиТоваровМеждуОрганизациями есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Подсистема.ПродажиМеждуОрганизациями.Состав
На удаляемый объект Обработка.ПомощникИсправленияОстатковТоваровОрганизаций есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Состав
На удаляемый объект Обработка.ТекущиеДелаПоЭДО есть ссылки в объектах основной конфигурации:
Подсистема.Органайзер.Состав
На удаляемый объект РегистрСведений.УдалитьАдресныйКлассификатор есть ссылки в объектах основной конфигурации:
Подсистема.НормативноСправочнаяИнформация.Подсистема.БазовыеКлассификаторы.Состав
ПричинЫ:
Почему остались ссылки на удаляемые объекты в конфе?
1) Возможно, объекты со ссылками тоже должны были быть удалены, но по какой-то причине этого не произошло.
2) Просто тупняк обработки обновления, которая не “зачистила” места использования удаляемых объектов.
РешениЯ:
1) По хорошему, нужно найти все места использования и разобраться, почему остались ссылки на удаляемые объекты. Устранить их и вновь запустить обновление, чтобы объекты смогли удалиться автоматически.
2) Но можно и проще: убрать галки в форме сравнения конфигураций с этих объектов, чтобы они не пытались удалиться из текущей конфы. Но теперь в базе будут мусорные объекты, которые никто и никогда не будет использовать.
Обновление УТ
Ошибка:
Ошибка инициализации модуля: Документ.УдалитьАктОРасхожденияхПриПоступленииТоваров.МодульМенеджера
по причине:
{Документ.УдалитьАктОРасхожденияхПриПоступленииТоваров.МодульМенеджера(13,2)}: Переменная не определена (ВводНаОснованииПереопределяемый)
<<?>>ВводНаОснованииПереопределяемый.ДобавитьКомандуСоздатьНаОснованииБизнесПроцессЗадание(КомандыСоздатьНаОсновании);
{Документ.УдалитьАктОРасхожденияхПриПоступленииТоваров.МодульМенеджера(14,2)}: Переменная не определена (ВводНаОснованииПереопределяемый)
<<?>>ВводНаОснованииПереопределяемый.ДобавитьКомандыСоздатьНаОснованииПисмаПоШаблону(КомандыСоздатьНаОсновании);
{Документ.УдалитьАктОРасхожденияхПриПоступленииТоваров.МодульМенеджера(23,45)}: Переменная не определена (ВводНаОсновании)
КомандаСоздатьНаОсновании.Представление = <<?>>ВводНаОсновании.ПредставлениеОбъекта(Метаданные.Документы.УдалитьАктОРасхожденияхПриПоступленииТоваров);
Причина:
Комбинация двух предыдущих ошибок. В предыдущем релизе конфигурации объект УдалитьАктОРасхожденияхПриПоступленииТоваров был “помечен на удаление” (т.к. в имени написано “Удалить”), значит в этом новом релизе он должен был быть удален. Но на него остались ссылки в других объектах, поэтому автоматически он не удалился. Соответственно, проблемный объект УдалитьАктОРасхожденияхПриПоступленииТоваров содержит неактуальные обращения к уже несуществующим реквизитам других объектов (ВводНаОснованииПереопределяемый и др.).
Решение:
Удалить объект УдалитьАктОРасхожденияхПриПоступленииТоваров из конфы:
1) найти места использования: ПКМ на объекте => Найти места использования. Как оказалось, ссылались некоторые команды в других объектах
2) убрать места использования: поснимать галочки на удаляемый объект в этих командах (в реквизите “Тип параметра команды”, кажется)
3) запустить выполнение обновления повторно, и этот объект должен спокойно выпилиться из конфы
Обновление УТ
Ошибка:
Роль.ДобавлениеИзменениеФизическихЛиц: Дублирование имени объекта метаданных:
Обработка.ПомощникИсправленияОстатковТоваровОрганизаций: Дублирование имени объекта метаданных:
При проверке метаданных обнаружены ошибки!
Операция не может быть выполнена.
Причина:
Тупняк обработки обновления: дубликат не должен быть создаваться.
Решение:
(точно не помню) По логике – удалил дубликаты из конфы.
Обновление УТ
В режиме Предприятия:
Ошибка при выполнении запроса.
по причине: Ошибка получения данных
по причине: Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине: Ошибка при исполнении запроса набора данных
по причине: Ошибка выполнения запроса
по причине: Ошибка в ограничении доступа к данным.
объект: 'Документ.ПриобретениеТоваровУслуг', поле: 'Проведен'; право: 'Чтение'
{(38, 27)}: Синтаксическая ошибка ":"
НеверноеИмяТекущейТаблицы<<?>>: "Документ.ПоступлениеТоваровУслуг"
по причине:
{(38, 27)}: Синтаксическая ошибка ":"
НеверноеИмяТекущейТаблицы<<?>>: "Документ.ПоступлениеТоваровУслуг"
Причина:
В последних версиях УТ осуществляется переход от документов ПоступленияТоваровУслуг к ПриобретениямТоваровУслуг. Виновником была самописная роль ДобавлениеИзменениеПоступленийТоваровУслугБезРаспроведения, созданная копированием стандартной ДобавлениеИзменениеПоступленийТоваровУслуг. Но если стандартная была автоматически как нужно подпилена обработкой обновления (или же вообще удалена), то самописная осталась с неверными ссылками на старые документы.
Решение:
Убрал в самописной роли галки на документ ПоступлениеТоваровУслуг, оставил только на Приобретения.
Просмотров:
2 912
Содержание:
1. Причина возникновения ошибки «Неверное имя колонки»
2. Выявление места возникновения ошибки о неверном имени колонки
1. Причина возникновения ошибки «Неверное имя колонки»
Ошибка «Неверное имя колонки» может возникать при работе с таблицами. Ошибка связана с несоблюдением требований в части формата служебного свойства объекта встроенного языка.
Информации не так много про эти требования. Известно, что используется имя колонки как идентификатор, и должно удовлетворять следующим моментам:
· Начинаться должно с символа подчеркивания, либо с буквы
· Не должно содержать никаких символов кроме алфавитных, символа подчеркивания и цифр.
Таким образом, если при выполнении кода возникает ошибка «Неверное имя колонки» в 1С — смело целенаправленно смотрим на имя, которое мы пытаемся присвоить нашей колонке, возможно нужно изменить имя колонки.
2. Выявление места возникновения ошибки о неверном имени колонки
Пара способов, оба по-своему хороши:
1. В тексте ошибки содержится информация о модуле, в котором произошла ошибка и номере строки. Нажимаем «Подробно» и смотрим, где что произошло:
Сообщение Неверное имя колонки
Неверное имя колонки в 1С Предприятие
Идем сверху вниз. На моем примере: строка 42 модуля управляемой формы моей внешней обработки 1С Предприятие повлекла за собой ошибку в 32 строке модуля формы, которая, в свою очередь, нашла свое отражение в 9 строке модуля формы моей внешней обработки. Т.е. неверное имя колонке я попытался присвоить в 42 строке кода модуля формы.
2. В конфигураторе в режиме отладки: «Отладка» — «Остановка по ошибке»
Остановка по ошибке
Останавливаться по ошибке Неверное имя колонки
При возникновении ошибки будет открыт модуль – источник, и активная строка в 1С, где произошла ошибка.
Модуль источник Неверного имя колонки
Далее, можно посмотреть, какое имя мы пытались присвоить колонке и внести изменения, чтобы имя колонки было указано верно.
Набросаем простенькую обработку для проверки, что же можно указывать в имени колонки, и чего нельзя.
Проверка изменения имени колонки
Пробуем:
1. «1абвгдеёжзиклмнопрстуфхцчшщъыьэюя» — Нельзя
Пример Неверное имя колонки
2. Убираем с первой позиции – Можно
Исправление Неверное имя колонки в 1С
3. Пробелы – Нельзя
Пример Неверное имя колонки в 1С
4. Точки, запятые и т.д. – Нельзя
Пример с точками и запятыми — Неверное имя колонки
5. Знак подчеркивания «_» — Можно. Можно даже на первой позиции имени колонки
Пример с точками и запятыми Неверное имя колонки
6. Пустая строка «» — как оказалось, можно
Пример отсутствия ошибки Неверное имя колонки
Специалист компании «Кодерлайн»
Сергей Пушкин
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Ivan_Ivanov
Дата регистрации: 06.06.2007
Сообщений: 168
«Народ проблема такая:<br>пишу запрос:<br>ПечатаемыДокумент.Дата как ДатаДок»;<br>Если ПечатаемыйДокумент тогда<br>Запрос.Текст= Запрос.Текст+»<br>ПечатаемыйДокумент.СчетКонтрагента как СчетКонтрагента»;<br>Иначе<br>Запрос.Текст= Запрос.Текст+»<br>ПечатаемыйДокумент.Банк.ОсновнойБанковскийСчет.НомерСчета как СчетКонтрагента»;<br>КонецЕсли;<br>Запрос.Текст = Запрос.Текст+»<br>Далее оставшийся текст запроса<br>….<br>Возврат Запрос.Выполнить();<br><br>При выводе документа на печать 1с выдает ошибку: Ошибка метода контекста Выполнить<br><br>Значения всем параметрам присвоены, условия до запроса тоже выполняются<br>В чем может быть проблема?»
Prikum
активный пользователь
онлайн
Дата регистрации: 18.02.2002
Сообщений: 20881
Весь текст ошибки приведи! Весь код приведи, а то непонятно, что к чему!
Wee
Дата регистрации: 24.11.2007
Сообщений: 464
Скорее всего ошибка в тексте запроса. Полностью текст в студию
Ivan_Ivanov
Дата регистрации: 06.06.2007
Сообщений: 168
«Функция СформироватьЗапросПоДокументу(ДокументСсылка)<br> <br> Запрос = Новый Запрос;<br> Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;<br> <br> // Установим параметры запроса<br> Запрос.УстановитьПараметр(«ДокументСсылка», ДокументСсылка);<br> Запрос.УстановитьПараметр(«ДатаДокумента», ДокументСсылка.Дата);<br><br> Запрос.УстановитьПараметр(«СтруктурнаяЕдиница»,ДокументСсылка.Организация);<br><br> Если ТипЗнч(ДокументСсылка) = Тип(«ДокументСсылка.ПлатежноеПоручениеИсходящее») Тогда<br> ПечатьПлатежногоПоручения = Истина;<br> Запрос.УстановитьПараметр(«СчетКонтрагента», ДокументСсылка.СчетКонтрагента);<br> Иначе<br> ПечатьПлатежногоПоручения = Ложь;<br> Запрос.УстановитьПараметр(«СчетКонтрагента», ДокументСсылка.Банк);<br><br> КонецЕсли;<br><br> <br> Запрос.Текст =<br> «ВЫБРАТЬ РАЗРЕШЕННЫЕ<br> | ОтветственныеЛицаСрезПоследних.ФизическоеЛицо.Наименование КАК ФизическоеЛицоНаименование,<br> | ОтветственныеЛицаСрезПоследних.Должность.Наименование КАК ДолжностьНаименование,<br> | ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо,<br> | ОтветственныеЛицаСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо,<br> | ФизическиеЛица.Комментарий<br> |ПОМЕСТИТЬ ВТОтветственныеЛица<br> |ИЗ<br> | РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(<br> | &ДатаДокумента,<br> | СтруктурнаяЕдиница = &СтруктурнаяЕдиница<br> | И ОтветственноеЛицо В (ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель), ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Кассир), ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер))) КАК ОтветственныеЛицаСрезПоследних<br> | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица<br> | ПО ОтветственныеЛицаСрезПоследних.ФизическоеЛицо = ФизическиеЛица.Ссылка<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | ФизическоеЛицо»;<br> Запрос.Выполнить();<br> <br> Запрос.Текст =<br> «ВЫБРАТЬ<br> | ОтветственныеЛицаСрезПоследних.ДолжностьНаименование,<br> | ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо КАК ОтветственноеЛицо,<br> | ЕСТЬNULL(ФИОФизЛицСрезПоследнихРуководитель.Фамилия + ВЫБОР<br> | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) <> «»»»<br> | ТОГДА «»»» «»»» + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) + «»»».»»»»<br> | ИНАЧЕ «»»»<br> | КОНЕЦ + ВЫБОР<br> | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) <> «»»»<br> | ТОГДА «»»» «»»» + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) + «»»».»»»»<br> | ИНАЧЕ «»»»<br> | КОНЕЦ, ОтветственныеЛицаСрезПоследних.ФизическоеЛицоНаименование) КАК ФИОРуководителя<br> |ПОМЕСТИТЬ ВТДанныеОтветственныхЛиц<br> |ИЗ<br> | ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних<br> | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(<br> | &ДатаДокумента,<br> | ФизЛицо В<br> | (ВЫБРАТЬ<br> | ОтветственныеЛицаСрезПоследних.ФизическоеЛицо<br> | ИЗ<br> | ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних)) КАК ФИОФизЛицСрезПоследнихРуководитель<br> | ПО ОтветственныеЛицаСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследнихРуководитель.ФизЛицо<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | ОтветственноеЛицо»;<br> Запрос.Выполнить();<br> <br> Запрос.Текст =<br> «ВЫБРАТЬ РАЗЛИЧНЫЕ<br> | ПечатаемыйДокумент.Дата КАК ДатаДок»;<br> Если ПечатьПлатежногоПоручения тогда<br> Запрос.Текст = Запрос.Текст +»<br> | ПечатаемыйДокумент.СчетКонтрагента.НомерСчета КАК СчетКонтрагента»;<br>Иначе<br> Запрос.Текст = Запрос.Текст +»<br> | ПечатаемыйДокумент.Банк.ОсновнойБанковскийСчет.НомерСчета КАК СчетКонтрагента»;<br>КонецЕсли;<br>Запрос.Текст = Запрос.Текст +»<br><br> | ВЫРАЗИТЬ(ПечатаемыйДокумент.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации,<br> | ОтветственныеЛицаОрганизацийСрезПоследнихГлБух.ФИОРуководителя КАК ФИОГлБуха<br> |ИЗ<br> | Документ.» + ДокументСсылка.Метаданные().Имя + » КАК ПечатаемыйДокумент<br> | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель<br> | ПО (ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель))<br> | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихГлБух<br> | ПО (ОтветственныеЛицаОрганизацийСрезПоследнихГлБух.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер))<br> | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихКассир<br> | ПО (ОтветственныеЛицаОрганизацийСрезПоследнихКассир.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Кассир))<br> |ГДЕ<br> | ПечатамыйДокумент.Ссылка = &ДокументСсылка»;<br> <br> Если ПечатьПлатежногоПоручения Тогда<br> Запрос.Текст = Запрос.Текст + «<br> | ПечатаемыйДокумент.Ссылка В(&ДокументСсылка)»;<br> Иначе<br> Запрос.Текст = Запрос.Текст + «<br> | ПечатаемыйДокумент.Ссылка = &ДокументСсылка»;<br> КонецЕсли;<br> <br><br><br>Возврат Запрос.Выполнить();<br><br><br>КонецФункции // СформироватьЗапросДляПечати()<br>»
Prikum
активный пользователь
онлайн
Дата регистрации: 18.02.2002
Сообщений: 20881
Ivan_Ivanov
Дата регистрации: 06.06.2007
Сообщений: 168
«{ОбщийМодуль.ФормированиеПечатныхФормДополнительный(117)}: Ошибка при вызове метода контекста (Выполнить): {(3, 2)}: Синтаксическая ошибка «ПечатаемыйДокумент.СчетКонтрагента.НомерСчета»<br><<?>>ПечатаемыйДокумент.СчетКонтрагента.НомерСчета КАК СчетКонтрагента<br>Возврат Запрос.Выполнить();<br>по причине:<br>{(3, 2)}: Синтаксическая ошибка «ПечатаемыйДокумент.СчетКонтрагента.НомерСчета»<br><<?>>ПечатаемыйДокумент.СчетКонтрагента.НомерСчета КАК СчетКонтрагента<br><br>такая же ошибка выдается при запуске на печать из документа ЗарплатаКВыплатеОрганизаций»
Prikum
активный пользователь
онлайн
Дата регистрации: 18.02.2002
Сообщений: 20881
Запятые Печкин будет ставить?
Ivan_Ivanov
Дата регистрации: 06.06.2007
Сообщений: 168
где именно у меня их не хватает? вроде все есть
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
«Согласно этому:<br>> Запрос.Текст =<br>> «ВЫБРАТЬ РАЗЛИЧНЫЕ<br>> | ПечатаемыйДокумент.Дата КАК ДатаДок»;<br>> Если ПечатьПлатежногоПоручения тогда<br>> Запрос.Текст = Запрос.Текст +»<br>> | ПечатаемыйДокумент.СчетКонтрагента.НомерСчета КАК СчетКонтрагента»;<br>> Иначе<br>> Запрос.Текст = Запрос.Текст +»<br>> | ПечатаемыйДокумент.Банк.ОсновнойБанковскийСчет.НомерСчета КАК СчетКонтрагента»;<br>> КонецЕсли;<br>> Запрос.Текст = Запрос.Текст +»<br>> <br>> | ВЫРАЗИТЬ(ПечатаемыйДокумент.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации,<br>> | ОтветственныеЛицаОрганизацийСрезПоследнихГлБух.ФИОРуководителя КАК ФИОГлБуха<br>у вас получиться:<br>»ВЫБРАТЬ РАЗЛИЧНЫЕ<br> ПечатаемыйДокумент.Дата КАК ДатаДок<br> ПечатаемыйДокумент.СчетКонтрагента.НомерСчета КАК СчетКонтрагента<br> ВЫРАЗИТЬ(ПечатаемыйДокумент.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации,<br> ОтветственныеЛицаОрганизацийСрезПоследнихГлБух.ФИОРуководителя КАК ФИОГлБуха»<br>Ничего необычного в первых 2-х строчках (после выбрать) не замечаете?»
Ivan_Ivanov
Дата регистрации: 06.06.2007
Сообщений: 168
Блин, точно! Спасибо большое! Это уже просто после долгой писанины глаз замылился )
Показывать по
10
20
40
сообщений
Читают тему:
#excel #vba
#excel #vba
Вопрос:
Я пытаюсь выполнить следующий процесс, у меня есть две разные базы данных access, и я программирую некоторые sql-запросы в Excel Vba для обработки данных этих баз данных. Я установил связь с этой базой данных, используя ADOX Connection, вы можете увидеть сценарий ниже. Мой вопрос связан с самим запросом, из одной таблицы у меня много данных, и я ищу эти данные из другой таблицы, которые находятся в другой БД, но если запрос не находит отношения, он должен сообщить все данные из первой таблицы и использовать другуютаблицы в качестве дополнительной информации, если совпадения нет, то результат будет нулевым.
Чтобы сделать такую вещь, я использую LEFT OUTER JOIN
on all таблицы, но они не подходят. Поскольку он возвращает сообщение
«Синтаксическая ошибка при операции соединения»
Как я могу исправить эту ошибку?
Public Function getUMEByIdent()
Dim i As Long
Dim j As Integer
Dim nData() As Variant
Dim adox_table1 As ADOX.Table
Dim adox_table2 As ADOX.Table
Dim adox_table3 As ADOX.Table
Dim fatorConv As Double
With connection
.ConectDB ("compDraw.mdb")
Set adox_catalog = New ADOX.Catalog
Set adox_catalog.ActiveConnection = connection.conn
Set adox_table1 = New ADOX.Table
With adox_table1
Set .ParentCatalog = adox_catalog
.Name = "lkdTbl1"
.Properties("Jet OLEDB:Link Datasource") = ThisWorkbook.Path amp; "assetsconfigs.mdb"
.Properties("Jet OLEDB:Link Provider String") = "MS Access"
.Properties("Jet OLEDB:Remote Table Name") = "mditems"
.Properties("Jet OLEDB:Create Link") = True
End With
Set adox_table2 = New ADOX.Table
With adox_table2
Set .ParentCatalog = adox_catalog
.Name = "lkdTbl2"
.Properties("Jet OLEDB:Link Datasource") = ThisWorkbook.Path amp; "assetsconfigs.mdb"
.Properties("Jet OLEDB:Link Provider String") = "MS Access"
.Properties("Jet OLEDB:Remote Table Name") = "umestatistics"
.Properties("Jet OLEDB:Create Link") = True
End With
Set adox_table3 = New ADOX.Table
With adox_table3
Set .ParentCatalog = adox_catalog
.Name = "lkdTbl3"
.Properties("Jet OLEDB:Link Datasource") = ThisWorkbook.Path amp; "assetsconfigs.mdb"
.Properties("Jet OLEDB:Link Provider String") = "MS Access"
.Properties("Jet OLEDB:Remote Table Name") = "convume"
.Properties("Jet OLEDB:Create Link") = True
End With
Set .rs = .conn.Execute( _
"SELECT bom.ident_mp, lkdTbl1.ncm, lkdTbl1.umc, lkdTbl2.ume, lkdTbl3.fator_conv FROM" amp; _
" ((bom LEFT OUTER JOIN lkdTbl1 ON lkdTbl1.ident = bom.ident_mp) " amp; _
" LEFT OUTER JOIN tkdTbl2 ON lkdTb1.ncm = lkdTbl2.ncm)" amp; _
" LEFT OUTER JOIN lkdTbl3 ON lkdTbl1.umc = lkdTbl3.umc AND lkdTbl2.ume = lkdTbl3.ume" amp; _
" GROUP BY bom.ident_mp, lkdTbl1.ncm, lkdTbl1.umc, lkdTbl2.ume, lkdTbl3.fator_conv", , adCmdText)
Do While Not .rs.EOF
If IsNull(.rs.Fields("ident_mp").Value) = False Then
ReDim Preserve nData(i)
nData(i) = Array(.rs.Fields("ident_mp").Value, .rs.Fields("ncm").Value, .rs.Fields("umc").Value, .rs.Fields("ume").Value, .rs.Fields("fator_conv").Value)
i = i 1
End If
.rs.MoveNext
Loop
.rs.Close
adox_catalog.Tables.Delete "lkdTbl1"
adox_catalog.Tables.Delete "lkdTbl2"
adox_catalog.Tables.Delete "lkdTbl3"
.FechaDb
End With
End Function
Комментарии:
1.
LEFT OUTER JOIN tkdTbl2 ON
Это может быть просто простая опечатка. Должно ли это бытьlkdTbl2
?2.
lkdTb1.ncm = lkdTbl2.ncm
Кроме того, я думаю, что это должно бытьlkdTbl1
(отсутствует L)3. Привет, Дик Куслейка, После исправления этой ошибки sintax, теперь я получил ошибку, связанную с выражением соединения, она показывает, что выражение соединения не поддерживается. Похоже, что при использовании кратного выражения LEFT OUTER JOIN в VBA невозможно отправить два параметра, например, в третьем ЛЕВОМ ВНЕШНЕМ СОЕДИНЕНИИ » ЛЕВОЕ СОЕДИНЕНИЕ lkdTbl3 НА lkdTbl1.umc = lkdTbl3.umc И lkdTbl2.ume = lkdTbl3.ume» amp;
Ответ №1:
Анализатор запросов Access не может обрабатывать определенные соединения. Обычно вы можете обойти это, создав подзапрос.
SELECT temp.ident_mp
, temp.ncm
, temp.umc
, temp.ume
, lkdTbl3.fator_conv
FROM
(SELECT *
FROM bom
LEFT OUTER JOIN lkdTbl1 ON
lkdTbl1.ident = bom.ident_mp
LEFT OUTER JOIN tkdTbl2 ON
lkdTb1.ncm = lkdTbl2.ncm) temp
LEFT OUTER JOIN lkdTbl3 ON
temp.umc = lkdTbl3.umc
AND temp.ume = lkdTbl3.ume
GROUP BY temp.ident_mp
, temp.ncm
, temp.umc
, temp.ume
, lkdTbl3.fator_conv
Это помещает первые два левых соединения в подзапрос с таким именем temp
, чтобы последнее левое соединение соединяло только две таблицы. Я не смог это протестировать, потому что у меня нет вашей настройки, но я сделал что-то подобное в Northwind.mdb, и это сработало.
Комментарии:
1. Привет, Дик Куслейка, я внес некоторые изменения в ваш код, и теперь он идеально подходит… Большое вам спасибо.. Окончательный код выглядит следующим образом:
SELECT temp.ident_mp, temp.ncm_item, temp.umc_item, temp.ume, lkdTbl3.fator_conv FROM (SELECT * FROM (bom LEFT OUTER JOIN lkdTbl1 ON lkdTbl1.ident = bom.ident_mp) LEFT OUTER JOIN lkdTbl2 ON lkdTbl1.ncm_item = lkdTbl2.ncm) temp LEFT OUTER JOIN lkdTbl3 ON temp.umc_item = lkdTbl3.umc AND temp.ume = lkdTbl3.ume GROUP BY temp.ident_mp, temp.ncm_item, temp.umc_item, temp.ume, lkdTbl3.fator_conv
вступление
Я следую этому руководству здесь, и я застрял в последней части: http://symfony.com/doc/2.0/cookbook/security/entity_provider.html
Я пытаюсь выполнить запрос из таблицы учетных записей и присоединиться к таблице групп. Это отношение многих к многим с промежуточной таблицей account_group.
account Table Fields: id, firstName, and email
account_group Table Fields: account_id and group_id
group Table Fields: id, name, and role
проблема
Вот мой DQL:
SELECT a.firstName, g.role
FROM WikiRosterMainBundle:Account a
LEFT JOIN a.groups g
WHERE a.email = :email
Я получаю внутреннюю ошибку сервера:
Исключение произошло при выполнении «SELECT a0_.id AS id0, a0_.firstName AS firstName1, a0_.email AS email3, g1_.role AS role18 FROM account a0_ LEFT JOIN account_group a2_ ON a0_.id = a2_.account_id Группа LEFT JOIN g1_ ON g1_.id = a2_.group_id WHERE a0_.email =? ‘ с параметрами {«1»: «[email protected]»}:
SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с ‘group g1_ ON g1_.id = a2_.group_id WHERE a0_.email =’ [email protected] » в строке 1
Что я пробовал:
+Adding первичный ключ в таблице account_group (не работает)
+Writing мои собственные левые присоединяются к запросу mysql и вводят его в phpmyadmin (работает с одним левым соединением, но не удается, когда я пытаюсь присоединиться к 3 таблицам)
+Flipping таблица, в которую я присоединяюсь/выбираю из
Исследования, которые я сделал
Кажется, что левое соединение изменилось в mysql 5. Я просмотрел документы и другие вопросы:
http://dev.mysql.com/doc/refman/5.0/en/join.html
MySQL LEFT JOIN после изменений 5.0.12 — Как переписать запрос
Спасибо за любую помощь!