Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 07:44

Как в запросе получить цены номенклатуры на каждую дату периода?

Автор MuI_I_Ika, 01 дек 2013, 18:52

0 Пользователей и 1 гость просматривают эту тему.

MuI_I_Ika


Как в запросе получить цены номенклатуры на каждую дату периода?


Задача часто возникает при выведении различных отчетов, где нужно отследить динамику изменения какого-либо показателя.


Так же получение чего либо по датам периода актуально при различных периодических начислениях будть то аренда, зарплата, налоги, кредиты или что-то другое.


Рассмотрим задачу на примере периодического регистра сведений цены номенклатуры.
Наш регистр имеет одно единственное измерение - Номенклатура.
Ресурс у данного регистра - Цена.


Запрос будет выглядеть следующим образом:


"ВЫБРАТЬ
| 1 КАК Единица
|ПОМЕСТИТЬ Единицы
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 3
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 4
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 5
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 6
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 7
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 8
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 9
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 10
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, 1000 * (Тысячи.Единица - 1) + 100 * (Сотни.Единица - 1) + 10 * (Десятки.Единица - 1) + Единицы.Единица - 1), ДЕНЬ) КАК ТекущаяДата
|ПОМЕСТИТЬ ДатыПериода
|ИЗ
| Единицы КАК Единицы,
| Единицы КАК Десятки,
| Единицы КАК Сотни,
| Единицы КАК Тысячи
|ГДЕ
| ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, 1000 * (Тысячи.Единица - 1) + 100 * (Сотни.Единица - 1) + 10 * (Десятки.Единица - 1) + Единицы.Единица - 1) <= &ДатаОкончания
|;
|
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| СтоимостьНоменклатурыСрезПоследних.Номенклатура,
| СтоимостьНоменклатурыСрезПоследних.Период
|ПОМЕСТИТЬ ПериодыСтоимости
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК СтоимостьНоменклатурыСрезПоследних
|ГДЕ
| СтоимостьНоменклатурыСрезПоследних.Активность
| И СтоимостьНоменклатурыСрезПоследних.Период >= НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СтоимостьНоменклатурыСрезПоследних.Номенклатура,
| СтоимостьНоменклатурыСрезПоследних.Период
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ),
| Активность) КАК СтоимостьНоменклатурыСрезПоследних
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПериодыСтоимости.Номенклатура,
| МАКСИМУМ(ПериодыСтоимости.Период) КАК Период,
| ДатыПериода.ТекущаяДата
|ПОМЕСТИТЬ ДатыСтоимости
|ИЗ
| ДатыПериода КАК ДатыПериода
| ЛЕВОЕ СОЕДИНЕНИЕ ПериодыСтоимости КАК ПериодыСтоимости
| ПО ДатыПериода.ТекущаяДата >= ПериодыСтоимости.Период
|
|СГРУППИРОВАТЬ ПО
| ПериодыСтоимости.Номенклатура,
| ДатыПериода.ТекущаяДата
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДатыСтоимости.ТекущаяДата,
| СтоимостьНоменклатуры.Номенклатура,
| СтоимостьНоменклатуры.Цена
|ИЗ
| ДатыСтоимости КАК ДатыСтоимости
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК СтоимостьНоменклатуры
| ПО ДатыСтоимости.Номенклатура = СтоимостьНоменклатуры.Номенклатура
| И ДатыСтоимости.Период = СтоимостьНоменклатуры.Период
|УПОРЯДОЧИТЬ ПО ТекущаяДата
|; "

Похожие темы (4)

Рейтинг@Mail.ru

Поиск