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

Запрос который выводит все элементы внутри заданного периода

Автор MuI_I_Ika, 25 июн 2015, 12:49

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

MuI_I_Ika



Задачи с различной периодичностью и периодами всегда вызывают наибольший интерес и соответственно трудности.

В данной статье предлагается запрос, который выведет все элементы периода внутри заданного же периода.
То есть, например нам нужны все месяцы внутри года или все дни внутри месяца.
Работает для периодичности Год, Месяц, Квартал, День.

Для периодичности неделя не работает, поскольку не умеет 1С получать разность дат в неделях.

Для получения нужного результата нужно МЕСЯЦ в двух местах поменять на нужную периодичность.

ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, ВЗ_1.Поле1 + ВЗ_10.Поле1 * 10 + ВЗ_100.Поле1 * 100 + ВЗ_1000.Поле1 * 1000) Период
| ИЗ
| (ВЫБРАТЬ 0 КАК Поле1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК ВЗ_1
| ПОЛНОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ 0 КАК Поле1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК ВЗ_10
| ПО ИСТИНА ПОЛНОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ 0 КАК Поле1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК ВЗ_100
| ПО ИСТИНА ПОЛНОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ 0 КАК Поле1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК ВЗ_1000
| ПО ИСТИНА
| ГДЕ
| РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ) >= ВЗ_1.Поле1 + ВЗ_10.Поле1 * 10 + ВЗ_100.Поле1 * 100 + ВЗ_1000.Поле1 * 1000

Теги:

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

Рейтинг@Mail.ru

Поиск