|
Формирование периодов
| ☑ |
0
Oz11
27.02.12
✎
12:25
|
не могу выстроить алгоритм. помогите, пожалуйста. есть два даты (ДатаНачала и ДатаОкончания) и есть выборка запроса (выгрузил в таблицу значений) в которой грубо говоря одно числовое значение на каждый год. задача в том чтобы разбить промежуток ДатаНачала - ДатаОкончания между строками в таблице.
Например:
Таблица: 2010 - 24, 2011 - 25, 2012 - 30
ДатаНачала - 01.11.2010 ДатаОкончания - 26.02.2012
промежутки получатся: 01.11.2010 - конец2010 , начало2011 - конец2011, начало2012 - 26.02.2012.
нюанс в том что строк в таблице может быть как 2е, так и 3и и больше.
|
|
1
Wobland
27.02.12
✎
12:30
|
дат1=ДатаНачала;
дат2=КонецГода(ДатаНачала);
Пока дат2<=КонецГода(ДатаКонца)
дат1=?(НачалоГода(дат1)>ДатаНачала, НачалоГода(ДобавитьМесяц(дат1, 12)), ДатаНачала);
дат2=?(КонецГода(дат2)>ДатаКонца, ДатаКонца, КонецГода(ДобавитьМесяц(дат2, 12));
Конец
нигде не ошибся?
|
|
2
DrShad
27.02.12
✎
12:35
|
(0) а в запросе получить периоды?
|
|
3
DrShad
27.02.12
✎
12:39
|
+(2) потом ПредставлениеПериода()
|
|
4
Wobland
27.02.12
✎
12:42
|
ДатаНачала='20101026';
ДатаКонца='20120301';
дат1=ДатаНачала;
дат2=КонецГода(ДатаНачала);
Пока дат2<ДатаКонца Цикл
ОбработкаПрерыванияПользователя();
дат1=?(НачалоГода(дат1)>ДатаНачала, НачалоГода(дат1), ДатаНачала);
дат2=?(КонецГода(дат1)>ДатаКонца, ДатаКонца, КонецГода(дат1));
Сообщить(""+дат1+" "+дат2);
дат1=дат2+1;
КонецЦикла;
|
|
5
Oz11
27.02.12
✎
13:53
|
(4) да, этот метод работает. спасибо большое.
|
|