Не так давно пришлось решать след проблему один из сотрудников переместил примерно 42000 тыс компаний на другого сотрудника, ппц полный... (тоесть он изменил ответственного у всех компаний) тоесть доступа к компаниям кроме этого сотрудника не у кого небыло.... бэкап 12 часов назад если восстанавливать теряется весь день а там больше 1000 лидов больше 200 компаний я уже не говорю про задачи пользователей и сообщения. решение оказалось прямо и в лоб... написать скрипт для парсинга лога и все восстановить.... делюсь...
Что делал получил весь лог за день, отфильтровал от кого была запись в лог потом сделал проверку на саму запись, .... знаю долго работает так ID пользователя пришлось вычислять через его имя и фио но в итоге 5 мин работы на 12 ядерной теме и все перенеслось обратно!!!!!
Код |
---|
define('STOP_STATISTICS', true); ini_set('max_execution_time', 400); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); CModule::IncludeModule('crm'); $res = CCrmEvent::GetList(array(), array( "ENTITY_TYPE"=>"COMPANY", ">=DATE_CREATE"=>"09.11.2015", "EVENT_TYPE"=>"1", "CREATED_BY_ID"=>"7", ), $nPageTop); while($arEvent = $res->Fetch()){ if($arEvent["EVENT_TEXT_2"]=="Имя на кого было перемещение"){ //$name_mass = explode(" ", $arEvent["EVENT_TEXT_1"]); //pre($name_mass); $by = 'last_login'; $order = 'desc'; $rsUsers = CUser::getList($by, $order, array("NAME"=>$arEvent["EVENT_TEXT_1"]), $arParams); while($rsUser = $rsUsers->Fetch()) { $arEvent["USER_ID"] = $rsUser["ID"]; } $oCompany = new CCrmCompany; $arFields = array("ASSIGNED_BY_ID"=>$arEvent["USER_ID"]); $oCompany->Update($arEvent["ENTITY_ID"], $arFields); $i++; } } echo $i; |
Что делал получил весь лог за день, отфильтровал от кого была запись в лог потом сделал проверку на саму запись, .... знаю долго работает так ID пользователя пришлось вычислять через его имя и фио но в итоге 5 мин работы на 12 ядерной теме и все перенеслось обратно!!!!!