Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
vtatarnikov
Creator
Creator

Как правильно настроить секцию доступа в скрытом скрипте

Здравствуйте! Подскажите, пожалуйста.

Можно ли сделать так, чтобы таблица была видна только определенным пользователям?

Пока скрыл только поле, следующим образом (можно ли указать id таблицы или нужно скрывать каждое поле):

Section Access;

LOAD * INLINE [

ACCESS,  NTNAME,   OMIT

ADMIN,     ADMIN,  

USER,      USER1,     SALES

USER,      USER2,     SALES

............

];

Section Application;

Т.е. доступ к документу имеют admin, user1 и user2. Admin видит всё, user1,2 не видят поле SALES.

Попутно возникло 2 вопроса:

1) Есть ли более удобный способ настройки доступа? При указанном выше способе, при добавлении лицензии новому пользователю, его придется добавить в Section Access и прокачать скрипт.

2) Сделал Section Access в скрытом скрипте и теперь не могу его открыть/отредактировать/удалить (пароль помню):

HS.png

1 Solution

Accepted Solutions
Sergey_Polekhin
Employee
Employee

Добрый день,

Ограничение доступа на уровне данных возможно делать либо на уровне поля(ей) целиком, либо на уровне конкретных значений поля. На уровне таблиц это не делается.

По лицензиям: лицензии никак не связаны с секцией доступа.

Очевидно, что если ставится задача разграничения доступа к данным для каких-то пользователей на уровне записей в модели данных, то для этих пользователей должны быть описаны правила в секции доступа.


По скрытому скрипту: для его открытия вы должны быть администратором документа (содержимым поля ACCESS в секции доступа для этого пользователя должен быть ADMIN).


Опять же не забывайте, что для массовых и сложных разграничений доступа целесообразнее использовать не только и не столько Section Access, сколько QlikView Publisher.



View solution in original post

4 Replies
Sergey_Polekhin
Employee
Employee

Добрый день,

Ограничение доступа на уровне данных возможно делать либо на уровне поля(ей) целиком, либо на уровне конкретных значений поля. На уровне таблиц это не делается.

По лицензиям: лицензии никак не связаны с секцией доступа.

Очевидно, что если ставится задача разграничения доступа к данным для каких-то пользователей на уровне записей в модели данных, то для этих пользователей должны быть описаны правила в секции доступа.


По скрытому скрипту: для его открытия вы должны быть администратором документа (содержимым поля ACCESS в секции доступа для этого пользователя должен быть ADMIN).


Опять же не забывайте, что для массовых и сложных разграничений доступа целесообразнее использовать не только и не столько Section Access, сколько QlikView Publisher.



vtatarnikov
Creator
Creator
Author

Сергей, спасибо за ответ!

vtatarnikov
Creator
Creator
Author

Сергей, объясните, пожалуйста.. Скрипт с секцией доступа не выполняется из QMC, выдает:

29.05.2015 15:31:23     Error   Document open call failed. The document might require username and password.

29.05.2015 15:31:23     Error   The document failed to open.

29.05.2015 15:31:24     Error   Document could not be opened

29.05.2015 15:31:24     Error   The task ".../тест.qvw" failed. Exception:

QDSMain.Exceptions.

DistributionFailedException: Distribute failed with errors to follow. ---> QDSMain.Exceptions.ReloadFailedException: Reload failed ---> QDSMain.Exceptions.FailedDocumentCheckoutException: Failed to check out document with path: ...\тест.qvw
    at QDSMain.ReloadTask.Reload(String fileName, TaskResult taskResult, String sectionAccessUserName, String sectionAccessPassword, eReloadOptions reloadOption, String variableName, String variableValue, Boolean moniterCpuUsage)
    --- End of inner exception stack trace ---
    at QDSMain.ReloadTask.Reload(String fileName, TaskResult taskResult, String sectionAccessUserName, String sectionAccessPassword, eReloadOptions reloadOption, String variableName, String variableValue, Boolean moniterCpuUsage)
    at QDSMain.DistributeTask.Execute(TaskResult currentTaskResult)
    --- End of inner exception stack trace ---
    at QDSMain.DistributeTask.Execute(TaskResult currentTaskResult)
    at QDSMain.Task.AbstractTask.TaskExecution(ILogBucket logBucket, TaskResult taskResult)

Аутентификацию провожу только по NTNAME:

Section Access;

LOAD * INLINE [

ACCESS, NTNAME, OMIT

....

Sergey_Polekhin
Employee
Employee

Первым делом проверьте - включили ли вы в секцию доступа учетную запись пользователя, от имени которой работают службы сервера QlikView.

Эта учетная запись должна быть включена в секцию доступа с привилегиями ADMIN.