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