Имя: Пароль:
1C
1С v8
В запросе получить выборку месяцев за интервал
0 echo77
 
18.04.12
19:56
Кто-нибудь делал такое:
есть два параметра у запроса &НачалоПериода, &КонецПериода.
Нужно получить выборку из месяцев, расположенных между этими двумя датами.
Например:
&НачалоПериода = 05.12.2011
&КонецПериода  = 03.03.2012
Выборка должна выглядеть так:
01.12.2011
01.01.2012
01.02.2012
01.03.2012

пытался сделать через порождающий запрос, но получилось как-то не весело
1 andrewks
 
18.04.12
19:59
а в чём проблема? показывай код
2 Один С
 
18.04.12
20:03
соединить с производственным календарем - самое простое и расово неверное решение..
3 Лефмихалыч
 
18.04.12
20:22

"ВЫБРАТЬ
|   ДАтАВРЕМЯ(2012,1,1) Как Месяц
|ПОМЕСТИТЬ ВТ
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
|   ДАтАВРЕМЯ(2012,2,1) Как Месяц
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
|   ДАтАВРЕМЯ(2012,3,1) Как Месяц
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
|   ДАтАВРЕМЯ(2012,4,1) Как Месяц
|// ...
|;
|ВЫБРАТЬ
|   ВТ.Месяц
|ГДЕ Месяц > &НачалоПериода и Месяц <&КонецПерида
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ &НачалоПерида
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ &КонецПерида
|"


ну, и посорттировать
4 andrewks
 
18.04.12
20:28
(3) гы-гы. толсто
5 DimVad
 
18.04.12
21:00
Может, просто сделать, как делают в типовых расчетах ЗП, например ? Типа, сформировать ТЗ программно и засунуть в запрос ?

- Лелик, это не эстетично !
- Зато дешево, надежно и практично !
6 le_
 
18.04.12
21:01
(0)
ВЫБРАТЬ
   0 КАК Цифра
ПОМЕСТИТЬ Цифры

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра КАК Число
ПОМЕСТИТЬ Числа
ИЗ
   Цифры КАК Тысячи,
   Цифры КАК Сотни,
   Цифры КАК Десятки,
   Цифры КАК Единицы
ГДЕ
   Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ), МЕСЯЦ, Числа.Число) КАК Период
ИЗ
   Числа КАК Числа

УПОРЯДОЧИТЬ ПО
   Период
7 DimVad
 
18.04.12
21:05
(6) +100500 Вроде, ничего лучше уже и придумать невозможно...
8 echo77
 
20.04.12
06:25
(6) угу, спасибо. Как раз то что надо
9 echo77
 
20.04.12
06:27
(5) Программно засунуть в запрос у меня не получится, т.к. пишу отчет на СКД в котором в запросе полное соединение