Вычисление ID начальника

Урок 236 из 240
Автор: Марина Павлова
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
2 из 5
Дата изменения: 29.11.2021
Просмотров: 17502
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Старт, Стандарт, Малый бизнес

Определяем начальника

Чтобы вычислить начальника автора документа с помощью действия PHP-код (т.е. без использования действия выбора пользователя), можно использовать приведенный ниже код.

В этом коде переменная $num отвечает за уровень начальника (1 - непосредственный начальник, 2 - начальник начальника,...). ID начальника в формате БП (т.е. вида user_X) записывается в переменную с именем var5. Эта переменная должна быть создана в параметрах БП и должна иметь тип привязки к пользователю.

$num = 1;
$userId = substr("{=Document:CREATED_BY}", 5);
$userId = intval($userId);
if ($userId > 0)
{
 CModule::IncludeModule("intranet");
 $dbUser = CUser::GetList(($by="id"), ($order="asc"), array("ID_EQUAL_EXACT"=>$userId), array("SELECT" => array("UF_*")));
 $arUser = $dbUser->GetNext();
 $i = 0;
 while ($i < $num)
 {
  $i++;
  $arManagers = CIntranetUtils::GetDepartmentManager($arUser["UF_DEPARTMENT"], $arUser["ID"], true);
  foreach ($arManagers as $key => $value)
  {
   $arUser = $value;
   break;
  }
 }
 $rootActivity = $this->GetRootActivity();
 $rootActivity->SetVariable("var5", "user_".$arUser["ID"]);
}

Примечание: в $arUser = $dbUser->GetNext(); можно использовать вместо метода GetNext метод Fetch. Будет работать быстрее.


Курсы разработаны в компании «1С-Битрикс»
Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас