![]() |
|
Выгрузка в 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) угу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |