• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/internals/orderarchive.php
  • Класс: BitrixSaleInternalsOrderArchiveTable
  • Вызов: OrderArchiveTable::renew
static function renew(array $filter = array())
{
	$result = new MainResult();
	$parameters = array("select" => array('ID'));

	if (!empty($filter))
		$parameters['filter'] = $filter;

	$idList = array();
	$archivedOrderData = self::getList($parameters);
	while ($archiveRow = $archivedOrderData->fetch())
	{
		$idList[] = $archiveRow['ID'];
	}

	if (empty($idList))
		return $result;

	$idListChunk = array_chunk($idList, 1000);
	foreach ($idListChunk as $chunk)
	{
		$packedData = OrderArchivePackedTable::getList(array(
			"filter" => array("ORDER_ARCHIVE_ID" => $chunk)
		));

		while ($packed = $packedData->fetch())
		{
			$orderData = unserialize($packed['ORDER_DATA'], ['allowed_classes' => false]);
			if (is_array($orderData['ORDER']))
			{
				$preparedOrderData = array_intersect_key($orderData['ORDER'], array_flip(SaleArchiveManager::getOrderFieldNames()));
				$result = self::update($packed['ORDER_ARCHIVE_ID'], $preparedOrderData);
				if (!$result->isSuccess())
					return $result;
			}
		}
	}

	return $result;
}