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