|
v7: Кто ещё помнит прямые запросы? Помогите. | ☑ | ||
---|---|---|---|---|
0
Aswed
10.11.15
✎
11:16
|
Надо в старой базе подправить прямой запрос, добавив в нем отбор документов по периоду.
Пытаюсь добавить условие ТекстЗапроса = " |SELECT | ЗаказНаряд.IDDOC AS [ЗаказНаряд :Документ.ЗаказНаряд] |FROM | Документ_ЗаказНаряд AS ЗаказНаряд | |LEFT JOIN | Журнал AS Жур |ON | ЗаказНаряд.IDDOC = Жур.IDDOC |WHERE | Жур.ISMARK <> '*' | AND ЗаказНаряд.ДокументОснование = :ЗаявкаНаРемонт~ | AND ЗаказНаряд.ДатаДок BETWEEN :НачДата AND :КонДата |"; Ругается ЗапросSQL.ВыполнитьЗапрос(ТекстЗапроса, сзРезультат); {C:\1CALFA\KIA\AUTOPLAN\AUTOPLAN — КОПИЯ.ERT(447)}: no such column: ЗаказНаряд.ДатаДок Подскажите что не так делаю? |
|||
1
mikecool
10.11.15
✎
11:17
|
иннер джойн журнал и у него фильтр по дате
|
|||
2
mikecool
10.11.15
✎
11:18
|
+1 каст(Лефт(Жур.ДатеТаймИддок, 8) аз датетайм)
|
|||
3
НЕА123
10.11.15
✎
11:19
|
Жур.ДатаДок
? |
|||
4
mikecool
10.11.15
✎
11:30
|
|SELECT
| ЗаказНаряд.IDDOC AS [ЗаказНаряд :Документ.ЗаказНаряд] |FROM | Документ_ЗаказНаряд AS ЗаказНаряд | |inner JOIN | Журнал AS Жур |ON | ЗаказНаряд.IDDOC = Жур.IDDOC |WHERE | Жур.ISMARK <> '*' | AND ЗаказНаряд.ДокументОснование = :ЗаявкаНаРемонт~ | AND cast(Left(Жур.DateTimeIddoc, 8) as DateTime) BETWEEN :НачДата AND :КонДата |"; |
|||
5
Горогуля
10.11.15
✎
11:32
|
Жур.ISMARK <> '*'?
|
|||
6
Гёдза
10.11.15
✎
11:32
|
(2) так лучше фильтр по дате не делать, ибо в индекс не попадешь
|
|||
7
mikecool
10.11.15
✎
11:34
|
(6) а как надо?
|
|||
8
Aswed
10.11.15
✎
11:42
|
Блин проще переписать через обычный запрос, чем вспоминать эти прямые.
Не работал с ними уже лет 5. |
|||
9
VladZ
10.11.15
✎
11:53
|
Зачем все это помнить? Идешь сюда: http://www.1cpp.ru/index.php/Documentation Качаешь доки. В разделе "Учебник" смотришь примеры. Там все хорошо расписано.
|
|||
10
Aswed
10.11.15
✎
11:58
|
(4) тут ругается
ЗапросSQL.ВыполнитьЗапрос(ТекстЗапроса, сзРезультат); {C:\1CALFA\KIA\AUTOPLAN\AUTOPLAN — КОПИЯ.ERT(483)}: near "(": syntax error (9) Уже копаюсь) Но пока не нашел то что нужно. |
|||
11
Aswed
10.11.15
✎
12:15
|
нашел свои старые обработки, переделал как там
ТекстЗапроса = " |SELECT | ЗаказНаряд.IDDOC AS [ЗаказНаряд :Документ.ЗаказНаряд], | CAST(LEFT(Жур.Date_Time_IDDoc,8) AS DateTime) as ДатаДок |FROM | Документ_ЗаказНаряд AS ЗаказНаряд | |LEFT JOIN | Журнал AS Жур |ON | ЗаказНаряд.IDDOC = Жур.IDDOC |WHERE | Жур.ISMARK <> '*' | AND ЗаказНаряд.ДокументОснование = :ЗаявкаНаРемонт~ | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; Все равно сволочь ругается на открывающую скобку |
|||
12
Aswed
10.11.15
✎
12:16
|
А вообще нафиг тут делали соединение с журналом? Когда можно напрямую доки выбрать из журнала задав тип выбираемого дока?
|
|||
13
Aswed
10.11.15
✎
12:16
|
+12 сейчас так и попробую
|
|||
14
Serginio1
10.11.15
✎
12:51
|
Ато это за Жур.ISMARK <> '*'
Может (Жур.ISMARK = 0) |
|||
15
dk
10.11.15
✎
13:14
|
отключай строки по одной - ищи где ошибка
LEFT JOIN на INNER JOIN обычно к журналу ставят ------ соединение нужно для даты документа дата в журнале хранится |
|||
16
olegves
10.11.15
✎
13:24
|
AS DateTime - это херь, посмотри в скуле синтаксис CAST
|
|||
17
ЧеловекДуши
10.11.15
✎
13:36
|
(0) А разве дата документа не в журнале?
Может стоит использовать Журнал, в качестве основной таблицы. Организовать отбор только по нужному Виду документов. Установить Период Дописать проверку на проведенность документа. (15) А вы В курсе, Что Иннер, на Сиквеле выполняется дольше, чем Лефт :) |
|||
18
ЧеловекДуши
10.11.15
✎
13:37
|
(16) У 7.7, тама Строка <Дата Док.>+<Время док>+<ИД Док>
|
|||
19
ЧеловекДуши
10.11.15
✎
13:37
|
(14) Это только Пометка на удаления.
|
|||
20
ЧеловекДуши
10.11.15
✎
13:39
|
+(19) Уж тогда "Жур.Closed & 1 = 1"
http://www.script-coding.com/Direct_queries.html Искать на страницы текст "Дополним пример выбором контрагента." |
|||
21
Попытка1С
10.11.15
✎
13:43
|
(17) Либо left join + where либо сразу inner join and условие на дату
и не забываем про nolock в секциях FROM и LEFT JOIN |
|||
22
Попытка1С
10.11.15
✎
14:00
|
(11) А давно 1с++ сама преобразовывает Журнал в _1sjourn?
А вот тут |FROM | Документ_ЗаказНаряд AS ЗаказНаряд Должно же быть так |FROM | $Документ.ЗаказНаряд AS ЗаказНаряд Или что это за объект "ЗапросSQL" ? |
|||
23
ЧеловекДуши
10.11.15
✎
14:06
|
(21) Само собой, в лефт проверку. на то, что документ не битый :)
Но вот иннер, больше от лени :) |
|||
24
varelchik
10.11.15
✎
14:11
|
(11)Жур.ISMARK <> '*'
надо Жур.ISMARK =0 это лишнее | AND cast(Left(Жур.DateTimeIddoc, 8) as DateTime) BETWEEN :НачДата AND :КонДата надо | AND Жур.DateTimeIddoc BETWEEN :НачДата AND :КонДата~ |
|||
25
ЧеловекДуши
10.11.15
✎
14:26
|
(24) Вот бывает "BETWEEN ", подводит :)
Лучше просто "<=" и ">=" :) |
|||
26
trdm
10.11.15
✎
14:33
|
(16) Да это ваще не скуль, а скулайт судя по
|FROM | Документ_ЗаказНаряд AS ЗаказНаряд |
|||
27
Aswed
10.11.15
✎
17:43
|
(22) мать его
БазаSQL = СоздатьОбъект("SQLiteBase"); я этой хренью не пользовался не разу. А я ещё думаю как то странно запрос строится. Вот отсюда видимо и рога растут. |
|||
28
Aswed
10.11.15
✎
17:44
|
+ 27 как на этом то чуде условия в запросах строятся?
|
|||
29
viktor_vv
10.11.15
✎
18:00
|
(28) Судя по Жур.ISMARK <> '*' база случайно не ДБФ ?
|
|||
30
Aswed
10.11.15
✎
18:00
|
(29) Она самая. Хрень доисторическая.
|
|||
31
viktor_vv
10.11.15
✎
18:01
|
(29)+ Если ДБФ там структура журнала немного другая, в части даты времени, то есть поля Жур.Date_Time_IDDoc нет, попробую вспомнить.
|
|||
32
viktor_vv
10.11.15
✎
18:05
|
А, тогда
Жур.Date BETWEEN :НачДата AND :КонДата |
|||
33
viktor_vv
10.11.15
✎
18:07
|
(32) + Првда индекс есть подходящий только по полям DATE,TIME,IDDOC , но SQLite сам нормально находит все и дополняет для попадания.
|
|||
34
viktor_vv
10.11.15
✎
18:09
|
И ДокументОснование это общий реквизит или реквизит документа ? Если общий, то флаг Отбор стоит или нет ?
|
|||
35
viktor_vv
10.11.15
✎
18:23
|
Для примера рабочий для ДБФ
ТекстЗапроса = " |Select | Жур.IDDOC as [Док :Документ.НакладнаяНаОтпуск] |From | Журнал as Жур |Where | Жур.Date between :НачПериода and :КонПериода | and Жур.iddocdef = :ВидДокумента.НакладнаяНаОтпуск | and Жур.ISMARK <> '*' |"; |
|||
36
Aswed
11.11.15
✎
10:18
|
(34) Общий реквизит.
Спасибо, Date все получилось. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |