Имя: Пароль:
1C
1С v8
Научите работать с периодичностью
0 picom
 
24.01.12
09:09
Имеем дату старта
10,01,2012
.
имеем периодичность повторения операции
каждый понедельник
и каждый четверг
.
Как получить приближающиеся даты выполнения операции?
.
Повторения могут быть как еженедельные, итак и каждые 2...n недель
1 Ненавижу 1С
 
гуру
24.01.12
09:21
огласи задачу полностью
2 MatrosoV AleXXXand_R
 
24.01.12
09:23
Шо хочет сделать ТС?
Извечный вопрос
3 0xFFFFFF
 
24.01.12
09:39
(0) регламентные задания, расписание регламентного задания?
4 picom
 
24.01.12
10:25
(3) эх если бы
хочу расписание автобусов в 1с сделать
например 35 автобус ходит во ВТ один раз в 3 недели (четность не катит)
5 DrShad
 
24.01.12
10:29
сделай как в ЗУПе графики смен
6 Axel2009
 
24.01.12
10:31
(4) ну до 31го еще есть время =)
7 picom
 
24.01.12
10:44
(6) нет времени (
(5) не представляю как это
8 Azverin
 
24.01.12
10:48
(5) гуд айдийа!
9 picom
 
24.01.12
10:50
(8) (5) расскажите как там, у меня нет ни опыта ни зуп,а (
10 Azverin
 
24.01.12
10:52
(9) я нет, может Роман сможет)
11 picom
 
24.01.12
10:53
(10) Посмотрел видео, там вообще засада с графиками, исключениями и прочей ерундой
Мегаусложнения какие-то для моей задачи
12 Axel2009
 
24.01.12
11:10
да убери исключения и все праздники и будет работать. делов то
13 picom
 
24.01.12
12:59
Сделал


       Если Стр.Периодичность > 1 Тогда //Сложный запуск
               //попробуем выснить на когда
               //посчитаем на 30 дней вперед
               ДатаЗапускаСхемы = НачалоНедели(Стр.ДатаСтарта) ; // ПН и на этой неделе запускались
               
               
               ДатаСтарта = НачалоДня(ТекущаяДата());
               Для it = 0 По СколькоДней Цикл
                   
                   Если Сред(Стр.График,ДеньНедели(ДатаСтарта),1) = "1" Тогда
                       
                       //Сколько недель прошло
                       СколькоПрошлоНедель = ПолучитьРазностьДат(ДатаЗапускаСхемы,НачалоНедели(ДатаСтарта))/7;
                       //Сообщить(СколькоПрошлоНедель);
                       
                       Геометрия = 0 ;
                       Пока Геометрия < 1000 Цикл
                       //КонецЦикла;
                       //Для Геометрия = 0 По 1000 Цикл
                           
                           Геометрия = Геометрия + Стр.Периодичность;
                           Если Геометрия = СколькоПрошлоНедель Тогда
                               Если Сред(Стр.График,ДеньНедели(ДатаСтарта),1) = "1" Тогда
                                   РеалСтр = РеальныеРейсы.Добавить();
                                   РеалСтр.ДатаСтарта = Стр.ДатаСтарта;
                                   РеалСтр.Периодичность = Стр.Периодичность;
                                   РеалСтр.График = Стр.График;
                                   РеалСтр.ДатаРейса = ДатаСтарта;                
                                   РеалСтр.Описание = "Периодический рейс";                
                               КонецЕсли;
                               
                               Прервать;    
                           КонецЕсли;
                           
                           
                       КонецЦикла;
                       
                   КонецЕсли;
                   ДатаСтарта = ТекущаяДата() + it * 86400;;
                   
                   
               КонецЦикла;            
               
               
               
       КонецЕсли;