|
v7: SQLITE: Запрос с выборкой документа-владельца не отрабатывает как надо | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
24.04.13
✎
12:12
|
Здравствуйте, подскажите пожалуйста, вот текст запроса:
_ТекстЗапроса = " |SELECT | дЛитраж_ТЧ.Дата as [ДатаЧека $Дата], | дЛитраж_ТЧ.Литраж as [Литраж], | дЛитраж_ШП.спрТопливнаяКарта as [ТопливнаяКарта :Справочник.АВТ_ТопливныеКарты], | дПутевойЛист.саАвтовоз as [Автовоз $Справочник.АВТ_ТранспортныеСредства], | дПутевойЛист.ссВодитель as [Водитель $Справочник.Сотрудники] | |FROM | /* Выбираю из табличной части документа */ | [ДокументСтроки.АВТ_ЛитражПоЧекам] as дЛитраж_ТЧ | | /* Подключаю журнал для ограничения по пометке удаления*/ | inner Join [Журнал] Жур on Жур.iddocdef = :ВидДокумента.АВТ_ЛитражПоЧекам | and дЛитраж_ТЧ.IDDOC = Жур.IDDOC AND Жур.ISMARK <> '*' | | /* Подключаю шапку документа */ | Left Join [Документ.АВТ_ЛитражПоЧекам] as дЛитраж_ШП on дЛитраж_ШП.IDDOC = Жур.IDDOC | | /* Подключаю таблицу ссылок, для определения документа-владельца */ | Left Join [_1S.CRDOC] as Ссылки on Ссылки.CHILDID = Жур.IDDOC | | /* Подлкючаю шапку документа-владельца, с отбором по ссылкам */ | Left Join [Документ.АВТ_ПутевойЛист] as дПутевойЛист on дПутевойЛист.IDDOC = Ссылки.PARENTVAL | |WHERE | дЛитраж_ТЧ.Дата Between :НачДата AND :КонДата | |"; В результате выполнения поля "Автовоз" и "Водитель" - пустые. Что здесь не так? |
|||
1
Zhuravlik
24.04.13
✎
12:14
|
Видимо Ссылки.CHILDID = Жур.IDDOC?..
|
|||
2
Zhuravlik
24.04.13
✎
12:17
|
Нет, кажется тут косяк - дПутевойЛист.IDDOC = Ссылки.PARENTVAL, а какой модификатор строку в 23 символа преобразует?
|
|||
3
orefkov
24.04.13
✎
12:18
|
дПутевойЛист.IDDOC = substr(Ссылки.PARENTVAL, 2, 9)
|
|||
4
orefkov
24.04.13
✎
12:21
|
Извиняюсь за (3), конечно же
дПутевойЛист.IDDOC = substr(Ссылки.PARENTVAL, 6, 9) |
|||
5
Zhuravlik
24.04.13
✎
12:23
|
(3)(4) Спасибо, но не выходит все-равно, я
вывел в таблицу доп. селектом поля "Ссылки.PARENTVAL" и "дПутевойЛист.IDDOC", и поле "дПутевойЛист.IDDOC" - все пустое, но документы есть точно. |
|||
6
Zhuravlik
24.04.13
✎
12:27
|
А сейчас убрал условия на ИДДок по ссылкам, мне программа выдала в поля из (5) значения, они вообще не равны между собой... напр.:
Ссылки.PARENTVAL = "O1 XF8 P1 ", дПутевойЛист.IDDOC = " BD " |
|||
7
Zhuravlik
24.04.13
✎
12:28
|
+ Может я еще что в самом запросе не докрутил?
|
|||
8
Ёпрст
24.04.13
✎
12:35
|
дПутевойЛист.IDDOC = substr(Ссылки.PARENTVAL, 5, 9)
|
|||
9
Zhuravlik
24.04.13
✎
12:38
|
(8) Не хочет, поле дПутевойЛист.IDDOC пустое
|
|||
10
Ёпрст
24.04.13
✎
12:39
|
а ёпт, у тя ж не графа отбора ..
|
|||
11
Zhuravlik
24.04.13
✎
12:43
|
(10) Где?
|
|||
12
Ёпрст
24.04.13
✎
12:44
|
Должно как в (4) работать, если не работает - то владелеца нема.
|
|||
13
Zhuravlik
24.04.13
✎
12:53
|
(12) Не работает, но владелец есть 100%.
Вот как сейчас у меня выглядит текст запроса: _ТекстЗапроса = " |SELECT | дЛитраж_ТЧ.Дата as [ДатаЧека $Дата], | дЛитраж_ТЧ.Литраж as [Литраж], | дЛитраж_ШП.спрТопливнаяКарта as [ТопливнаяКарта :Справочник.АВТ_ТопливныеКарты], | дПутевойЛист.саАвтовоз as [Автовоз $Справочник.АВТ_ТранспортныеСредства], | дПутевойЛист.ссВодитель as [Водитель $Справочник.Сотрудники], | дЛитраж_ШП.IDDOC as ИД_Литраж, | Ссылки.PARENTVAL as ССылки_Парент, | дПутевойЛист.IDDOC as ИД_Путевой | |FROM | /* Выбираю из табличной части документа */ | [ДокументСтроки.АВТ_ЛитражПоЧекам] as дЛитраж_ТЧ | | /* Подключаю журнал для ограничения по пометке удаления*/ | inner Join [Журнал] Жур on Жур.iddocdef = :ВидДокумента.АВТ_ЛитражПоЧекам | and дЛитраж_ТЧ.IDDOC = Жур.IDDOC AND Жур.ISMARK <> '*' | | /* Подключаю шапку документа */ | Left Join [Документ.АВТ_ЛитражПоЧекам] as дЛитраж_ШП on дЛитраж_ШП.IDDOC = Жур.IDDOC | | /* Подключаю таблицу ссылок, для определения документа-владельца */ | Left Join [_1S.CRDOC] as Ссылки on Ссылки.CHILDID = дЛитраж_ШП.IDDOC | | /* Подлкючаю шапку документа-владельца, с отбором по ссылкам */ | Left Join [Документ.АВТ_ПутевойЛист] as дПутевойЛист on дПутевойЛист.IDDOC = substr(Ссылки.PARENTVAL, 6, 9) | |WHERE | дЛитраж_ТЧ.Дата Between :НачДата AND :КонДата | |"; И вот поля таблицы, которая получается в итоге: http://i49.fastpic.ru/big/2013/0424/fe/c823d4ce0468fe433676cb737d8829fe.png ИД по путевым листам - пустые... |
|||
14
Zhuravlik
24.04.13
✎
12:53
|
+ Что-то не пошла ссылка, вот еще раз
http://fastpic.ru/view/49/2013/0424/c823d4ce0468fe433676cb737d8829fe.png.html |
|||
15
Туц
24.04.13
✎
13:22
|
(0) Проверяй
1. дПутевойЛист.IDDOC = Ссылки.PARENTVAL 2. Ссылки.CHILDID = Жур.IDDOC 3. Жур.iddocdef = :ВидДокумента.АВТ_ЛитражПоЧекам and дЛитраж_ТЧ.IDDOC = Жур.IDDOC AND Жур.ISMARK <> '*' Сделай отладку 3 потом 2 потом 1. |
|||
16
Ёпрст
24.04.13
✎
13:29
|
Одно непонятно, нафига через жж.. искать документ-владельц?
Когда у тебя в АВТ_ЛитражПоЧекам должна быть непосредственно ссылка на него. |
|||
17
Ёпрст
24.04.13
✎
13:29
|
если он подчиненный.
|
|||
18
Dolly_EV
24.04.13
✎
15:12
|
(0) угу, в (17)
Скорее всего есть общий рекв "ДокОснование" типа "Документ", тогда: Left Join [Документ.АВТ_ПутевойЛист] as дПутевойЛист on дПутевойЛист.IDDOC = substr(Жур.ДокОснование, 6, 9) если он без отбора, тогда: Left Join [Документ.АВТ_ПутевойЛист] as дПутевойЛист on дПутевойЛист.IDDOC = substr(дЛитраж_ШП.ДокОснование, 6, 9) и не надо соединения к _1S.CRDOC |
|||
19
Zhuravlik
24.04.13
✎
16:17
|
Извините, отвлекся.
(17) Точно) Не подумал о самом простом. Вот так все получается _ТекстЗапроса = " |SELECT | дЛитраж_ТЧ.Дата as [ДатаЧека $Дата], | дЛитраж_ТЧ.Литраж as [Литраж], | дЛитраж_ШП.спрТопливнаяКарта as [ТопливнаяКарта :Справочник.АВТ_ТопливныеКарты], | дПутевой.саАвтовоз as [Автовоз $Справочник.АВТ_ТранспортныеСредства], | дПутевой.ссВодитель as [Водитель $Справочник.Сотрудники] | |FROM | /* Выбираю из табличной части документа */ | [ДокументСтроки.АВТ_ЛитражПоЧекам] as дЛитраж_ТЧ | | /* Подключаю журнал для ограничения по пометке удаления*/ | inner Join [Журнал] Жур on Жур.iddocdef = :ВидДокумента.АВТ_ЛитражПоЧекам | and дЛитраж_ТЧ.IDDOC = Жур.IDDOC AND Жур.ISMARK <> '*' | | /* Подключаю шапку документа */ | Left Join [Документ.АВТ_ЛитражПоЧекам] as дЛитраж_ШП on дЛитраж_ШП.IDDOC = Жур.IDDOC | | /* Подключаю шапку документа-владельца */ | Left Join [Документ.АВТ_ПутевойЛист] as дПутевой on дПутевой.IDDOC = дЛитраж_ШП.ДокОснование | | |WHERE | дЛитраж_ТЧ.Дата Between :НачДата AND :КонДата | |"; А здесь больше ничего не надо добавлять для скорости/кошерности? Так все работает быстренько. (18) Нет, общего реквизита нет. |
|||
20
Ёпрст
24.04.13
✎
16:21
|
дЛитраж_ШП.ДокОснование, а есть уверенность, что ДокОснование - реквизит с типом Докумен.ОпределенныйВид, а не просто <Документ> без вида ?
|
|||
21
Zhuravlik
24.04.13
✎
16:23
|
(20) Точно знаю, что это так :) ДокОснование = Документ.АВТ.ПутевойЛист.
|
|||
22
Zhuravlik
24.04.13
✎
16:23
|
*Документ.АВТ_ПутевойЛист.
|
|||
23
Zhuravlik
24.04.13
✎
16:29
|
(20) А подскажите, как в литературе разобраться? Вот я читаю в доке описание типизации числа:
Типизация Число Задается как: $|:Число|Number[.ЧислоДлинаЧисла[.ЧислоТочностьЧисла]] Значение результата запроса преобразуется в число. При указании точности числа, результат запроса округляется до указанной точности. И как в соответствии с этим мне протипизировать переменную дЛитраж_ТЧ.Литраж as [Литраж]? При прочтении доки показалось что так: дЛитраж_ТЧ.Литраж as [Литраж [15 [2]]] - но это неверно, через пробел тоже не катит. Что в описнаии подразумевают квадратные скобки? |
|||
24
Zhuravlik
24.04.13
✎
16:30
|
дЛитраж_ТЧ.Литраж as [Литраж :Число.15.2] - или так имеется в виду?
|
|||
25
Ёпрст
24.04.13
✎
16:31
|
(24) да так.
|
|||
26
Zhuravlik
24.04.13
✎
16:31
|
Как в (24) получилось, но описания все-равно не понимаю, зачем там скобки квадратные?
|
|||
27
Dolly_EV
25.04.13
✎
03:33
|
(26) квадратные скобки предполагают необязательность.
Т.е. варианты :Число.15.2 :Число.15 :Число все будут верные. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |