Данная заметка больше как запись для себя, но вдруг кому то так же окажется полезной.
В сети нашел очень много примеров реализации данной выборки, но того что я искал не нашлось, да и работоспособность того что было найдено я не проверял. Все выборки в примерах были привязаны к каким то документам, а мне нужно было просто получать срез на каждый день в периоде.
ВЫБРАТЬ ЦИФРЫ.ПОЛЕ1 КАК ЦИФРА ПОМЕСТИТЬ ЦИФРЫ ИЗ (ВЫБРАТЬ 1 КАК ПОЛЕ1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7) КАК ЦИФРЫ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ (ЦИФРЫ3.ЦИФРА - 1) * 343 + (ЦИФРЫ2.ЦИФРА - 1) * 49 + (ЦИФРЫ.ЦИФРА - 1) * 7 + ЦИФРЫ1.ЦИФРА КАК ЧИСЛО ПОМЕСТИТЬ ЧИСЛА ИЗ ЦИФРЫ КАК ЦИФРЫ, ЦИФРЫ КАК ЦИФРЫ1, ЦИФРЫ КАК ЦИФРЫ2, ЦИФРЫ КАК ЦИФРЫ3 ; //////////////////////////////////////////////////////////////////////////////// // Тут получаем все даты из промежутка (данная часть запроса содрана из сети) //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&ДАТАНАЧАЛА, ДЕНЬ, ЧИСЛА.ЧИСЛО - 1) КАК ДАТА ПОМЕСТИТЬ ДАТЫ ИЗ ЧИСЛА КАК ЧИСЛА ГДЕ ДОБАВИТЬКДАТЕ(&ДАТАНАЧАЛА, ДЕНЬ, ЧИСЛА.ЧИСЛО - 1) <= &ДАТАОКОНЧАНИЯ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОНЕЦПЕРИОДА(ДАТЫ.ДАТА, ДЕНЬ) КАК ДАТА, ВЫБОР ДЕНЬНЕДЕЛИ(ДАТЫ.ДАТА) КОГДА 6 ТОГДА 0 КОГДА 7 ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК РАБОЧИЙДЕНЬ ПОМЕСТИТЬ ВТ_Даты ИЗ ДАТЫ КАК ДАТЫ ; //////////////////////////////////////////////////////////////////////////////// // Сюда можно передать любым образом сформированный перечень товаров //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Цены.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ_Товары ИЗ РегистрСведений.Цены КАК Цены СГРУППИРОВАТЬ ПО Цены.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// // Для получения таблицы каждый товар на каждую дату - сделаем произведение //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Даты.ДАТА КАК ДАТА, ВТ_Товары.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ_ТоварыИДаты ИЗ ВТ_Товары КАК ВТ_Товары, ВТ_Даты КАК ВТ_Даты ИНДЕКСИРОВАТЬ ПО Номенклатура ; //////////////////////////////////////////////////////////////////////////////// // Вычислим на какие даты устанавливались цены по товарам //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ТоварыИДаты.Номенклатура КАК Номенклатура, МАКСИМУМ(Цены.Цена) КАК Цена, КОНЕЦПЕРИОДА(Цены.Период, ДЕНЬ) КАК Дата ПОМЕСТИТЬ ВТ_ДатыНачалаДействия ИЗ ВТ_ТоварыИДаты КАК ВТ_ТоварыИДаты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены ПО ВТ_ТоварыИДаты.Номенклатура = Цены.Номенклатура И (Цены.Период <= ВТ_ТоварыИДаты.ДАТА) СГРУППИРОВАТЬ ПО ВТ_ТоварыИДаты.Номенклатура, Цены.Период ; //////////////////////////////////////////////////////////////////////////////// // Соединим ВТ_ТоварыИДаты и ВТ_ДатыНачалаДействия //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ТоварыИДаты.ДАТА КАК ДатаДни, ВТ_ТоварыИДаты.Номенклатура КАК Номенклатура, ВТ_ДатыНачалаДействия.Цена КАК Цена, ВТ_ДатыНачалаДействия.Дата КАК ДатаДействия ПОМЕСТИТЬ ВТ_СоедиениеПромежуточных ИЗ ВТ_ТоварыИДаты КАК ВТ_ТоварыИДаты ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДатыНачалаДействия КАК ВТ_ДатыНачалаДействия ПО ВТ_ТоварыИДаты.Номенклатура = ВТ_ДатыНачалаДействия.Номенклатура И ВТ_ТоварыИДаты.ДАТА >= ВТ_ДатыНачалаДействия.Дата ; //////////////////////////////////////////////////////////////////////////////// // Из таблицы ВТ_СоедиениеПромежуточных отберем самые последние // даты установки цен //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_1.ДатаДни КАК ДатаДни, ВТ_1.Номенклатура КАК Номенклатура, ВТ_1.Цена КАК Цена ИЗ ВТ_СоедиениеПромежуточных КАК ВТ_1 ГДЕ (ВТ_1.ДатаДействия) В (ВЫБРАТЬ ПЕРВЫЕ 1 ВТ_2.ДатаДействия ИЗ ВТ_СоедиениеПромежуточных КАК ВТ_2 ГДЕ ВТ_1.Номенклатура = ВТ_2.Номенклатура И ВТ_1.ДатаДни = ВТ_2.ДатаДни УПОРЯДОЧИТЬ ПО ВТ_2.ДатаДействия УБЫВ)