Здравствуйте, раз в 5-10 дней слетает синхронизация Б24 (коробка) с Битрикс малый бизнес.
Служба поддержки пишет что проблема в обработчике событий файла init OnBeforeCrmDealAddHandler, закомментировал строки, все равно слетает периодически. Отключить init возможности нет, так как проект работает и в нем необходимые доработки есть.
Возможно кто свежим, опытным взглядом подскажет что не правильно в init прописано?
Служба поддержки пишет что проблема в обработчике событий файла init OnBeforeCrmDealAddHandler, закомментировал строки, все равно слетает периодически. Отключить init возможности нет, так как проект работает и в нем необходимые доработки есть.
Возможно кто свежим, опытным взглядом подскажет что не правильно в init прописано?
Скрытый текст |
---|
<? use \Bitrix\Iblock; use Bitrix\Main\Loader; Loader::includeModule("iblock"); Loader::includeModule("crm"); define('SALES_DEPARTMENT_ID', 136); define('DEPARTMENT_IBLOCK_ID', 5); //require_once("include/CSaleDepartment.php"); function OnBeforeCrmDealUpdateHandler( &$arFields ){ //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log.log",print_r($arFields,true)."\n",FILE_APPEND); if($arFields["ASSIGNED_BY_ID"]>0){ $rsUser = CUser::GetByID($arFields["ASSIGNED_BY_ID"]); $arUser = $rsUser->Fetch(); $homepage = file_get_contents(' } } /* AddEventHandler("crm", "OnBeforeCrmDealAdd", "OnBeforeCrmDealAddHandler"); function OnBeforeCrmDealAddHandler( &$arFields ){ //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log2.log",print_r($arFields,true)."\n",FILE_APPEND); if (class_exists('CSaleDepartment')) { //$arFields['ASSIGNED_BY_ID'] = CSaleDepartment::getNextInARowEShopUser(); } //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log2.log",print_r(CSaleDepartment::getEShopDealLastManagerID(),true)."\n",FILE_APPEND); //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log2.log",print_r(CSaleDepartment::getNextInARowEShopUser(),true)."\n",FILE_APPEND); //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log2.log",print_r($arFields,true)."\n",FILE_APPEND); return $arFields; } AddEventHandler("crm", "OnBeforeCrmLeadAdd", "OnBeforeCrmLeadAddHandler"); function OnBeforeCrmLeadAddHandler($arFields){ // file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log_lead.log",print_r($arFields,true)."\n",FILE_APPEND); if (class_exists('CSaleDepartment')) { //$arFields['ASSIGNED_BY_ID'] = CSaleDepartment::getNextInARowLeadUser(); } // file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log_lead.log",print_r($arFields,true)."\n",FILE_APPEND); return $arFields; } */ function PR($o,$toString = false,$ltf=false) { $bt_src = debug_backtrace(); if($ltf) $bt = $bt_src[1]; else $bt = $bt_src[0]; $dRoot = $_SERVER["DOCUMENT_ROOT"]; $dRoot = str_replace("/","\\",$dRoot); $bt["file"] = str_replace($dRoot,"",$bt["file"]); $dRoot = str_replace("\\","/",$dRoot); $bt["file"] = str_replace($dRoot,"",$bt["file"]); $output = '<div style="font-size:9pt; color:#000; background:#fff; border:1px dashed #000;">'; $output .= '<div style="padding:3px 5px; background:#99CCFF; font-weight:bold;">File: '.$bt["file"].' ['.$bt["line"].'] '.date("d.m.Y H:i:s").'</div>'; $output .= '<pre style="padding:10px;">'.var_export($o,true).'</pre>'; $output .= '</div>'; if($toString) return $output; echo $output; } function LTF($var,$unlink = false) { $logFile = $_SERVER["DOCUMENT_ROOT"]."/ltf_log.html"; if($unlink) { unlink($logFile); } file_put_contents($logFile,PR($var,true,true)."\n",FILE_APPEND); } // при создании сделки, если заказ уже оплачен, то меняется статус на NEW AddEventHandler("crm", "OnBeforeCrmDealAdd", "ResetStatusPaid"); function ResetStatusPaid( &$arFields ) { if(array_key_exists('STAGE_ID', $arFields) && $arFields['STAGE_ID']=="WON") { $arFields['STAGE_ID']='NEW'; if(array_key_exists('STAGE_SEMANTIC_ID', $arFields)) unset($arFields['STAGE_SEMANTIC_ID']); if(array_key_exists('CLOSED', $arFields)) unset($arFields['CLOSED']); if(array_key_exists('CLOSEDATE', $arFields)) unset($arFields['CLOSEDATE']); } // file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html",PR($arFields,true,true)." OnBeforeCrmDealAdd "."\n",FILE_APPEND); } AddEventHandler("crm", "OnBeforeCrmDealUpdate", "Y_OnBeforeCrmDealHandler"); function Y_OnBeforeCrmDealHandler( &$arFields ) { // Deallog.html - лог оплаты //if($arFields["ID"] == 47608) /*{ */ //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html",PR($arFields,true,true)."\n",FILE_APPEND); /*} */ //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html",PR($_SERVER,true,true)."\n",FILE_APPEND); // Условие работает для обновления данных с сайта по крону if($_SERVER['SHELL'] && strpos($_SERVER['PHP_SELF'],'cron_events.php') !== false) { // работает скрипт автоматизации (загрузка заказов) $dealId = (array_key_exists('ID', $arFields)?intval($arFields['ID']):false); if($dealId > 0) { //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html","тут2"."\n",FILE_APPEND); if(array_key_exists('STAGE_ID', $arFields)) unset($arFields['STAGE_ID']); if(array_key_exists('STAGE_SEMANTIC_ID', $arFields)) unset($arFields['STAGE_SEMANTIC_ID']); if(array_key_exists('CLOSED', $arFields)) unset($arFields['CLOSED']); if(array_key_exists('CLOSEDATE', $arFields)) unset($arFields['CLOSEDATE']); if(!empty($arFields['ADDITIONAL_INFO']) && intval($arFields["ORIGIN_ID"])>0) // && preg_match('#\"ORDERPAID\";b:1;#',$arFields['ADDITIONAL_INFO']) { $url = ' $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "GOOGLE"); // Обманочка curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch); //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html",$output."\n",FILE_APPEND); //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html",PR($output,true,true).$url."\n",FILE_APPEND); } if(array_key_exists($arFields['UF_CRM_1590737375271'])) { //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html","add to log PAID"."\n",FILE_APPEND); } else { //file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html","don't add to log PAID"."\n",FILE_APPEND); unset($arFields); return false; } } } } AddEventHandler("crm", "OnBeforeCrmInvoiceAdd", "AddInvoiceWDStatusNew"); function AddInvoiceWDStatusNew(&$arFields) { $curDeal = \CCrmDeal::GetList(['DATE_CREATE' => 'DESC'],["ID"=>$arFields['UF_DEAL_ID'], 'CHECK_PERMISSIONS' => 'N'],[],false)->fetch(); if($curDeal[STAGE_ID] == "NEW") { ECHO "Нельзя создать счет для сделки со статусом НОВАЯ!"; unset($arFields); return false; } } |