|
![]() |
#1 |
Участник
|
Проблема не в форме, на которой бегут гаджики.
Проблема - в форме, которая активируется после закрытия формы прогресса (а в методе 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). |
![]() |
#2 |
SAP
|
Цитата:
Если на ней есть хоть один датасоурс и установлено свойство SetCompany=true, то при ее активации произойдет вызов Application.setDefaultCompany().
|
|
![]() |
#3 |
Administrator
|
Дааа... Как говорится век живи - век учись...
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#4 |
Участник
|
AndyD, спасибо вам аз еще одно содержательное сообщение. Я например долго время считал что проблема именно в форме прогресс бара.
Цитата:
Например у нас есть форма salesTable на ней по кнопке запускается обработка в компании 1, которая делает changeCompany в компанию 2 и печатает там несколько документов. В момент печати первого документа отображается форма печати (какая-то из двух SysPrintPrinterProgress, SysPrintProgress) и после её закрытия фокус попадает в на форму salesTable (вызываются методы SysSetupFormRun.activate() и salesTable.activate() ) происходит переключение в исходную компанию 1 и последующие документы уже печатаются неправильно. Т.е. надо исправлять не только форму прогресс бара, а вообще любую форму которая может быть вызвана, например изменив SysSetupFormRun. Вообще, мне кажется что данный баг определяется ошибкой в управлении окнами в аксапте. Пока не отработала функция вызванная из формы, не нужно передавать фокус в вызывающую форму, и вообще ни в какую форму. Т.е. не надо дергать SysSetupFormRun.activate() пока функция вызванная кнопкой не отработала до конца. Либо ядро должно как-то связывать контекст выполнения кода и текущую компанию, так что если даже фокус перешел на вызвавшую форму (salesTable в моем примере) и произошло переключение в компанию 1, то при передаче управления обратно в функцию вызванную с формы, нужно переключать и текущую компанию обратно в компанию 2. P.S. Ax 3.0 KR3 |
|
Теги |
progress bar, sysoperationprogress, баг, бегунок, законченный пример, полезное, смена компании |
|
|