Нашел решение. Спасибо,
vtyrtov.
Накидал функцию изменяющую права пользователя на раздел:
function chmodSectionAccess($bid, $sid, $uid, $tid, $mod){
$bid = intval($bid); // идентификатор инфоблока
$sid = intval($sid); // идентификатор раздела
$uid = intval($uid); // идентификатор пользователя
$tid = intval($tid); // идентификатор уровня доступа
$mod = ($mod === "Y"); // дать/убрать (Y|N) права на раздел
if ($bid > 0 && $sid > 0 && $uid > 0 && $tid > 0) {
// получаем текущий массив прав
$ob = new CIBlockSectionRights($bid, $sid);
$ar = $ob->GetRights();
if ($mod) {
// дополняем в массив новый элемент
$ar["n0"] = array(
"GROUP_CODE" =>"U" . $uid,
"TASK_ID" => $tid,
"XML_ID" => "API"
);
} else {
// находим совпадающее со входными данными и исключаем из массива
foreach($ar as $i => $r) {
if ($r["GROUP_CODE"] === "U" . $uid &&
$r["TASK_ID"] === $tid) unset($ar[$i]);
}
}
// записываем новые права из массива (другие не наследуемые будут удалены)
$ob->SetRights($ar);
return true;
} else {
return false;
}
}
Надеюсь кому-то поможет данное решение.
Буду рад, если подскажете способ еще проще.