Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 20:55

1Cv77 SQL Ошибка

Автор Sanan Celilli, 25 фев 2013, 17:37

0 Пользователей и 1 гость просматривают эту тему.

Sanan Celilli

Помогите, пожалуйста.  Создал новый отчет (1Сv77 бухгалтеря). В DBF версие все в порядке, отчет работает как надо. Объединяю  SQL версией. Выдает ошибку:
SQL State: 42000
Native: 4104
Message:[Microsoft] [ODBC SQL Server Driver] [SQL Server] the multi-part identifier "SC3427.PARENTID" could not be bound
Благодарю заранее.

Herby

пример запроса выложи

Sanan Celilli

Процедура SenedUzreSorgu(SechNV, Tapildi, IlkTar, SonTar)
   Перем Запрос, ТекстЗапроса;
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(SenedUzreSorgu)
   |Период с IlkTar по SonTar;
   |YolVereqi  = Документ.ЙолВярягяси.ТекущийДокумент;
   |NeqlVasit  = Документ.ЙолВярягяси.Автомобил;
   |IshGunleri = Документ.ЙолВярягяси.IshGunleri;
   |IshlemGunu = Документ.ЙолВярягяси.IshlemGunu;
   |Функция IshlenmishG = Сумма(IshGunleri);
   |Группировка NeqlVasit упорядочить по NeqlVasit.Производственное;
   |Условие(NeqlVasit в SechNV);
   |"//}}ЗАПРОС
   ;
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
      Возврат;
   КонецЕсли;

   Пока Запрос.Группировка(1) = 1 Цикл
       Если Запрос.IshlenmishG > 0 Тогда
           Tapildi = 1;
      Иначе
           Tapildi = 0;
      КонецЕсли;
   КонецЦикла;

КонецПроцедуры

Добавлено: 27 фев 2013, 09:26


Суть в том, что надо выяснить по документу "ЙолВярягяси (путевой лист)" Автомобил вышел на работу, или нет? Автомобил (SechNV) находим предидущим запросом на основание справочника "ОсновныеСредство"

Herby

А по русски не судьба писать?
в 1C для того и добавили возможность русского, чтобы было читабельно и сразу понятно.

У "Автомобил" точно есть реквизит "Производственное"?
IshGunleri - это точно числовой реквизит?
IlkTar, SonTar - это точно даты?
SechNV - это реквизит типа "Автомобил" или это список значений? если это реквизит, то лучше писать не
|Условие(NeqlVasit в SechNV), а |Условие(NeqlVasit = SechNV)

на вскидку запрос написан правильно,  но возможно вы и напутали что-то с идентификаторами, что с такими названиями реквизитов не мудрено.

Sanan Celilli

Вы предполагаете, что в DBF версии с такими ошибками отчет может работать, а в SQL - е нет? Вед в в DBF версии отчет работает нормално !!!

Herby

есть варианты, при которых в дбф работает, а в sql нет, и наоборот.

и не рекомендуется называть переменные запроса, точно также как и название реквизитов.

и кстати, вы уверены что проблема в этом запросе? у вас же еще один запрос есть, в котором SechNV определяете.

Другие отчеты (с запросами) нормально работают в SQL версии?
Добавлено: 27 фев 2013, 12:10


в общем пробуй, выполнить запрос с одной переменной, например

|NeqlVasit  = Документ.ЙолВярягяси.Автомобил;
|Группировка NeqlVasit упорядочить по NeqlVasit.Производственное;

выполни с этим минимальным набором, если будет работать, значит в других переменных проблема - добавляй следующие, таким образом определишь в каком случае запрос валится.

и еще, реквизит "Производственное" случайно не строка неограниченной длинны?


Sanan Celilli

Болшое Вам спасибо. Мне стыдно, но дело было именно в "по NeqlVasit.Производственное;" должен был написать "по NeqlVasit.Наименование;"

Herby

а что тогда Производственное? просто если такого реквизита нет, то в DBF тоже не сработало бы

Sanan Celilli

Реквизит Производственное есть в справочнике, но упорядочить по нему нелзя (это просто признак). И мне то же интересно как же ДБФ пропустил такое ?

Herby

Цитата: Sanan Celilli от 27 фев 2013, 13:17
Реквизит Производственное есть в справочнике, но упорядочить по нему нелзя (это просто признак). И мне то же интересно как же ДБФ пропустил такое ?

потому что в DBF свои запросы, неизвестно как они там внутри строятся, но видимо каким-то образом это пропускается и не приводит к ошибке.

а в sql версии, запрос 1с на внутреннем уровне переводится в sql-запрос, и структура sql такое уже не могла обработать, вот и ошибка.

часто бывает когда ошибок нет, но результаты запросов на SQL и ДБФ разные. особенно это касается строковых переменных.

и вариантов где в одном формате базе работает, а в другом нет - масса. просто все на память и не воспроизведу сейчас. но было много проблем, когда работал в конторе где конфигурация одна и та же, но использовалась на разных форматах базы, и приходилось очень много отчетов править.
Добавлено: 27 фев 2013, 14:32


Есть недокументированная функция Запрос.ВключитьSQL(0);
ее выключаешь перед запрос.выполнить(.....

и запрос тогда будет выполняться без использованием SQL технологий, ошибки бы у вас не было, сработало бы как и для DBF версии. но только производительность сильно бы понизилась.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск