An79
5 - 19.02.2009 - 19:38
|
lalex23 сбасибо за подсказку насчет временных таблиц, ещё раз порылся и вот нашёл примерчик http://itland.ru/forum/index.php?showtopic=23687 Немного переделал его к своей задачи и о чудо всё заработало :)))) Вот конечный результат: КС = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя); ОписаниеТиповС = Новый ОписаниеТипов("Дата",,КС); ТЗ=Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Период",ОписаниеТиповС,"Дата",); ТекДата=ДатаНач; Пока ТекДата<>НачалоДня(ДатаКон) Цикл Стр=ТЗ.Добавить(); Стр.Период=ТекДата; ТекДата=ТекДата+86400; КонецЦикла; Стр=ТЗ.Добавить(); Стр.Период=ТекДата; МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ЗапросПоКалендарю = Новый Запрос; ЗапросПоКалендарю.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ЗапросПоКалендарю.УстановитьПараметр("ТЗ",ТЗ); ЗапросПоКалендарю.Текст= "ВЫБРАТЬ | ТЗ.Период КАК Период |ПОМЕСТИТЬ СписокДат |ИЗ | &ТЗ КАК ТЗ | |ИНДЕКСИРОВАТЬ ПО | Период"; ЗапросПоКалендарю.Выполнить(); ЗапросПоКалендарю.УстановитьПараметр("ВидТарифа","Население"); ЗапросПоКалендарю.УстановитьПараметр("ТипТарифа","Вода"); ЗапросПоКалендарю.Текст= "ВЫБРАТЬ | ДатыКалендаряИДатыПоследнихДвижений.ВидТарифа, | ДатыКалендаряИДатыПоследнихДвижений.ДатаКалендаря, | ДатыКалендаряИДатыПоследнихДвижений.ТипТарифа, | Тарифы.ЗначениеТарифа КАК ЗначениеТарифа |ИЗ | (ВЫБРАТЬ | СписокДат.Период КАК ДатаКалендаря, | МАКСИМУМ(Тарифы.Период) КАК Период, | Тарифы.ВидТарифа КАК ВидТарифа, | Тарифы.ТипТарифа КАК ТипТарифа | ИЗ | СписокДат КАК СписокДат | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Тарифы КАК Тарифы | ПО (Тарифы.Период <= СписокДат.Период) | ГДЕ | Тарифы.ВидТарифа = &ВидТарифа | И Тарифы.ТипТарифа = &ТипТарифа | | СГРУППИРОВАТЬ ПО | Тарифы.ВидТарифа, | СписокДат.Период, | Тарифы.ТипТарифа) КАК ДатыКалендаряИДатыПоследнихДвижений | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Тарифы КАК Тарифы | ПО ДатыКалендаряИДатыПоследнихДвижений.Период = Тарифы.Период | И ДатыКалендаряИДатыПоследнихДвижений.ВидТарифа = Тарифы.ВидТарифа | И ДатыКалендаряИДатыПоследнихДвижений.ТипТарифа = Тарифы.ТипТарифа"; Выборка = ЗапросПоКалендарю.Выполнить().Выбрать();
|