Показать сообщение отдельно
Старый 16.04.2013, 15:35   #2  
A.Nekrasov is offline
A.Nekrasov
Участник
 
4 / 10 (1) +
Регистрация: 13.11.2012
В итоге вышел из ситуации изменив подход.

Если в вкратце и глобально, то теряемые аргументы в дальнейшем нужны были для формирования контекстных данных уведомления (EventInBoxData). Суть такова: в контекстных данных сохраняются параметры запуска формы явившейся источником события для которого генерируется оповещение (уведомление). Но стандартно предполагалось, что эта самая форма еще активна на момент генерации уведомления и формирования контекстных данных.

Мне же понадобилось генерировать оповещение для уже закрытой формы. А для этого пришлось динамически в коде открыть форму и сохранить параметры запуска, а затем закрыть форму. Но параметры запуска сохранялись неявно как аргументы formrun.

Изменение подхода - это явное сохранение аргументов в переменную с типом Args. Я добавил строку:
X++:
wfDocApproveEngine.parmParentObjectRunArgs(formRunDoc.args());
в метод где сохранял саму форму. И соответственно parm-метод и его вызов на чтение тоже добавил как альтернативу:
X++:
// _EventContextInformation.parmPackedArgs(callerObjectRun.args());
        if(callerObjectRun.args())
        {
            _EventContextInformation.parmPackedArgs(callerObjectRun.args());
        }
        else 
        {
            _EventContextInformation.parmPackedArgs(wfDocApproveEngine.parmParentObjectRunArgs());
        }
to Xardas: спасибо за подсказку, немного поразмыслив я пришел к выводу что истиная причина ситуации скорее всего именно указанная Вами. Т.е. formRunDoc.close() все-таки влияет, вот только как бы с некоторой задержкой, как будто не сразу закрылась форма.

Все равно всем спасибо