Библиотека на Axapta Как да конфигурирате RLS в Axapta 3

Обсъдете във форума:

Съветът предоставя инструкции стъпка по стъпка за настройка на Record Level Security (RLS) в Axapta 3.0.

Къде го пише това в документацията?

конфигурирате
клиенти
Ограничаването на правата на ниво записи (Record Level Security - RLS) ще ви позволи да ограничите достъпа до записи до различни групи потребители. Например една група мениджъри може да види български клиенти, а друга група да види чуждестранни. Освен това мениджърите, работещи с български клиенти, не трябва да виждат чужди клиенти. Освен това мениджърите дори не трябва да ги виждат.

RLS в Aksapta работи във връзка със системата за персонализирана настройка на права. Това означава, че за да ограничите достъпа до едно или друго поле на таблицата, е необходимо да зададете обичайните права на тези таблици. Задачата на RLS е да филтрира записите незабележимо за потребителя.

Конфигурирането на ограничения на правата на ниво запис се свежда до дефиниране на филтри на определени таблици за различни потребителски групи. Ако потребителят принадлежи към няколко групи, тогава филтрите се комбинират от условието ИЛИ.

Изкуството на задаване на разрешения е да се дефинират правилно филтри на правилните таблици. И го направете по оптимален начин, за да не намалите производителността на системата.

Преди да извършим конфигурацията на ограниченията за достъп, е необходимо да предприемем предварителни стъпки:

  1. Влезте в Axapta, като използвате потребителско име с пълни права. По подразбиране това е администраторското потребителско име с празна парола.
  2. Създайте фирмено dmo (Главно меню \ Администрация \ Фирми);
  3. Качете демонстрационните данни от диска за разпространение в dmo;
  4. Създайте потребителски групи tstGroup1, tstGroup2, tstGroup3 (Главно меню \ Администрация \ Настройки \ Групипотребители);

