Перейти к основному содержанию
`Ctrl`+`K`

# Самостоятельные практические задания

## Задание 1

- Создайте нового пользователя, создайте для него физ.лицо и сотрудника. Выдайте пользователю готовый профиль с доступом к какому-либо приложению и авторизуйтесь под его именем.

- Создайте профиль и роль, открывающие доступ к приложению «Управление библиотекой». Выдайте профиль своему пользователю. Скройте для владельцев профиля пункт меню «Помощь».

- Настройте для пользователя доступ к переводу состояния документа «Возврат книг» из состояния «Оформляется» в «Выполнен» и обратно.

## Задание 2

- Настройте роль таким образом, чтобы: список и карточки авторов был доступен только к просмотру, а список книг был доступен на добавление и редактирование за исключением атрибута «Кол-во страниц».

- Используя функционал дискретного доступа настройте роль, позволяющую пользователю видеть документы «Возврат книг» (LbrNN_InOrder) только в состоянии «Оформляется».

Скрипт для фильтрации объектных привилегий:

    select 1
         from LbrXX_InOrder tt
        join  Btk_ClassState cs
        on cs.id = tt.idState
         join (
         select cast(json_array_elements_text(cast((&params) as json)) as int8) as id
          )  as ids
         on cs.idState = ids.id
        where tt.id = (&id)

Скрипт проверки строк по объектному кешу:

    for (p: params) {
    var idClassState = rop.idState;
    var rvClassState = Btk_ClassStateApi.load(idClassState);
    var idvState = Btk_ClassStateApi.getAttrValue(rvClassState,"idState");
        if (idvState.toString() == p.toString()) {
         return true;
        }
    }