|
|
#26 |
|
Участник
|
Попробовал сделать более универсальную защиту от переключения компаний.
Для этого делаем такие изменения : 1. Заводим где-нибудь статический метод X++: // pkoz 24.10.2009 static //client server boolean GRD_changeCompanyForbidden(boolean _parm = false, boolean _flush = false) { // SysGlobalCache SysGlobalCache = infolog.globalCache(); SysGlobalCache SysGlobalCache = appl.globalCache(); boolean ret; int retI; ; retI = SysGlobalCache.get(funcName(), 0, 0); if (!prmIsDefault(_parm)) // пишем { if (_parm) { retI++; } else { retI--; } SysGlobalCache.set(funcName(), 0, retI); } if (retI < 0 || _flush) { SysGlobalCache.set(funcName(), 0, 0); return false; } if(retI > 0) return true; return false; } 2. Создаем класс для сброса настроек состоящий из одного метода main X++: // GRD_changeCompanyFix_pkoz // pkoz 24.10.2009 static void main(args _args) { ; SysSetupFormRun::GRD_changeCompanyForbidden(false, true); } 3. Вносим изменение в метод \Classes\Application\setDefaultCompany X++: SysGlobalCache cache = appl.globalCache();
container GRD_stack = xSession::xppCallStack(); // pkoz 24.10.2009
if (//GRD_isPkoz() &&
(
conPeek(GRD_Stack, 3) == @"(C) \Classes\FormRun\activate" // в трехзвенке
|| conPeek(GRD_Stack, 3) == @"\Classes\FormRun\activate" // в двухзвенке
)
&& SysSetupFormRun::GRD_changeCompanyForbidden()
)
{
warning("Запрещено переключение между компаниями. Для исправления выберите Меню Сервис - Разрешить смену компаний");
return false;
}
ret = super(_selectableDataArea);X++: SysSetupFormRun::GRD_changeCompanyForbidden(true);X++: SysSetupFormRun::GRD_changeCompanyForbidden(false);Пункт 2 нужен если обработка прервалась и отмена запрета переключения не была вызвана (например по ошибке). |
|
|
| Теги |
| progress bar, sysoperationprogress, баг, бегунок, законченный пример, полезное, смена компании |
|
|
|