Есть такая задача, зная сотрудника нужно назначить права на элемент группам прав в которых он числится. В бизнес-процессе есть активити "PHP-код" , в нём я получаю ID групп прав и возращаю в БП в переменную типа Пользователь.
Код
$root = $this->GetRootActivity();
$User = $root->GetVariable('User'); // Массив пользователей
$Static_grup = $root->GetVariable('Static_grup'); // Статичные группы на которые назначение прав не требуется
for($i = 0; $i < count($User); $i++) {
$User[$i] = implode('_', array_slice( explode( '_', $User[$i]),1 ) ); //Убираю User_ что бы получить чистый ID пользователя
$Grup[$i] = CUser::GetUserGroup($User[$i]); //Получаю группы к котором принадлежит пользователь
$result[$i] = array_diff($Grup[$i], $Static_grup); // Убираю ненужные
}
$Grup_prav = call_user_func_array('array_merge', $result); // объединяю всё в новый массив
for($i = 0; $i < count($Grup_prav); $i++) {
$Grup_prav[$i] = '[G'.$Grup_prav[$i].']';
} // присваиваю вид значениям ([G'ID']) вместо просто (ID)
$root->SetVariable("Grup_prav", $Grup_prav); // возращаю в БП в переменную типа Пользователь
После ставлю активити "Установка прав" и указываю в ней полученную ранее переменную. Но на выходе получается что права присваиваются пустым значениям. Может кто сталкивался и поможет? Или кто знает как назначить права на элемент через php-код(я методов не нашёл).
$Grup_prav = call_user_func_array('array_merge', $result); // объединяю всё в новый массив
for($i = 0; $i < count($Grup_prav); $i++) {
$Grup_prav[$i] = '[G'.$Grup_prav[$i].']';
} // присваиваю вид значениям ([G'ID']) вместо просто (ID)
не понимаю смысла этих строчек, особенно первой, зачем вызывать встроенную функцию php как пользовательскую? Мне эта запись вообще ничего не возвращает, как бы я не пытался
какого результата вы пытаетесь тут добиться? может я чего то не понял
идём дальше, зачем нужен такой формат ([G'ID'])? если вы планируете дальше это записать в активити "Установка прав", то там нужны переменные типа "Пользователь"
Видимо переработал я. Почему то подумал что просто цифры не воспримутся полем типа пользователь, т.к видел что при указании групп в таком поле в конце пишется [G'ID]' как группы и начал пихать "G". По итогу, я такого не находил на просторах.
Вот сообществу решение которое присвоит права элементу по группам к которым принадлежит пользователь.
Код
$root = $this->GetRootActivity();
$User = $root->GetVariable('User'); // Массив пользователей
$Static_grup = $root->GetVariable('Static_grup'); // Статичные группы на которые назначение прав не требуется (необязательно, но в моём случае нужно)
for($i = 0; $i < count($User); $i++) {
$User[$i] = implode('_', array_slice( explode( '_', $User[$i]),1 ) ); //Убираю User_ что бы получить чистый ID пользователя
$Grup[$i] = CUser::GetUserGroup($User[$i]); //Получаю группы к котором принадлежит пользователь
$result[$i] = array_diff($Grup[$i], $Static_grup); // Убираю ненужные (необязательно, но в моём случае нужно)
}
$Grup_prav = call_user_func_array('array_merge', $result); // объединяю всё в новый одномерный массив
$root->SetVariable("Grup_prav", $Grup_prav); // возращаю в БП, в переменную типа Пользователь
Михаил Титков, Спасибо огромное помогло одуматься))))