Имя: Пароль:
1C
1C 7.7
v7: Прямой запрос - нужно добавить группировку по датам
0 Vladal
 
06.07.12
11:27
Есть прямой запрос, в который надо добавить группировку по датам за период. Как - не знаю, не работал с прямыми запросами.

   ТекстЗапроса = "
       |SELECT ПартииТоваровОстатки.Склад [Склад $Справочник.МестаХранения]
       |    , Номенклатура.PARENTID [ГруппаТовара $Справочник.Номенклатура]
       |    , ПартииТоваровОстатки.Товар [Товар $Справочник.Номенклатура]
       |    , ПартииТоваровОстатки.Размер [Размер $Справочник.Размеры]
       |    , Sum(ПартииТоваровОстатки.ОстатокТовараОстаток) СуммаОстатокТовараОстаток
       |    , Sum(ПартииТоваровОстатки.СтоимостьОстаток) СуммаСтоимостьОстаток
       |    , Sum(ПартииТоваровОстатки.ПродСтоимостьОстаток) СуммаПродСтоимостьОстаток
       |    , Sum(ПартииТоваровОстатки.БалСтоимостьОстаток) СуммаБалСтоимостьОстаток
       |FROM $РегистрОстатки.ПартииТоваров(,,
       |        #Sklad# #Razmer#,
       |        (Склад, Товар, Размер),
       |        (ОстатокТовара, Стоимость, ПродСтоимость, БалСтоимость)) AS ПартииТоваровОстатки
       |    LEFT OUTER JOIN $Справочник.Номенклатура AS Номенклатура ON ПартииТоваровОстатки.Товар = Номенклатура.ID
       |#Group#
       |GROUP BY ПартииТоваровОстатки.Склад
       |    , Номенклатура.PARENTID
       |    , ПартииТоваровОстатки.Товар
       |    , ПартииТоваровОстатки.Размер
       |ORDER BY ПартииТоваровОстатки.Склад
       |    , Номенклатура.PARENTID
       |    , ПартииТоваровОстатки.Товар
       |    , ПартииТоваровОстатки.Размер
       |";

Что дописать к этому запросу, в смысле какие буквы, в каком порядке и в каком месте запроса?
1 Гефест
 
06.07.12
11:29
Какие даты нужно добавить?
2 Vladal
 
06.07.12
11:30
За период по дням. Например, за месяц. Сейчас этот запрос показывает остатки только на ТА
3 Mikeware
 
06.07.12
11:32
И какие могут быть "остатки по дням", если ты берешь итог на дату?
4 Vladal
 
06.07.12
11:38
(3) Я ничего не беру. Это осталось от предшественника, а с прямыми я не работал.
Вот как этот запрос допилить до требуемой задачи?
5 Ёпрст
 
гуру
06.07.12
11:40
(4) взять ВТ ОстанкиИОбороты с нужной периодичностью и.. если нужны все даты - левое соединение таблички с датами с этой ВТ.

А можно и через хранимку - кучу запросов на вычисление итога.
6 Vladal
 
06.07.12
11:46
(5) Более простой способ есть? Или приведенный запрос - и есть самый простой. но с получением на ТА?
7 Ёпрст
 
гуру
06.07.12
11:47
(6) приведенный запрос - это просто итоги измерений на конкретную дату.
8 Ёпрст
 
гуру
06.07.12
11:48
9 viktor_vv
 
06.07.12
11:49
(6) Так ВТ ОстаткиИОбороты с периодичностью День и есть самый простой.
10 Гефест
 
06.07.12
11:53
ВТ покажет только на те дни, когда были движения. Если нужно на все дни, то она не поможет
11 Vladal
 
06.07.12
11:55
(7) Ну не в цикле же?
И как написать? ДЛя меня это китайский язык
12 Vladal
 
06.07.12
11:56
т.е. простым способом никак?
обычный запрос в этой шизанутой базе вот уже 40 минут работает и ни конца, ни края.
13 Ёпрст
 
гуру
06.07.12
11:56
(10) поможет - соединением с табличкой дат..
хотя, там тоже есть "ньюансик"
14 Vladal
 
06.07.12
11:58
Ёпрст4, мы простых путей не ищем.
Подсознание написало сначала "мы пустых путей..."
15 viktor_vv
 
