При помощи этой функции производится проверка прав доступа данного Сотрудника к данному Объекту. В ней скрыты все обращения к файлам подсистемы разделения доступа. Защищаемые процедуры могут ничего не знать даже о существовании этих файлов, им достаточно обратиться к функции DostObj().
DostObj( Obozn, CurKateg ) Проверить права доступа к объекту
Obozn - Условное
обозначение объекта в соответствии со
Справочником Объектов.
CurKateg - Категория доступа текущего
пользователя
Возвращает байт прав доступа. Если нет никаких ограничений доступа, то возвращает нуль. Каждый бит в байте возвращаемого значения отвечает за доступ к чему-либо следующим образом:
Прототип: DostObj( String, <Short> ), Short
DostObj FUNCTION (Obozn,CurKateg)
CODE
checkOpen( Dostup, 1 )
checkOpen( Object, 1 )
obj:Obozn = Obozn
get( Object, obj:Obozn_key )
if errorcode()
Message(' Доступ. Нет обьекта: ' & Obozn, ' Ошибка',
icon:Question )
return( 0 )
.
if omitted( 2 )
dos:KategCode = GetMOL_Kateg( G:SCode )
else
dos:KategCode = CurKateg
.
dos:ObjectId = obj:Id
get( Dostup, dos:Kateg_key )
if errorcode()
r# = 0 ! По умолчанию доступ разрешен
else
r# = dos:OpenFlag + dos:InsertFlag*2 + dos:ChangeFlag*4 + dos:DeleteFlag*8 + |
dos:OkFlag*16 + dos:UtwFlag*32 +
dos:RUtwFlag*64 + dos:PrintFlag*128
.
return( r# )
Функция сначала открывает файлы и
проверяет, есть ли в Справочнике Объектов обьект
с заданным обозначением Obozn. Если его
нет, то пользователю выводится предупреждающее
сообшение об этом, которое напоминает о том, что
этот объект надо добавить в Справочник Объектов.
Далее проверяется наличие второго аргумента у функции (каегории доступа текущего пользователя). Если категория не указана, то берется категория текущего (зарегистрированного при входе) пользователя, по его коду, который содержится в глобальной переменной G:SCode. Категория доступа по Коду пользователя определяется при помощи функции GetMOL_Kateg().
Затем производится чтение записи о правах доступа даной Категории в файле Dostup и формируется байт возвращаемого значения.
Для вызова функции DostObj() имеются специальные шаблоны, которые анализируют ее возвращаемое значение и выполняют соответствующие ограничения доступа к объекту: