Ускорить вывод окна со списком пользователей

Рейтинг: 0.8902  
Внедрено
Предложил Пользователь 54745 16.03.2023 07:17:31

Ускорить вывод окна со списком пользователей

При редактировании бизнес-процесса иногда требуется выбрать пользователя, появляется окно, но как выяснилось, при количестве зарегистрированных пользователей более 100 тысяч, это окно загружается около 1 минуты, что крайне неудобно.

Проблема в файле /bitrix/modules/bizproc/admin/bizproc_selector.php, строка 80.
Если поменять код:
foreach($arAllowableUserGroups as $gId=>$gName)
{
   $a = CBPHelper::extractUsersFromExtendedGroup($gId);
   if ($a === false)
      $a = $documentService->GetUsersFromUserGroup($gId, $documentType);
   foreach ($a as $v)
   {
      if (!in_array($v, $arUsers))
         $arUsers[] = $v;
   }
}
на
foreach($arAllowableUserGroups as $gId=>$gName)
{
   $a = CBPHelper::extractUsersFromExtendedGroup($gId);
   if ($a === false)
      $a = $documentService->GetUsersFromUserGroup($gId, $documentType);
    $arUsers = array_merge($arUsers, $a);
}
$arUsers = array_values(array_unique($arUsers));
то загрузка окна со списком пользователей ускоряется ~ в 100 раз. И даже для 120 тысяч пользователей время загрузки составляет менее 1 секунды.

Рейтинг: 0  
Пользователь 289183 16.03.2023 10:25:59
Спасибо за идею, потестировали у себя, вы действительно оказались правы.
Исправим в ближайших обновлениях!
Рейтинг: 0  
Пользователь 3730383 16.03.2023 15:44:39
@289183 главное не забудьте учесть, что $documentService->GetUsersFromUserGroup возвращает смешанный результат
Рейтинг: 0  
Пользователь 2106 17.03.2023 10:09:54
$documentService->GetUsersFromUserGroup возвращает смешанный результат
Ммм?
Рейтинг: 0  
Пользователь 3730383 17.03.2023 16:54:32
Ммм?
array|false|mixed