клиенти
клиенти
  • Създаване на потребителски тест (Главно меню \ Администрация \ Потребители);
  • Посочете, че за потребител Test, компанията по подразбиране е dmo (раздел Разни в списъка с потребители);
  • Включете тестовия потребител в групите tstGroup1, tstGroup2, tstGroup3 (раздел Групи в списъка с потребители).
  • групата
    axapta

    Подготвителната работа е завършена. User Test няма права в момента. Можете да отидете на Axapta под тестовия потребител и да се уверите, че той дори не може да отвори главното меню.

    Можете да започнете да настройвате RLS:

    1. Настройте нормални права за групата tstGroup1.
    2. Отидете на групови разрешения.
    3. Поставете курсора върху групата tstGroup1,
    4. Отидете в раздела Разрешения;
    5. Посочете, че групата tstGroup1 има право на достъп за четене в модула Вземания;
    6. Разширете модула Вземания;
    7. Разширете линията с ежедневни операции;
    8. Поставете курсора върху Поръчки и дайте пълен достъп до Поръчките;
    9. Докато курсорът е върху Поръчки Натиснете бутона Cascade;
    10. Затворете формата за настройки на правата.

    конфигурирате
    групата
  • Сега нека конфигурираме RLS
  • Отидете на Достъп до ниво на запис;
  • Създайте нов запис;
  • В съветника задайте групата tstGroup1 и изберете таблицата Клиенти. Завършете съветника.
  • конфигурирате
    права
  • Редактирайте заявката за създадената от вас персонализация.
  • Кликнете върху бутона Заявка;
    • Добавете полето Група клиенти;
    • Посочете критерий за това поле, например „Prch“.

    права
    конфигурирате

    В интерес на истината всичко! RLS е конфигуриран. Сега потребителски тестполучи права за четене на данни от модул Вземания и право за създаване и изтриване на поръчки. Освен това към клиентската таблица се прилага филтър. Отсега нататък потребителите, принадлежащи към групата tstGroup1, ще могат да виждат само други клиенти (клиенти, за които е зададена групата Други).

    Да проверим настройката

    групата
    права
    Влезте в Axapta като потребител Test. Отворете списъка с клиенти (Главно меню \ Сметки с клиенти \ Клиенти). Уверете се, че списъкът с клиенти показва само клиенти, за които е зададена група с Prf код.

    Моля, имайте предвид, че не само разделът Сметки с клиенти е отворен в главното меню. Разделите Главна книга, Парични средства, CRM, Управление на инвентара, Общи също се отвориха. Факт е, че давайки права на клиентския модул, сме засегнали много таблици от други модули. Да, разбира се, ненужните отметки са почти празни. Но все пак в реалния живот правата трябва да се дават много по-точно.

    Освен това отметките от незакупени модули никога не се появяват в реалния живот. Например, опитайте да деактивирате CRM модула в настройката на конфигурационните ключове.

    Опитайте да приложите филтъра "*" към групата (Поставете мишката върху колоната Група клиенти, натиснете десния бутон, изберете елемента Намиране. въведете филтъра "*").

    Опитайте също да приложите филтъра "!Prch". Опитайте да приложите филтри към други полета. Уверете се, че клиентският филтър действително работи правилно във всички случаи.

    Проверете как работи RLS в отчетите. Отворете справката със списъка на клиентите (Главно меню \ Вземания \ Справки \ Основни данни \ Клиент). Опитайте да създадете същия отчет с филтри. Уверете се, че клиентският филтър работи правилно и в отчетите.

    Моля, обърнете внимание, че програмистътне е нужно да променяте или преправяте нищо, за да може RLS да работи в неговия отчет, ако той използва ядрото във формуляри или за изграждане на отчети и не предефинира механизма за извличане на данни. Ако програмистът ръчно кодира заявки, тогава той трябва да добави извикване към метода recordLevelSecurity(true) за тези таблици, където е необходимо да се активира ограничението за достъп за запис. Вижте Ръководството за разработчици за ключовата дума Record Level Security за подробности.

    Отворени поръчки. Оп! И поръчките се показват за всички клиенти. Защо? Но тъй като поръчките съдържат клиентски кодове, а не самите клиенти. Опитайте се да отидете на главната маса с клиенти - няма да можете да видите параметрите на скритите клиенти.

    конфигурирате
    конфигурирате

    Най-общо казано, в реалния живот настройката на ограничение за ниво на разрешение не е достатъчна за настройка на една таблица. По правило свързаните ограничения трябва да бъдат наложени на няколко свързани таблици.

    Правата за достъп на ниво запис работят не само във формуляри и отчети, но и в падащи списъци. Отворете поръчката и щракнете върху бутона падащ списък на клиента. Да всичко е точно. User Test вижда само други клиенти.

    RLS за множество групи

    Сега разгледайте ситуация, в която трябва да настроите няколко различни групи с различни права и с различни ограничения на правата.

    Да приемем, че една група мениджъри има достъп до Други клиенти (група клиенти = Prh), а друга група мениджъри има достъп до Общи клиенти (група клиенти = T&U). Вече сме създали първата група. Остава да настроим втората група.

    Повторете стъпки 8-10. Просто задайте пълните права на групата tstGroup2 за модула за вземания по сметки и посочете „T&C“ като критерий в настройката на RLS за групата tstGroup2.

    За проверкавлезте в Axapta под Test потребител и се уверете, че формулярите и отчетите работят правилно, уверете се, че сте получили пълни права за клиенти и можете да редактирате клиентски параметри.

    Какво се случва, ако клиентът промени групата? Във формата клиентът ще бъде видим, докато не напусне екранната форма. Веднага след като Aksapta прочете отново данните от сървъра, RLS ще работи и мениджърът вече няма да вижда "чуждия" клиент.

    Този пример отново показва, че правата трябва да бъдат конфигурирани по сложен начин. В тази ситуация можете или да попречите на мениджърите да редактират полето за група клиенти, или да зададете ограничение на ниво запис (RLS) на таблицата с групи.

    За да разрешите на някои потребители достъп до целия списък с клиенти, трябва да дадете права на третата група върху клиентската таблица, но не конфигурирайте RLS. Axapta разглежда нормалните разрешения. И ако има право на достъп, тогава той гледа в настройките на RLS. Ако няма RLS настройки за тази група и тази таблица, тогава Axapta показва всички записи от таблицата.

    Обърнете внимание, че групата tstGroup3 не е повлияла на поведението на RLS, стига да няма права върху клиентската таблица. Веднага след като в тази група се появи правото на клиенти, тази група веднага започна да участва в RLS. За да тествате тази теза, премахнете правата върху модула Accounts receivable в групата tstGroup2 и проверете RLS за Test client. Ще виждате само други клиенти.