Имя: Пароль:
1C
1С v8
Формирование периодов
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) да, этот метод работает. спасибо большое.