Права доступа.
Права доступа в TDMS - это набор разрешений/исключений на выполнение ряда предопределенных действий над объектами и выборками. Набор формируется по принципу сложения из прав, образованных набором ролей пользователя (включая административные полномочия, если есть), свойствами типа объекта и его текущим статусом; при этом "запрещено все, что не разрешено", т.е. запрещающее ограничение преобладает над разрешающим.
Права доступа определяются для групп и пользователей системы по отношению к каждому объекту индивидуально. Назначаются права системным администратором либо администратором данного объекта. Полным набором прав, позволяющим выполнять любые действия над любыми объектами TDMS, обладает только системный администратор. Исключение составляют случаи, определяемые свойствами типа объектов – например, отсутствие поддержки версионности.

API TDMS дает дополнительные возможности работы с правами доступа. Такая ситуация возникает, когда требуется предоставить пользователю возможность выполнения конкретной операции, например, смена статуса объекта ("Утверждение"). Однако свойство Permissions объекта (выборки) можно изменить только на время работы скрипта и только целиком. Нельзя изменять "по частям" свойство TDMSPermissions, поскольку оно "содержит информацию" о суммарных правах пользователя на данный объект.
Назначить дополнительные права пользователю на объект/выборку через API можно одним из следующих способов:
- Создать для пользователя роль с необходимым набором прав.
- Скопировать права с другого объекта, роли, статуса или выборки: OneObject.Permissions = AnotherObject.Permissions.
- Присвоить права системного администратора с помощью специальной константы, доступной только из внутренних скриптов TDMS: Object.Permissions = SysAdminPermissions. В этом случае специальные права действуют только для данной реализации объекта или выборки. При повторном получении объекта, например, из коллекции, особыми правами он не наделяется.
- Использование специальной переменной ThisObject дает возможность выполнять с объектом любые действия, разрешенные системному администратору. В этом случае свойство Permissions.SysAdmin истинно (даже если текущий пользователь не является системным администратором).
- Включить режим выполнения скрипта "Системный администратор" (ThisScript.SysAdminModeOn). В этом случае надо помнить, что пользователь получает права системного администратора на все объекты и выборки, обращение к которым будет производиться в текущем скрипте, но не получает дополнительных прав на объекты состава.