public static function takeOutOrdersToCorrespondentTable() { $platformId = \Bitrix\Sale\TradingPlatform\YandexMarket::getInstance()->getId(); if (intval($platformId) <= 0) { return ""; } $conn = \Bitrix\Main\Application::getConnection(); $helper = $conn->getSqlHelper(); $correspondence = $conn->query('SELECT ID FROM ' . $helper->quote(\Bitrix\Sale\TradingPlatform\OrderTable::getTableName()) . ' WHERE ' . $helper->quote('TRADING_PLATFORM_ID') . '=' . $platformId); //check if we already tried to convert if ($correspondence->fetch()) { return ""; } if ($conn->getType() == "mssql") { $lenOpName = "LEN"; } else { $lenOpName = "LENGTH"; } if ($conn->getType() == "oracle") { $right = 'SUBSTR(XML_ID, -(' . $lenOpName . '(XML_ID)-' . strlen(self::XML_ID_PREFIX) . '))'; } else { $right = 'RIGHT(XML_ID, ' . $lenOpName . '(XML_ID)-' . strlen(self::XML_ID_PREFIX) . ')'; } //take out correspondence to $sql = 'INSERT INTO ' . \Bitrix\Sale\TradingPlatform\OrderTable::getTableName() . ' (ORDER_ID, EXTERNAL_ORDER_ID, TRADING_PLATFORM_ID) SELECT ID, ' . $right . ', ' . $platformId . ' FROM ' . \Bitrix\Sale\Internals\OrderTable::getTableName() . ' WHERE XML_ID LIKE ' . "'" . self::XML_ID_PREFIX . "%'"; try { $conn->queryExecute($sql); } catch (\Bitrix\Main\DB\SqlQueryException $e) { CEventLog::Add(array("SEVERITY" => "ERROR", "AUDIT_TYPE_ID" => "YMARKET_XML_ID_CONVERT_INSERT_ERROR", "MODULE_ID" => "sale", "ITEM_ID" => "YMARKET", "DESCRIPTION" => __FILE__ . ': ' . $e->getMessage())); } return ""; }