![]() |
#1 |
Участник
|
Как принудительно обновить Content pane ?
Всем привет.
Обнаружил неприятную багу в Аксапте. При смене компании не обновляется содержимое content pane. Как следствие, если пользователь залогинился в одной компании, в которой у него урезан доступ к определенным пунктам меню, а затем переключился к другой компании, то пункты меню не появляются ![]() При этом sidax и старое трешечное меню X++: TreeNode TreeNode; ; TreeNode = TreeNode::findNode(@"\Menus\MainMenu"); if (TreeNode) { TreeNode.AOTrun(); } Т.е. права доступа настроены корректно. Как бы мне явно сбросить content pane. P.S. Ax2009 build 1500.4570 (RU7) |
|
![]() |
#2 |
Участник
|
Если сразу логинимся во 2-й компании то все пункты меню видны. Но при переключении в 1-ю - не пропадают.
![]() |
|
![]() |
#3 |
Участник
|
может вот это поможет
X++: static void HideShowContentFrame(boolean _hide = false) { #WinApi HWND contentPane = WinApi::findWindowEx( WinAPI::findWindowEx(infolog.hWnd(), 0, 'MDIClient', ''), 0, 'ContentFrame', ''); if (contentPane) if (_hide) WinApi::ShowWindow(contentPane, #SW_HIDE); else WinApi::ShowWindow(contentPane, #SW_SHOW); }
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
|
За это сообщение автора поблагодарили: Logger (2), IKA (1). |
![]() |
#4 |
Участник
|
Неужели никто не сталкивался с такими проблемами ?
По сути - права доступа не работают при переходе между компаниями. Либо я чего-то не понимаю, либо глюк проявляется при каких-то особых условиях. |
|
![]() |
#5 |
Участник
|
Может чего не понимаю... но разве права не общие для всех компаний?
Такие таблички как UserGroupInfo, UserInfo, UserGroupList, SysSecurityFormTable, SysSecurityFormControlTable, AccessRigthList не имеют dataAreaId... или у вас разные домены DOMAINID? |
|
![]() |
#6 |
Участник
|
Права как выяснилось работают корректно.
Это системное окошко contentPane некорректно отрисовывается. При этом если попытаться ткнуть в пункт меню который остался отрисованным после переключения в компанию где он запрещен, то Аксапта выдает Messagebox : "Недостаточно прав доступа" т.е. права все же работают. P.S. у нас включены домены и компании сидят в разных доменах. |
|
![]() |
#7 |
Участник
|
У нас такого чуда нет...
Скрытие и отображение рабочего пространства предложенного pustik явно не покатит... Можно посмотреть в сторону: xInfo.createWorkspaceWindow Method Opens a new workspace window. For example, this enables you to open different sets of application objects in different windows, or to work with two different sets of company accounts. ... и привязать энту штуку к смене компании как вариант или забить... права же работают. |
|
![]() |
#8 |
Участник
|
Да пробовал уже так.
Стандартное окошко выбора компании (form sysSelectDataarea) позволяет открыть новую область с выбранной компанией - не помогает. Он походу при старте аксапты где-то кеширует внешний вид окна и дальше только его и показывает. |
|
![]() |
#9 |
Участник
|
А почистить кэш не пробовали до того как...
void workspaceWindowDestroyed(int _hWnd) { ... // This method is called when a workspace window is destroyed // here workspace related resources can be cleaned up if (workspaceCacheMap && workspaceCacheMap.exists(_hWnd)) { // clean up the workspace cache object. This is created in the // workspaceCache() function. workspaceCacheMap.remove(_hWnd); } |
|
![]() |
#10 |
Участник
|
Нет.
Можно попробовать А почему вы думаете что это может быть связано ? |
|
![]() |
#11 |
Участник
|
может быть и потому что
Цитата:
![]()
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 27.06.2013 в 19:04. |
|
Теги |
content pane |
|
|