AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2011, 17:33   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,497 / 1096 (39) ++++++++
Регистрация: 22.07.2003
Адрес: МО
2 gloomie тоже пришлось нарисовать job, видимо придется прикрутить его к сохранению прав у группы.

X++:
static void edd_SetUpUserGroupSecurity(Args _args)
{
    UserGroupId         UserGroupId = '';
    AccessRightsList    AccessRightsList;
    AccessRightsList    AccessRightsList2Ins;

    DictField           DictField;
    DictTable           DictTable;
    DictType            DictType;
    DictRelation        DictRelation;

    FieldId             FieldId;
    ExtendedTypeId      ExtendedTypeId;
    TableId             TableId;
    int                 relationNum;
    ;
    while select AccessRightsList
        where AccessRightsList.groupId    == UserGroupId
           && AccessRightsList.recordType == AccessRecordType::Table
           && AccessRightsList.parentId   == 0
           && AccessRightsList.accessType >= AccessType::Edit
    {
        DictTable = new DictTable(AccessRightsList.id);

        if (DictTable)
        {
            DictRelation = new DictRelation(DictTable.id());

            for (relationNum = 1; relationNum <= DictTable.relationCnt(); relationNum++)
            {
                TableId = DictRelation.loadNameRelation(DictTable.relation(relationNum));

                if (TableId)
                {
                    select firstonly AccessRightsList2Ins
                        where AccessRightsList2Ins.groupId    == AccessRightsList.groupId
                           && AccessRightsList2Ins.domainId   == AccessRightsList.domainId
                           && AccessRightsList2Ins.recordType == AccessRecordType::Table
                           && AccessRightsList2Ins.parentId   == 0
                           && AccessRightsList2Ins.accessType >= AccessType::View
                           && AccessRightsList2Ins.id         == TableId;

                    if (!AccessRightsList2Ins)
                    {
                        AccessRightsList2Ins.groupId            = AccessRightsList.groupId;
                        AccessRightsList2Ins.domainId           = AccessRightsList.domainId;
                        AccessRightsList2Ins.recordType         = AccessRecordType::Table;
                        AccessRightsList2Ins.parentId           = 0;
                        AccessRightsList2Ins.accessType         = AccessType::View;
                        AccessRightsList2Ins.accessTypeFkeyUse  = AccessType::NoAccess;
                        AccessRightsList2Ins.id                 = TableId;
                        AccessRightsList2Ins.insert();

                        info(strfmt("%1", tableId2Name(TableId)));
                    }
                }
            }

            FieldId = DictTable.fieldNext(0);

            while (FieldId && ! isSysId(FieldId))
            {
                DictField = new DictField(DictTable.id(), FieldId);

                if (DictField && DictField.rights() >= AccessType::Edit)
                {
                    ExtendedTypeId = DictField.typeId();

                    if (ExtendedTypeId)
                    {
                        DictType = new DictType(ExtendedTypeId);

                        if (DictType)
                        {
                            DictRelation = DictType.relationObject();

                            if (DictRelation)
                            {
                                TableId = DictRelation.table();

                                if (TableId)
                                {
                                    select firstonly AccessRightsList2Ins
                                        where AccessRightsList2Ins.groupId    == AccessRightsList.groupId
                                           && AccessRightsList2Ins.domainId   == AccessRightsList.domainId
                                           && AccessRightsList2Ins.recordType == AccessRecordType::Table
                                           && AccessRightsList2Ins.parentId   == 0
                                           && AccessRightsList2Ins.accessType >= AccessType::View
                                           && AccessRightsList2Ins.id         == TableId;

                                    if (!AccessRightsList2Ins)
                                    {
                                        AccessRightsList2Ins.groupId            = AccessRightsList.groupId;
                                        AccessRightsList2Ins.domainId           = AccessRightsList.domainId;
                                        AccessRightsList2Ins.recordType         = AccessRecordType::Table;
                                        AccessRightsList2Ins.parentId           = 0;
                                        AccessRightsList2Ins.accessType         = AccessType::View;
                                        AccessRightsList2Ins.accessTypeFkeyUse  = AccessType::NoAccess;
                                        AccessRightsList2Ins.id                 = TableId;
                                        AccessRightsList2Ins.insert();

                                        info(strfmt("%1", tableId2Name(TableId)));
                                    }
                                }
                            }
                        }
                    }
                }

                FieldId   = DictTable.fieldNext(FieldId);
            }
        }
    }
}
За это сообщение автора поблагодарили: Logger (1), gl00mie (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Настройка прав доступа только для чтения Kabardian DAX: Администрирование 3 22.06.2009 10:41
Настройка прав доступа на уровне записей Pan DAX: Администрирование 19 12.11.2006 11:10
настройка прав доступа elenaka DAX: Администрирование 2 13.09.2005 16:03
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42
Настройка прав доступа к конкретной аналитике kalex DAX: Администрирование 3 20.08.2004 17:17

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:26.