Задача по переносу пользователей из одного Битрикс в другой.
$tableOfGroups = [ '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 9, '6' => 10, '7' => 11, ];Затем вам потребуется вручную внести на второй сайт Доп. поля (если они есть) с теми же самыми кодами. После чего разместите на первом сайте файл exportUSERS.php, а во втором importUSERS.php и пропишите соответствующие пути.
Листинг файла exportUSERS.php:
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); //Получаем список пользователей $rsUsers = CUser::GetList($by="", $order="",[],array("SELECT"=>array("UF_*"))); while ($user = $rsUsers->Fetch()){ $arUsers[$user['ID']] = $user; if($user['PERSONAL_PHOTO']){ $arFileTmp = CFile::ResizeImageGet( $user['PERSONAL_PHOTO'], array("width" => 1000, "height" => 1000), BX_RESIZE_IMAGE_PROPORTIONAL, true ); $arUsers[$user['ID']]['PERSONAL_PHOTO'] = 'http://' . $_SERVER['SERVER_NAME'] . $arFileTmp["src"]; } $userGroups = CUser::GetUserGroup($user['ID']); $arUsers[$user['ID']]['A']['GROUPS'] = $userGroups; } echo json_encode($arUsers); die(); require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_after.php');Листинг файла importUSERS.php:
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); $arTotal = array(); $url = 'https://your_site.ru/exportUSERS.php'; $postdata = array(); $post = http_build_query($postdata); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); $response = curl_exec($ch); curl_close($ch); //Преобразовываем std в массив $response = json_decode($response, True); $arTotal['Получено пользователей'] = count($response); $arTotal['Занесено'] = 0; if(!CModule::IncludeModule("iblock")){die();} $tableOfGroups = [ '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 9, '6' => 10, '7' => 11, ]; $connection = Bitrix\Main\Application::getConnection('default'); $sqlHelper = $connection->getSqlHelper(); foreach ($response as $key => $value){ $arFields = []; foreach ($value as $k => $v){ switch ($k) { case 'PERSONAL_PHOTO': if($v){ $arIMAGE = CFile::MakeFileArray($value['PERSONAL_PHOTO']); $arIMAGE["MODULE_ID"] = "main"; $arFields[$k] = $arIMAGE; } break; case 'A': $groupIDS = []; //По таблице соответствия групп проставляем требуемые уровни доступа foreach ($v['GROUPS'] as $name => $val){ array_push($groupIDS,$tableOfGroups[$val]); } $arFields['GROUP_ID'] = $groupIDS; break; case 'LID': break; case 'IS_ONLINE': break; case 'PASSWORD': break; case 'CHECKWORD': break; default: if($v){ $arFields[$k] = $v; } break; } } $arFields['PASSWORD'] = 'blabla'; $arFields['CHECKWORD'] = 'blabla'; $user = new CUser; $ID = $user->Add($arFields); if (intval($ID) > 0){ $arTotal['Занесено'] += 1; $connection->queryExecute("UPDATE b_user SET PASSWORD='".$sqlHelper->forSql ($value["PASSWORD"])."', CHECKWORD='".$sqlHelper->forSql ($value["CHECKWORD"])."' WHERE ID='".$ID."'"); }else{ $arTotal['Ошибки'] = $arTotal['Ошибки'].' '.$user->LAST_ERROR; } }Не забудьте запустить ваш файл importUSERS.php и дождаться окончания процесса импорта. После окончания импорта удалите оба файла.