![]() |
|
v7: Прямой запрос, база dbf, остатки на дату | ☑ | ||
---|---|---|---|---|
0
Gluk
22.02.16
✎
13:39
|
Использую 1cpp.dll, OLEDBData, провайдер VFPOLEDB, т.к. база DBF
ТекстЗапроса = "SELECT | Рег.Товар as [Номенклатура $Справочник.Номенклатура], | SUM(Рег.КоличествоОстаток) as Количество |FROM | (SELECT | $Р.Товар AS Товар, | $Р.Количество AS КоличествоОстаток | FROM | $РегистрИтоги.Склад as Р | WHERE | period = :НаДату~~ | UNION ALL | SELECT | $Р2.Товар AS Товар, | $Р2.Количество * (1 - Р2.debkred * 2) AS КоличествоОстаток | FROM | $Регистр.Склад AS Р2 | ) Рег |GROUP BY | Рег.Товар"; Запрос.УстановитьТекстовыйПараметр("НаДату", НаДату); На дату ТА вроде все правильно получаю, но если указать дату до ТА, какая то ерунда. ЧЯНДТ? |
|||
1
Mikeware
22.02.16
✎
13:47
|
ерунду запрашиваешь - ерунду и получаешь.
Где отбор по периоду для движений? |
|||
2
Chieftain
22.02.16
✎
14:02
|
(1)+period в РегистрИтоги равен началу месяца итогов
|
|||
3
Mikeware
22.02.16
✎
14:04
|
(2) это если итоги помесячные...
|
|||
4
Mikeware
22.02.16
✎
14:04
|
+(3) они равны дате начала периода итогов
|
|||
5
Chieftain
22.02.16
✎
14:06
|
(4) Согласен, просто в 99% их именно в месяц и ставят
|
|||
6
Gluk
22.02.16
✎
15:09
|
Взял пример с сайта, прямые запросы не использовал ранее, надоумте, как правильно сделать
|
|||
7
Gluk
22.02.16
✎
15:16
|
(1) как называется поле периода в регистре движений?
|
|||
8
Gluk
22.02.16
✎
15:17
|
(2) как его запрашивать на конец периода?
|
|||
9
Gluk
22.02.16
✎
15:29
|
киньте пример простого запроса к регистру остатков
|
|||
10
MishaD
22.02.16
✎
15:58
|
С прямыми сам не работал, разок помнится экспериментировал. Попробуй изменить так.
| FROM | $Регистр.Склад AS Р2 | WHERE | Р2.period < :НаДату~~ |
|||
11
Gluk
22.02.16
✎
16:19
|
(10) пробовал, говорит:
Произошла одна или несколько ошибок во время обработки команды. |
|||
12
ДенисЧ
22.02.16
✎
16:21
|
(9) Ты, главное, никогда не ходи на 1cpp.ru...
А то вдруг там найдёшь ответы на свои вопросы... |
|||
13
Gluk
23.02.16
✎
12:36
|
таки разобрался, но поимел ошибку в своем INNER JOIN:
SQL: Queries of this type are not supported. SELECT Рег.Товар as Номенклатура, SUM(Рег.КоличествоОстаток) as Количество FROM (SELECT $Р.Товар AS Товар, $Р.Количество AS КоличествоОстаток FROM $РегистрИтоги.Склад as Р INNER JOIN $Справочник.Номенклатура СпрНом ON СпрНом.ID = $Р.Товар AND ($СпрНом.Department IN (SELECT VAL FROM :ВрТаблСвойствНоменклатуры3)) WHERE (period = :ПредМесяц~~) UNION ALL SELECT $Р.Товар AS Товар, $Р.Количество * (1 - Р.debkred * 2) AS КоличествоОстаток FROM $Регистр.Склад AS Р INNER JOIN 1sjourn jr ON Р.iddoc = jr.iddoc AND (jr.date >= :НачалоМесяца~~) AND ($ФлагРегистра.Склад = 1) INNER JOIN $Справочник.Номенклатура СпрНом ON СпрНом.ID = $Р.Товар AND ($СпрНом.Department IN (SELECT VAL FROM :ВрТаблСвойствНоменклатуры3)) ) Рег GROUP BY Рег.Товар В поиске нашел решение заменить AND на WHERE в INNER JOIN, поставил, но получаю ошибку синтаксиса |
|||
14
Mikeware
23.02.16
✎
12:37
|
(12) там сейчас страшно.
|
|||
15
Gluk
23.02.16
✎
12:39
|
(12), (14) нашел там chm, очень помогло
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |