Имя: Пароль:
1C
1С v8
Выгрузка в MS Project через COM, выходные дни
0 xraf
 
12.09.14
09:55
Доброго времени суток!
Может кто-нибудь сталкивался с подобной задачей.
За основу взять код http://infostart.ru/public/87282/
Все вроде бы прозрачно :

Если ЗначениеЗаполнено(ДатаНачалаПлан) Тогда
    NewTask.Start = ДатаНачалаПлан + Hour * 9;
КонецЕсли;
Если ЗначениеЗаполнено(ДатаОкончанияПлан) Тогда
    NewTask.Finish = ДатаОкончанияПлан + Hour * 18;
КонецЕсли;

Однако, если ДатаНачалаПлан приходится на субботу, то Project сам автоматом переносит ее на понедельник.
1 shuhard
 
12.09.14
10:04
(0) в прожекте есть календарь, сделай выходные рабочими
2 butterbean
 
12.09.14
10:04
делай новый календарь, и потом пиши ТвойПроект.Calendar="ТвойКалендарь"
можно стандартный "24 часа" использовать
3 butterbean
 
12.09.14
10:05
(2)+ или меняй стандартный
4 xraf
 
12.09.14
10:10
(1)
Сделал...
Все равно что-то съехало.
Если смотреть в отладчике
в момент когда присваивается  
NewTask.Start = ДатаНачалаПлан + Hour * 9;

Там ДатаНачалаПлан  еще суббота, а NewTask.Start  уже сам становится понедельником
5 xraf
 
12.09.14
10:10
(2) попробую 24 часа
6 xraf
 
12.09.14
10:17
(2)

Что-то вываливается с ошибкой :

Ошибка при установке значения атрибута контекста (Calendar)
    MSProject.ActiveProject.Calendar="24 часа";
по причине:
Типы не совпадают (0)
7 shuhard
 
12.09.14
10:21
(6)[MSProject.ActiveProject.Calendar="24 часа"; ]
вряд ли в (2) имелось в виду прямое присвоение
8 xraf
 
12.09.14
10:22
(7) как тогда присвоить, подскажите )
9 shuhard
 
12.09.14
10:24
(8) надо обойти семейство календарей, найти нужный по названию и присвоить, MSDN тебе в помощь
10 shuhard
 
12.09.14
10:26
(9) +1
вероятно нужно пробежать итератором по ActiveProject.BaseCalendars(3).Name

как ни будь так
Для Каждого Ст=0 ПО ActiveProject.BaseCalendars.Count() Цикл
11 xraf
 
12.09.14
10:35
(10) Спасибо!
Буду курить
12 shuhard
 
12.09.14
10:47
(11) не факт, что сработает, но форумов по VBA в достатке и в нем есть отладчик
13 xraf
 
12.09.14
10:49
Для Каждого СтрКалендарь Из  MSProject.ActiveProject.BaseCalendars Цикл
        
        НаименованиеКалендаря = СокрЛП(СтрКалендарь.Name);
        Сообщить(НаименованиеКалендаря);
        
    КонецЦикла;
14 xraf
 
12.09.14
10:49
(13) выдает имена календарей ))
15 shuhard
 
12.09.14
11:02
(14) СтрКалендарь.Name - выдает имена календарей ))
ну да
16 xraf
 
12.09.14
11:02
В итоге :
НужныйКалендарь = Неопределено;
    Для Каждого СтрКалендарь Из  MSProject.ActiveProject.BaseCalendars Цикл
        
        НаименованиеКалендаря = СокрЛП(СтрКалендарь.Name);
        Сообщить(НаименованиеКалендаря);
        Если НаименованиеКалендаря = "24 часа" Тогда
            НужныйКалендарь = СтрКалендарь;    
        КонецЕсли;
    КонецЦикла;
    
    Если НужныйКалендарь <> Неопределено Тогда
        MSProject.ActiveProject.Calendar=НужныйКалендарь;
    КонецЕсли;
17 xraf
 
12.09.14
11:03
(16) и все равно та же история, сдвинулось на понедельник
18 shuhard
 
12.09.14
11:04
(17) пора тебе открыть для себя другие сайты =)
19 xraf
 
12.09.14
11:08
(18) типа пикабу? )
20 shuhard
 
12.09.14
11:21
(19) угу
Основная теорема систематики: Новые системы плодят новые проблемы.