...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/agent/requisite/entityaddressconvertagent.php
- Класс: Bitrix\Crm\Agent\Requisite\EntityAddressConvertAgent
- Вызов: EntityAddressConvertAgent::getConverterInstance
function getConverterInstance(); public static function doRun() { $instance = static::getInstance(); if($instance === null) { return false; } if(!$instance->isEnabled()) { return false; } $progressData = $instance->getProgressData(); $isStart = false; // Prevent multiple steps $timestamp = time(); if (isset($progressData['TIMESTAMP'])) { $prevTimeStamp = (int)$progressData['TIMESTAMP']; if ($timestamp >= $prevTimeStamp && $timestamp - $prevTimeStamp < self::STEP_TTL) { return true; } } else { if (!isset($progressData['LAST_ITEM_ID']) || $progressData['LAST_ITEM_ID'] <= 0) { $isStart = true; } } $progressData['TIMESTAMP'] = $timestamp; $instance->setProgressData($progressData); $success = true; if ($isStart) { try { $instance->start(); } catch (SystemException $e) { $success = false; } } if ($success) { $offsetId = isset($progressData['LAST_ITEM_ID']) ? (int)($progressData['LAST_ITEM_ID']) : 0; $processedItemQty = isset($progressData['PROCESSED_ITEMS']) ? (int)($progressData['PROCESSED_ITEMS']) : 0; $totalItemQty = isset($progressData['TOTAL_ITEMS']) ? (int)($progressData['TOTAL_ITEMS']) : 0; if($totalItemQty <= 0) { $totalItemQty = $instance->getTotalCount(); } $limit = (int)Option::get('crm', '~CRM_ENTITY_ADDRESS_CONVERT_STEP_LIMIT', self::ITEM_LIMIT); if($limit <= 0) { $instance->enable(false); return false; } $itemIds = $instance->prepareItemIds($offsetId, $limit); $itemQty = count($itemIds); if($itemQty === 0) { $instance->complete(); $instance->enable(false); return false; } try { $instance->convert($itemIds); } catch(SystemException $e) { $success = false; } } if (!$success) { $instance->complete(); $instance->enable(false); $instance->enableErrorFlag(true); return false; } $processedItemQty += $itemQty; if($totalItemQty < $processedItemQty) { $totalItemQty = $instance->getTotalCount(); } unset($progressData['TIMESTAMP']); $progressData['LAST_ITEM_ID'] = $itemIds[$itemQty - 1]; $progressData['PROCESSED_ITEMS'] = $processedItemQty; $progressData['TOTAL_ITEMS'] = $totalItemQty; $instance->setProgressData($progressData); return true; }