Добрый день, коллеги!
Ситуация: во время сохранения проекта нужно делать нечто с задачами проекта.
Пишу макрос, привязываю все к событию Project_BeforeSave. Если сначала проект сохраняется, потом сразу же закрывается - все замечательно, макрос отработал, никаких ошибок. Но! Если проект закрывается, Project спрашивает - сохранить ли его? Отвечаем Да, и вот тут-то возникает проблема, потому что активируется макрос, он пытается достучаться до проекта и его задач, и не может! Впечатление такое, что для Project этот проект уже считается закрытым, то есть несуществующим, и макросу просто не с чем работать.
Попытка привязываться к событиям объекта Application тоже ни к чему не привела.
Может быть у кого-нибудь есть идеи, как это обойти? Кто-нибудь сталкивался с подобным?
Спасибо!
Максим.
RE: И снова вопрос по макросам. Project_BeforeSave
Максим, добрый день!
У меня такого не наблюдается почему-то..
Вадим
RE: RE: И снова вопрос по макросам. Project_BeforeSave
Добрый день, Вадим!
Может быть у Вас не наблюдается после установки СП2?
В списке багов, который лечит этот СП, есть описание моей проблемы. Ситуация та же, код ошибки тот же, правда, описание ошибки другое :)
Максим.
RE: undefined
Целесообразней поставить обработку на Project_Open,
дабы у пользователей не было много разочарований...
RE: RE: undefined
Для моей задачи это, увы, неприемлемо, потому что данные должны формироваться и сохраняться именно при сохранении проекта. То есть за один сеанс работы с проектом это может происходить многократно - при каждом сохранении. В противном случае для этого пришлось бы каждый раз закрывать проект и открывать его вновь... :(
RE: undefined
Посмотрите как построен макрос [ссылка...]
Я честно говоря подумал, что вы пытаетесь привязать именно его...
RE: RE: undefined
Посмотрел, спасибо, но... не вижу связи между моей задачей и макросом в этой ссылке....
Для меня, собственно, важен не сам макрос, а то, что он связан с событием Project_BeforeSave и так же то, как ему себя правильно вести при закрытии проекта с последующим сохранением.
RE: И снова вопрос по макросам. Project_BeforeSave
Максим,
а что если сделать еще вариант - отлов проекта Before_Close и там выполнение операции. А в Вашем макросе поставить on error resume next?
Вадим
_BeforeSave
Добрый День !
У меня была такая ситуация раза два на тестовой виртуальной машине. Но потом исчезла и, к сожалению, я не помню, что сделал. То ли февральское обновление установил, то ли что то еще... На промыщленных конфигурациях этого не наблюдалось, хотя почти везде используется пересчет при сохранении.
Логика здесь четкая, - сначала сохранение потом закрытие. Не могут "отвалиться" объекты до завершения сохранения.
Максим, если после СП2 и апрельского апдейта ситуация повторится - напишите. Постараемся разобраться.
С уважением,
Вадим Геря, PMP
RE: RE: RE: undefined
Максим, добрый день!
Вопрос оф-топик, но тем не менее: не пробовали наш business project? Было бы интересно Ваше мнение.
с уважением,
Вадим
RE: RE: RE: RE: undefined
Вадим, доброе утро!
Увы, увы... не пробовал... текучка, работа, текучка, просто не хватает времени... :(( поставил себе как задачу на будущее :))
С уважением, Максим.
RE: _BeforeSave
Вадим, добрый день!
Вот наконец дошли руки до дальнейших экспериментов.
Развернули новый Project Server, накатили СП2 (правда, без апрельского апдейта), все красиво, но ошибка осталась.
Я для эксперимента написал вот такой вот код:
Private Sub Project_BeforeSave(ByVal pj As Project)
[ссылка...]
End Sub
Public Sub Test()
MsgBox ([ссылка...])
End Sub
И он валится :) То есть если была попытка закрыть проект, доступа к ActiveProject уже нет. Может быть я что-то принципиально не так делаю, и надо было идти не от ActiveProject, а как-то по-другому?
Спасибо!
Признаю, есть такое поведение :)
Действительно!
При закрытии проекта, находящегося на сервере, и выборе в появляющемся "Серверном" окне опции "Сохранить" (ну и вернуть/не вернуть) - объект ActiveProject или pj становиться недоступен в пределах события Project_BeforeSave.
Придеться обходить так:
Private Sub Project_BeforeClose(ByVal pj As Project)
[ссылка...]
End Sub
Private Sub Project_BeforeSave(ByVal pj As Project)
On Error Resume Next
[ссылка...]
End Sub
Public Sub Test()
MsgBox ([ссылка...])
End Sub
_______________
Или лучше,
Private Sub Project_BeforeClose(ByVal pj As Project)
Call Test(pj)
End Sub
Private Sub Project_BeforeSave(ByVal pj As Project)
On Error Resume Next
Call Test(pj)
End Sub
Public Sub Test(pj As Project)
MsgBox ([ссылка...])
End Sub
____________________________
С уважением,
Успехов :)
Вадим Геря, РМР
RE: Признаю, есть такое поведение :)
Добрый день, Вадим!
Спасибо за ответ и за совет!
Хотелось убедиться, что это не у одного меня Project так себя ведет :))
Касательного Вашего метода - теперь мне придется еще немного постараться и сделать так, чтобы при закрытии проекта без сохранения макрос не отрабатывал. Но это уже мелочи :)
Еще раз спасибо.
С уважением, Максим.
|