Проблема не в форме, на которой бегут гаджики.
Проблема - в форме, которая активируется после закрытия формы прогресса (а в методе 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 Если на форме нет датасорсов, то преключение компаний при ее активации не произойдет