Срез последних на каждую дату в запросе

Печать (Ctrl+P)

Ответ на вопрос получения среза последних на каждую дату . Суть задачи в том, что нужно получить таблицу цен номенклатуры на начало каждой недели в течении заданного периода

Функция ПолучитьТаблицуЦенНоменклатуры(Номенклатура,НачПериода,КонПериода) Экспорт
 // Сначала получаем таблицу даты на начало недели с  НачПериода  по   КонПериода  

ТаблицаПериодов = Новый ТаблицаЗначений;
 ТаблицаПериодов.Колонки.Добавить("Период",Новый ОписаниеТипов("Дата"));
 НачалоПериода = НачалоНедели(НачПериода);    
 Пока НачалоПериода< КонПериода Цикл
 Нов = ТаблицаПериодов.Добавить(); 
Нов.Период = НачалоПериода; 
НачалоПериода = НачалоНедели(КонецНедели(НачалоПериода)+60);
 КонецЦикла;
 
ТекстЗапроса =  "ВЫБРАТЬ
 |   ТабДаты.Период КАК Период 
 |ПОМЕСТИТЬ ВрТабДаты 
 |ИЗ
 |   &ТабДаты КАК ТабДаты 
 |; 
 |ВЫБРАТЬ 
 |   _Параметры.Период КАК Период,
 |   _Параметры.Цена КАК цена
 |ПОМЕСТИТЬ ВрТз 
|ИЗ 
|   РегистрСведений.УстановкаЦен КАК _Параметры
|ГДЕ 
|   _Параметры.Магазин = &Магазин 
|;
|ВЫБРАТЬ 
|   ВрТабДаты.Период КАК Период,
|   ВрТз.БонусПроцент КАК  СписаниеПроцент 
|ИЗ  
|   ВрТз КАК ВрТз 
|   ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВрТабДаты КАК ВрТабДаты 
|   ПО ВрТз.Период <= ВрТабДаты.Период
|ГДЕ   
|   ВрТз.Период В 
|           (ВЫБРАТЬ ПЕРВЫЕ 1 
|               ВрПериод.Период 
|           ИЗ     
|               ВрТз КАК  ВрПериод     
|           ГДЕ   
|                ВрПериод.Период <= ВрТабДаты.Период  
| УПОРЯДОЧИТЬ ПО  
|   КВ.Период УБЫВ)"; 

Запрос = Новый Запрос(ТекстЗапроса); 
Запрос.УстановитьПараметр("ТабДаты", ТаблицаПериодов); Запрос.УстановитьПараметр("Магазин",  Магазин );
 Таблица  = Запрос.Выполнить().Выгрузить();
 Возврат  Таблица;
 КонецФункции  
Previous Article
Next Article

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.