06.07.12
12:03
Ну примерно так, это с датами на которые были остатки.

 ТекстЗапроса = "
       |SELECT ПартииТоваровОстатки.Склад [Склад $Справочник.МестаХранения]
       |    , Номенклатура.PARENTID [ГруппаТовара $Справочник.Номенклатура]
       |    , ПартииТоваровОстатки.Товар [Товар $Справочник.Номенклатура]
       |    , ПартииТоваровОстатки.Размер [Размер $Справочник.Размеры]
       |    , ПартииТоваровОстатки.Период [День $Дата]
       |    , Sum(ПартииТоваровОстатки.ОстатокТовараКонечныйОстаток) СуммаОстатокТовараОстаток
       |    , Sum(ПартииТоваровОстатки.СтоимостьКонечныйОстаток) СуммаСтоимостьОстаток
       |    , Sum(ПартииТоваровОстатки.ПродСтоимостьКонечныйОстаток) СуммаПродСтоимостьОстаток
       |    , Sum(ПартииТоваровОстатки.БалСтоимостьКонечныйОстаток) СуммаБалСтоимостьОстаток
       |FROM $РегистрОстаткиОбороты.ПартииТоваров(:фдДатаНач,:фдДатаКон~,
       |        День,
       |        ,
       |        ,
       |        #Sklad# #Razmer#,
       |        (Склад, Товар, Размер),
       |        (ОстатокТовара, Стоимость, ПродСтоимость, БалСтоимость)) AS ПартииТоваровОстатки
       |    LEFT OUTER JOIN $Справочник.Номенклатура AS Номенклатура ON ПартииТоваровОстатки.Товар = Номенклатура.ID
       |#Group#
       |GROUP BY ПартииТоваровОстатки.Склад
       |    , Номенклатура.PARENTID
       |    , ПартииТоваровОстатки.Товар
       |    , ПартииТоваровОстатки.Размер
       |    , ПартииТоваровОстатки.Период
       |ORDER BY ПартииТоваровОстатки.Склад
       |    , Номенклатура.PARENTID
       |    , ПартииТоваровОстатки.Товар
       |    , ПартииТоваровОстатки.Размер
       |";

Мог где-нибудь накосячить, но принцип понятен.
:фдДатаНач и :фдДатаКон смотри как параметры устанавливаются.
16 Гефест
 
06.07.12
12:04
(13) Остатки на дату все равно пустыми будут, так что нюанс там большой
17 Mikeware
 
06.07.12
12:07
(16) Ну это достаточно просто обрабатывается уже осле выгрузки в ТЗ.
а если этот отчет тупо выводит результат - то даже при выводе.
18 Vladal
 
06.07.12
12:10
(15) Спасибо. Пробую.
19 Ёпрст
 
гуру
06.07.12
12:11
(16) зато быстродействие выше, чем отдельный запрос на каждую дату..
Да и, результат не проблема обработать
20 Vladal
 
06.07.12
12:32
(19) Совсем на каждую дату может, и не надо. Бухгалтерия - не всегда триумф математики над разумом.
21 Vladal
 
06.07.12
12:46
(15) Получилось. Спасибо. Бушки проверяют отчет.
22 Vladal
 
06.07.12
13:00
ага. а как теперь упорядочить по дате? Я пишу:

       |GROUP BY ПартииТоваровОстатки.День, ПартииТоваровОстатки.Склад
       |    , Номенклатура.PARENTID
       |    , ПартииТоваровОстатки.Товар
       |    , ПартииТоваровОстатки.Размер
       |    , ПартииТоваровОстатки.Период
       |ORDER BY ПартииТоваровОстатки.День, ПартииТоваровОстатки.Склад
       |    , Номенклатура.PARENTID
       |    , ПартииТоваровОстатки.Товар
       |    , ПартииТоваровОстатки.Размер


и получаю

State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'День'.
23 viktor_vv
 
06.07.12
13:02
|ORDER BY ПартииТоваровОстатки.Период, ПартииТоваровОстатки.Склад

День это алиас. А поле Период.
24 Vladal
 
06.07.12
13:02
А! Ступил.

|GROUP BY ПартииТоваровОстатки.Период, ПартииТоваровОстатки.Склад
       |    , Номенклатура.PARENTID
       |    , ПартииТоваровОстатки.Товар
       |    , ПартииТоваровОстатки.Размер
       |ORDER BY ПартииТоваровОстатки.Период, ПартииТоваровОстатки.Склад
       |    , Номенклатура.PARENTID
       |    , ПартииТоваровОстатки.Товар
       |    , ПартииТоваровОстатки.Размер
AdBlock убивает бесплатный контент. 1Сергей