|
v7: 1c++ v3 прямые запросы win2003 Sql 7 1cv77-27 | ☑ | ||
---|---|---|---|---|
0
ssvertov
17.11.16
✎
21:30
|
1.Запрос выполняется, но при использовании
RS.УложитьСписокОбъектов(спсКлиенты, "#Klienti","Контрагенты"); выдает сообщение (серым) Internal error: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'table'. при этом на sql 2008 все работает без этого сообщения.. есть ли возможность исправить? |
|||
1
mehfk
17.11.16
✎
21:32
|
Исходники 1с++ открыты - исправляй.
|
|||
2
ssvertov
17.11.16
✎
21:33
|
прикольно...
|
|||
3
Franchiser
гуру
17.11.16
✎
21:56
|
ВрТабл = "";
RS.УложитьСписокОбъектов(спсКлиенты, ВрТабл, "Контрагенты"); |
|||
4
Franchiser
гуру
17.11.16
✎
21:58
|
УложитьСписокОбъектов / PutObjectList
Синтаксис: УложитьСписокОбъектов(Объект, ИмяТабл, ВидСпр) Параметры: Объект - тип: Справочник/Документ/СписокЗначений (содержащий элементы типа Справочник, Документ). Объект, который необходимо уложить во временную таблицу. ИмяТабл - тип: Строка. Возвращаемое значение. Имя временной таблицы, которое будет сгенерировано методом и возвращено через этот параметр. ВидСпр - тип: Строка. Вид справочника для иерархического включения элементов. |
|||
5
ssvertov
17.11.16
✎
22:15
|
я встречал этот синтаксис: - вызывает интерес - как он связывает условие по отбору из спсКлиенты?? в теле запроса (по типу данных "Контрагенты")
Запрос работает и получил "серым": Internal error: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'set'. |
|||
6
Franchiser
гуру
17.11.16
✎
22:21
|
ну разбивать запрос - подставив полученное имя ВТ:
ВрТаблГрупп = ""; Запрос.УложитьСписокОбъектов(ВыбКонтр, ВрТаблГрупп, "Контрагенты"); ТекстЗапроса=" |SELECT | Док.IDDoc as [Док $Документ.Счет], | $Док.Контрагент as [Контрагент $Справочник.Контрагенты] |FROM | $Документ.Счет as Док |WHERE | $Док.Контрагент IN (SELECT Val FROM " + ВрТаблГрупп + ") |"; |
|||
7
Franchiser
гуру
17.11.16
✎
22:25
|
для начала напиши RS.Отладка(1)
Может в чем ошибка |
|||
8
Franchiser
гуру
17.11.16
✎
22:27
|
State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'set'.
выглядит так будто параметр какой-то не установлен |
|||
9
ssvertov
17.11.16
✎
23:22
|
Спасибо за помощь: это все относится к соседней ветке
ВрТаблГрупп=""; RS.УложитьСписокОбъектов(спсКлиенты, ВрТаблГрупп,"Контрагенты"); ТекстЗапроса = " |SELECT | Рег.Контрагент AS [Контрагент $Справочник.Контрагенты] | , Рег.Период AS Период | , Sum(Рег.ДолгНачальныйОстаток) AS НачТов | , Sum(Рег.ДолгПриход) AS ПрихТов | , Sum(Рег.ДолгРасход) AS РасхТов | , Sum(Рег.ДолгКонечныйОстаток) AS КонТов |FROM $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(:ДатаНачала,:ДатаКонца~,ДЕНЬ,ДвиженияИГраницыПериода,,(Контрагент IN (SELECT val FROM " + ВрТаблГрупп + ")),Контрагент,Долг) AS Рег |GROUP BY Рег.Контрагент,Рег.Период |"; //RS.Отладка(1); RS.SetQueryTimeout(0); RS.SetTextParam("ДатаНачала", Дата1); RS.SetTextParam("ДатаКонца" , Дата2); табЗапрос = CreateObject("ТаблицаЗначений"); табЗапрос = RS.ВыполнитьИнструкцию(ТекстЗапроса); RS.Закрыть(); Получил: Internal error: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Неправильный синтаксис около ключевого слова "set". табЗапрос = RS.ВыполнитьИнструкцию(ТекстЗапроса); {D:\BASES\ETS\ETSOPTTIP\EXTFORMS\SQL\1С-БЫСТРО.ERT(328)}: Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ВзаиморасчетыПокупателей"State 42000, native 137, message [Microsoft][ODBC SQL Server Driver][SQL Server]Необходимо объявить скалярную переменную "@_CP_2". 1.:ДатаКонца~~ - ошибку дает 2.В консоли "1cqa" работает это SELECT Рег.Контрагент AS [Контрагент $Справочник.Контрагенты] , Рег.Период AS Период , Sum(Рег.ДолгНачальныйОстаток) AS НачТов , Sum(Рег.ДолгПриход) AS ПрихТов , Sum(Рег.ДолгРасход) AS РасхТов , Sum(Рег.ДолгКонечныйОстаток) AS КонТов FROM $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(:ДатаНачала,:ДатаКонца~,ДЕНЬ,ДвиженияИГраницыПериода,,(Контрагент IN (SELECT val FROM #Klienti)),Контрагент,Долг) AS Рег GROUP BY Рег.Контрагент,Рег.Период где Klienti= тип данных "VLI" такие дела |
|||
10
ssvertov
18.11.16
✎
00:49
|
рабочий вариант для sql2008 (РежимRPC=0)
SELECT Рег.Фирма AS [Фирма $Справочник.Фирмы] , Рег.Период AS Период , Рег.Контрагент AS [Контрагент $Справочник.Контрагенты] , Sum(Рег.ДолгНачальныйОстаток) AS НачТов , Sum(Рег.ДолгПриход) AS ПрихТов , Sum(Рег.ДолгРасход) AS РасхТов , Sum(Рег.ДолгКонечныйОстаток) AS КонТов FROM $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(:ДатаНачала,:ДатаКонца~,ДЕНЬ,ДвиженияИГраницыПериода,,,(Фирма,Контрагент),Долг) AS Рег INNER JOIN #Klienti ON #Klienti.Val = Контрагент INNER JOIN #Firma ON #Firma.Val = Фирма GROUP BY Рег.Фирма,Рег.Период,Рег.Контрагент ORDER BY 1,2,3 для sql 7.0 (РежимRPC=0) не пашет (а надо(( ) Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ВзаиморасчетыПокупателей"State 42000, native 2750, message [Microsoft][ODBC SQL Server Driver][SQL Server]Column or parameter #4: Specified column precision 38 is greater than the maximum precision of 28. |
|||
11
Туц
18.11.16
✎
01:42
|
(10) Ну во-первых,
INNER JOIN #Klienti ON #Klienti.Val = Контрагент INNER JOIN #Firma ON #Firma.Val = Фирма надо так INNER JOIN #Klienti ON #Klienti.Val = РЕГ.Контрагент INNER JOIN #Firma ON #Firma.Val = РЕГ.Фирма |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |