|
v7: Ошибка при выполнении прямого запроса SQL | ☑ | ||
---|---|---|---|---|
0
burrya
22.05.13
✎
11:25
|
ТекстЗапроса = "
|SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, | CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as Дата, | $ДокНЗ.ДатаЗакрытия as ДатаЗакрытия, | $ДокНЗ.ИтогоКОплате as ИтогоКОплате, | $СпрКл.УчастникБонуснойПрограммы as УчастникБонуснойПрограммы, | $СпрКл.БонуснаяКарта as БонуснаяКарта, | РегВзаиморасчеты.Докум as ДокументВзаиморасчеты, | РегВзаиморасчеты.СуммаНВПриход as СуммаОплаты |FROM | _1SJourn Жур (nolock) |INNER JOIN | $Документ.НарядЗаказ as ДокНЗ (nolock) ON ДокНЗ.IDDoc = Жур.IDDoc |INNER JOIN | $Справочник.Клиенты as СпрКл (nolock) ON $ДокНЗ.Клиент = СпрКл.ID |INNER JOIN | $РегистрОстаткиОбороты.Взаиморасчеты(:ДатаНачалаРаботыСистемы, :ДатаКон~,,,, Докум = Жур.IDDoc, (Докум), (СуммаНВ)) as РегВзаиморасчеты ON Жур.IDDoc = РегВзаиморасчеты.Докум |WHERE | Жур.IDDocDef = $ВидДокумента.НарядЗаказ AND | Жур.Closed & 1 = 1 AND | Жур.IsMark = 0 AND | $ДокНЗ.ДатаЗакрытия BETWEEN convert(datetime, :ДатаНач) AND convert(datetime, :ДатаКон) AND | $СпрКл.УчастникБонуснойПрограммы = 1 AND | $СпрКл.БонуснаяКарта <> $ПустойИД | |UNION | |SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, | CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as Дата, | $ДокРН.ДатаЗакрытия as ДатаЗакрытия, | $СпрКл.УчастникБонуснойПрограммы as УчастникБонуснойПрограммы, | $СпрКл.БонуснаяКарта as БонуснаяКарта, | РегВзаиморасчеты.Докум as ДокументВзаиморасчеты, | РегВзаиморасчеты.СуммаНВПриход as СуммаОплаты |FROM | _1SJourn Жур (nolock) |INNER JOIN | $Документ.РеализНакладная as ДокРН (nolock) ON ДокРН.IDDoc = Жур.IDDoc |INNER JOIN | $Справочник.Клиенты as СпрКл (nolock) ON $ДокРН.Клиент = СпрКл.ID |INNER JOIN | $РегистрОстаткиОбороты.Взаиморасчеты(:ДатаНачалаРаботыСистемы, :ДатаКон~,,,, Докум = Жур.IDDoc, (Докум), (СуммаНВ)) as РегВзаиморасчеты ON Жур.IDDoc = РегВзаиморасчеты.Докум |WHERE | Жур.IDDocDef = $ВидДокумента.РеализНакладная AND | Жур.Closed & 1 = 1 AND | Жур.IsMark = 0 AND | $ДокРН.ДатаЗакрытия BETWEEN convert(datetime, :ДатаНач) AND convert(datetime, :ДатаКон) AND | $СпрКл.УчастникБонуснойПрограммы = 1 AND | $СпрКл.БонуснаяКарта <> $ПустойИД";// ON Жур.IDDoc = РегВзаиморасчеты.Докум ODBCRecordset.УстановитьТекстовыйПараметр("ДатаНачалаРаботыСистемы", Константа.ДатаНачалаРаботыПрограммотехники); ODBCRecordset.УстановитьТекстовыйПараметр("ДатаНач", Константа.ДатаСтартаБонуснойСистемы); ODBCRecordset.УстановитьТекстовыйПараметр("ДатаКон", ТекущаяДата() - 14); ODBCRecordset.Отладка(1); ОсновнойЗапрос = ODBCRecordset.ВыполнитьИнструкцию(ТекстЗапроса); я=ОсновнойЗапрос.ВыбратьСтроку(); Выходит ошибка: State 42000, native 107, message [Microsoft][ODBC SQL Server Driver][SQL Server]The column prefix 'Жур' does not match with a table name or alias name used in the query. |
|||
1
burrya
22.05.13
✎
11:26
|
без объединения с $РегистрОстаткиОбороты.Взаиморасчеты запрос выполняется
|
|||
2
Ненавижу 1С
гуру
22.05.13
✎
11:26
|
наверное нельзя русские алиасы создавать
|
|||
3
Ёпрст
22.05.13
✎
11:27
|
во втором юнионе сделай другой алияс.. метапарсер не очень дружит, когда в юнионах одинаковые псевдонимы таблиц.
|
|||
4
1Сергей
22.05.13
✎
11:27
|
количество колонок не совпадает
|
|||
5
cdiamond
22.05.13
✎
11:28
|
Два Жура
|
|||
6
Ненавижу 1С
гуру
22.05.13
✎
11:28
|
а не...
разве можно в параметрах писать так? Докум = Жур.IDDoc с точки зрения вызова система не знает про Жур |
|||
7
viktor_vv
22.05.13
✎
11:32
|
(6) Нельзя, да и смысла не вижу в таком соединении.
|
|||
8
viktor_vv
22.05.13
✎
11:35
|
А у него это еще и в параметрах в условии написано.
|
|||
9
Ненавижу 1С
гуру
22.05.13
✎
11:35
|
(8) кхм... а я в (6) не ИМЕННО ЭТО написал?
|
|||
10
viktor_vv
22.05.13
✎
11:54
|
(9) Ну я типа и подтвердил (6), там же с вопросом было, можно ли, я и подтвердил, что нельзя так писать :).
|
|||
11
burrya
22.05.13
✎
14:49
|
Спасибо.
Подскажите еще пожалуйста как в запросе получить строковый ИД вида документа или длинный ИД объекта. Дело в том что измерение по регистру Взаиморасчеты Докум - документ неопределенного вида, поэтому на сервере он лежит ввиде длинной строки. Из-за чего пока не могу сделать ДЖОИН - в журнале короткий ИД, в регистре длинный. |
|||
12
Ёпрст
22.05.13
✎
14:52
|
$ВидДокумента
$ВидДокумента36 |
|||
13
1Сергей
22.05.13
✎
15:22
|
(11) в чём дело-то было?
|
|||
14
ЧеловекДуши
22.05.13
✎
15:23
|
(0) Вроде понятно написал, что нет колонки Жур в таблице :)
|
|||
15
burrya
22.05.13
✎
16:33
|
(12) Спасибо.
А, если заранее не известен тип документа, и, например, нужно получить дату документа неопределенного типа. |
|||
16
viktor_vv
22.05.13
✎
16:38
|
(15) Содиняй с журналом документов по условию типа
ON Жур.IDDoc = Right(РегВзаиморасчеты.Докум,9) но тут томроза могут быть. |
|||
17
Serginio1
22.05.13
✎
16:39
|
LEFT OUTER JOIN _1SJOURN AS Журнал With (NOLOCK) ON substring(Рег.Документ,5,Len(Рег.Документ)) = Журнал.IDDOC
|
|||
18
Serginio1
22.05.13
✎
16:40
|
(16) Там вначале ВидДокумента идет
when left($ЗаказПоставщику.ДокОснование,4)= $ВидДокумента36.ЗаявкаПокупателя then |
|||
19
Serginio1
22.05.13
✎
16:41
|
(18) Тьфу Right не заметил. Прошу прощения.
|
|||
20
burrya
22.05.13
✎
17:14
|
(16)(17)А если в журнале будут такие же ИДшники но для других видов документов?
(18) я заранее не знаю вид документа |
|||
21
Ёпрст
22.05.13
✎
17:15
|
(20) iddoc уникален во всей базе, ибо 1 табличка 1sjourn
|
|||
22
Serginio1
22.05.13
✎
17:22
|
(20) Я к тому, что если нужно произвести некоторые действия от конкретного вида документа. Вид для неопределенного документа записывается в первых 4 символах.
|
|||
23
burrya
22.05.13
✎
17:22
|
(21)(22) я понял, спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |