|
8.2 Остатки на каждый день | ☑ | ||
---|---|---|---|---|
0
Aswed
21.11.11
✎
14:56
|
Знаю что уже много много раз это обсуждали.
Знаю что даже есть такая статья в КЗ Книга знаний: v8: Полные остатки по периоду во вложенном запросе; Но что то у меня все равно не получается, уже целый день бьюсь над этим вопросом и пока результаты не важнецкие. Пробую запросом ВЫБРАТЬ РАЗРЕШЕННЫЕ ОстаткиАвтомобилейОстаткиИОбороты.КоличествоКонечныйОстаток КАК Остаток, ОстаткиАвтомобилейОстаткиИОбороты.ПодразделениеКомпании.ДилерскийЦентр КАК ДилерскийЦентр, ОстаткиАвтомобилейОстаткиИОбороты.Период КАК Период ИЗ РегистрНакопления.ОстаткиАвтомобилей.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, День, , Организация В (&СписОрганизаций)) КАК ОстаткиАвтомобилейОстаткиИОбороты ИТОГИ СУММА(Остаток) ПО ОБЩИЕ, Период ПЕРИОДАМИ(ДЕНЬ, &НачалоПериода, &ОкончаниеПериода), ДилерскийЦентр Выполняю, выгружаю в ТЗ Выбирает все равно только даты когда были движения. |
|||
1
Aswed
21.11.11
✎
14:57
|
Попробовал создать таблицу дат и подставить её в запрос
ТЗПериода = ОбщиеФункции.ВернутьДниПериода(Отчет.НачалоПериода, Отчет.ОкончаниеПериода); ЗапросВТ = Новый Запрос("Выбрать * ПОМЕСТИТЬ ВТТаб Из &ТЗПериодов Как Т"); ЗапросВТ.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц; ЗапросВТ.УстановитьПараметр("ТЗПериодов", ТЗПериода); ЗапросВТ.Выполнить(); Запрос.МенеджерВременныхТаблиц = ЗапросВТ.МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СУММА(ЕСТЬNULL(ОстаткиАвтомобилейОстаткиИОбороты.КоличествоНачальныйОстаток, 0)) КАК КоличествоНачальныйОстаток, | СУММА(ЕСТЬNULL(ОстаткиАвтомобилейОстаткиИОбороты.КоличествоПриход, 0)) КАК КоличествоПриход, | СУММА(ЕСТЬNULL(ОстаткиАвтомобилейОстаткиИОбороты.КоличествоРасход, 0)) КАК КоличествоРасход, | СУММА(ЕСТЬNULL(ОстаткиАвтомобилейОстаткиИОбороты.КоличествоКонечныйОстаток, 0)) КАК КоличествоКонечныйОстаток, | СУММА(ЕСТЬNULL(ОстаткиАвтомобилейОстаткиИОбороты.КоличествоОборот, 0)) КАК КоличествоОборот, | ОстаткиАвтомобилейОстаткиИОбороты.ПодразделениеКомпании.ДилерскийЦентр КАК ДилерскийЦентр, | ТЗПериодов.Период КАК Период |ИЗ | ВТТаб КАК ТЗПериодов | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиАвтомобилей.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, День, , Организация В (&СписОрганизаций)) КАК ОстаткиАвтомобилейОстаткиИОбороты | ПО ТЗПериодов.Период = ОстаткиАвтомобилейОстаткиИОбороты.Период | |СГРУППИРОВАТЬ ПО | ОстаткиАвтомобилейОстаткиИОбороты.ПодразделениеКомпании.ДилерскийЦентр, | ТЗПериодов.Период | |УПОРЯДОЧИТЬ ПО | Период"; ТЗ = Запрос.Выполнить().Выгрузить(); Результат аналогично и первому запросу. |
|||
2
Axel2009
21.11.11
✎
15:18
|
в таблице периодов нужно создавать с колонкой ДилерскийЦентр.
|
|||
3
sergei123654
21.11.11
✎
15:24
|
(0) может так?
ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2011, 3, 31, 0, 0, 0), ДЕНЬ) КАК Даты ПОМЕСТИТЬ ТаблицаДат ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2011, 1, 31, 0, 0, 0), ДЕНЬ) ИНДЕКСИРОВАТЬ ПО Даты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НАЧАЛОПЕРИОДА(ВзаиморасчетыОрганизацийСПолучателямиИЛОбороты.Период, ДЕНЬ) КАК Период, ВзаиморасчетыОрганизацийСПолучателямиИЛОбороты.Получатель, ВзаиморасчетыОрганизацийСПолучателямиИЛОбороты.СуммаВзаиморасчетовПриход, ВзаиморасчетыОрганизацийСПолучателямиИЛОбороты.СуммаСборовПриход, ВзаиморасчетыОрганизацийСПолучателямиИЛОбороты.СуммаСборовРасход, ВзаиморасчетыОрганизацийСПолучателямиИЛОбороты.СуммаВзаиморасчетовРасход ПОМЕСТИТЬ ТабдицаОстатковИОборотов ИЗ РегистрНакопления.ВзаиморасчетыОрганизацийСПолучателямиИЛ.Обороты(&НачалоПериода, &КонецПериода, Запись, ) КАК ВзаиморасчетыОрганизацийСПолучателямиИЛОбороты ИНДЕКСИРОВАТЬ ПО Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаДат.Даты, ТабдицаОстатковИОборотов.Получатель, ТабдицаОстатковИОборотов.СуммаВзаиморасчетовПриход, ТабдицаОстатковИОборотов.СуммаСборовПриход, ТабдицаОстатковИОборотов.СуммаСборовРасход, ТабдицаОстатковИОборотов.СуммаВзаиморасчетовРасход ИЗ ТаблицаДат КАК ТаблицаДат ЛЕВОЕ СОЕДИНЕНИЕ ТабдицаОстатковИОборотов КАК ТабдицаОстатковИОборотов ПО ТаблицаДат.Даты = ТабдицаОстатковИОборотов.Период а хотяяяяяяя.... пппёс его знает, но вроде так, а мож я и не правильно понял автора |
|||
4
teapot123
21.11.11
✎
15:40
|
||||
5
Rebelx
21.11.11
✎
15:43
|
ищи на инфостарте, Душелов вроде делал
|
|||
6
Rebelx
21.11.11
✎
15:44
|
ВЫБРАТЬ
Остатки.Номенклатура КАК Номенклатура, Остатки.Характеристика КАК Характеристика, ТаблицаПериодов.Период КАК Период, Остатки.ВНаличииНачальныйОстаток, ВЫБОР КОГДА Остатки.ВНаличииНачальныйОстаток > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК НаличиеТовара, Остатки.Склад КАК Склад ПОМЕСТИТЬ #НаличиеТоваровНаСкладахПоДням ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ КурсыВалют.Период КАК Период ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют ГДЕ КурсыВалют.Период МЕЖДУ &ПериодРасчета И КОНЕЦПЕРИОДА(&ПериодРасчета, МЕСЯЦ)) КАК ТаблицаПериодов ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Период КАК НачалоИнтервала, МИНИМУМ(ВЫБОР КОГДА Товары.Период ЕСТЬ NULL ТОГДА КОНЕЦПЕРИОДА(КОНЕЦПЕРИОДА(&ПериодРасчета, МЕСЯЦ), ДЕНЬ) ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Товары.Период, ДЕНЬ, -1), ДЕНЬ) КОНЕЦ) КАК КонецИнтервала, ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток, ТоварыНаСкладахОстаткиИОбороты.ВНаличииОборот КАК ВНаличииОборот, ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад, ТоварыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ПериодРасчета, КОНЕЦПЕРИОДА(&ПериодРасчета, МЕСЯЦ), День, , ) КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ПериодРасчета, КОНЕЦПЕРИОДА(&ПериодРасчета, МЕСЯЦ), День, , ) КАК Товары ПО ТоварыНаСкладахОстаткиИОбороты.Период < Товары.Период И ТоварыНаСкладахОстаткиИОбороты.Склад = Товары.Склад И ТоварыНаСкладахОстаткиИОбороты.Номенклатура = Товары.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.Характеристика = Товары.Характеристика СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстаткиИОбороты.Период, ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток, ТоварыНаСкладахОстаткиИОбороты.ВНаличииОборот, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.Характеристика) КАК Остатки ПО (Остатки.НачалоИнтервала <= ТаблицаПериодов.Период) И (Остатки.КонецИнтервала >= ТаблицаПериодов.Период) СГРУППИРОВАТЬ ПО Остатки.Номенклатура, ТаблицаПериодов.Период, Остатки.ВНаличииНачальныйОстаток, Остатки.Склад, Остатки.Характеристика |
|||
7
Classic
21.11.11
✎
15:46
|
(0)
Делай запрос, который выдаст тебе все даты и потом цепляй к нему твои обороты. Запрос можешь найти в нете. Может написать сам. |
|||
8
andrewks
21.11.11
✎
21:13
|
(0) таблицу дат можно сформировать таким макаром:
select 0 as val into tt1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 ; select dateadd(&ДатаНачала,day,tab1.val+10*tab2.val+100*tab3.val) as dateval into days_tab from tt1 as tab1, tt1 as tab2, tt1 as tab3 where (dateadd(&ДатаНачала,day,tab1.val+10*tab2.val+100*tab3.val)<=&ДатаКонца) index by dateval ; //здесь уже твой запрос, используй соединение с ВТ dateval |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |