|
![]() |
#1 |
Талантливый разгвоздяй
|
Просто поделюсь опытом, может кому-нибудь пригодится.
Дано:
Задача:
Выполняется очееень долго (~4-9 часов) и не всегда завершается успешно. Оптимизировать времени не было, поэтому и хотфикс не выкладываю, а лишь делюсь опытом :-). |
|
|
За это сообщение автора поблагодарили: Pustik (3). |
![]() |
#2 |
NavAx
|
Цитата:
Или просто на MenuItem данного отчета вешаем другой ключ. Или в коде отчета делаем проверку на ключ и закрываем его, если нет доступа. Есть масса вариантов что бы потратить ~4-9 часов более разумно. |
|
|
За это сообщение автора поблагодарили: gl00mie (2), Kabardian (1). |
![]() |
#3 |
Талантливый разгвоздяй
|
Цитата:
Сообщение от raz
![]() А чего так долго? Открываем таблицу AccessRightList и удаляем там руками записи с именем MenuItem-а данного отчета (это если в компании принято давать права на объекты, а не на ключи доступа). Если права даны на ключи, то пишем job, который для групп с ключами, добавит запись с отключением доступа к отчету.
Или просто на MenuItem данного отчета вешаем другой ключ. Или в коде отчета делаем проверку на ключ и закрываем его, если нет доступа. Есть масса вариантов что бы потратить ~4-9 часов более разумно.
![]() Используя подход описанный на Axaptapedia, написал джоб для массового отключения прав доступа к menuitem, чуть позже выложу его здесь. |
|
![]() |
#4 |
Талантливый разгвоздяй
|
![]() Цитата:
Сообщение от Kabardian
![]() Спасибо за много разных и интересных вариантов :-), но были причины:
Использовал оттуда кусок кода для каждого сочетания группа + домен: X++: void disableMenuItems(SecurityKeySet _securitySet) { str name; AccessRecordType recordType; int idx; AccessType accessType; for (idx = 1; idx <= conLen(menuItems); idx++) { [name, recordType] = conpeek(menuItems, idx); accessType = _securitySet.menuItemAccess(name, recordType); if (accessType!= AccessType::NoAccess) { info(strFmt('%1:%2, %3', name, recordType, accessType)); _securitySet.menuItemAccess(name, recordType, AccessType::NoAccess); } } } Пока точная причина неизвестна, тем не менее решил предупредить, мало ли вдруг все-таки этот джоб виноват ![]() Как выясню причину, сообщу. |
|
|
За это сообщение автора поблагодарили: Logger (1). |
![]() |
#5 |
Участник
|
Цитата:
Сообщение от Kabardian
![]() Будьте предельно осторожны с джобом по ссылке! Последствия в моем случае:
Пока точная причина неизвестна, тем не менее решил предупредить, мало ли вдруг все-таки этот джоб виноват ![]() Как выясню причину, сообщу. X++: xAccessRightsList::saveSecurityRights(securitySet.pack(), localGroup.Id, domain); Также для большинства табличек прописывается NoAccess. Как правило приводит к тому что лукапы не работают. Если написать так X++: xAccessRightsList::saveSecurityRights(securitySet.packTouched(), localGroup.Id, domain); |
|
|
За это сообщение автора поблагодарили: S.Kuskov (5). |
![]() |
#6 |
Сам.AX
|
Цитата:
Поэтому не советую трогать AccessRightsList руками.
__________________
ѣ |
|
![]() |
#7 |
NavAx
|
|
|
![]() |
#8 |
Сам.AX
|
Ок, согласен.
Конкретно с отчетами этот вариант работает, но в общем случае, считаю, что не следует лезть в AccessRightsList.
__________________
ѣ |
|
Теги |
axapta, законченный пример, полезное, права доступа, программно |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|