Показать сообщение отдельно
Старый 23.04.2007, 13:16   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Проблема не в форме, на которой бегут гаджики.
Проблема - в форме, которая активируется после закрытия формы прогресса (а в методе SalesFormLetter.progressKill() как раз происходит удаление формы гаджика).
Если на ней есть хоть один датасоурс и установлено свойство SetCompany=true, то при ее активации произойдет вызов Application.setDefaultCompany().

Помимо отказа от использования метода SysOperationProgress.reset() (который в конце концов вызывается в progressKill()), можно так же модифицировать его таким образом:
X++:
public void reset()
{
    ...
    // D.Andy -->
    DataAreaId  curDataArea = curExt();
    int         line;
    // D.Andy <--
    ;
    ...
    if (id == ownerId)
    // D.Andy -->
    {
        line = infolog.line();
    // D.Andy <--
        infolog.operationProgressClear();
    // D.Andy -->
        if (curDataArea != curExt())
        {
            appl.setDefaultCompany(curDataArea, false);
            infolog.cut(line, infolog.line());
        }
    }
    // D.Andy <--
}
Т.е. если произошло переключение компании в процессе удаления формы прогресса - то восстановить ее обратно (компанию).
После изменения необходимо будет сделать инкрементную компиляцию

PS По поводу формы SysOperationProgress.
А вы уверены, что она используется при работе класса SysOperationProgress?
Во всяком случае, если посмотреть метод setupForm() класса SysOperationProgressForm, то видно, что форма там создается на лету, без использования каких-либо объектов AOT.
PPS Если на форме нет датасорсов, то преключение компаний при ее активации не произойдет
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: fed (5), glibs (7), belugin (5), sukhanchik (5), Logger (10).