События массовой обработки очередного шага импорта

События вызываются после того, как модуль провел очередной шаг массового импорта товаров (модификаций, услуг и комплектов).

[OnAfterImportItems] - вызывается после массового импорта новых сущностей

[OnAfterUpdateItems] - вызывается после массового импорта существующих сущностей (после их обновления)

[OnAfterImporItems] Событие после импорта новых элементов

Поиск созданного элемента можно осуществить с помощью внешнего кода, который доступен в массиве обрабатываемых объектов из МС.

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 
    'rbs.moyskladstocks',
    'OnAfterImportItems',
    'OnAfterImportItemsHandler'
);

function OnAfterImportItemsHandler(\Bitrix\Main\Event $event)
{
    $eventParams = $event->getParameters();

    $entity= $eventParams['entity']; //сущность в МойСклад, которая обрабатывается (четыер варианта значения: product / variant / bundle / service)
    $items = $eventParams['items']; //массив обрабатываемых объектов (ниже пример их обработки)
    
    foreach ($items as $xmlId => $itemMs) {
        // $xmlId -- внешний код элемента, для модификаций это значение будет без решетки # во внешнем коде
        // $itemMs -- сущность в МС, доступ к полям идет через свойства объекта
    }
    
    // \Rbs\MoyskladStocks\Logger::debugMsg($arItems, 'importItemsLog.log'); //запись в логи, логи хранятся в папке /bitrix/rbs.moyskladstocks/logs/
}

[OnAfterUpdateItems] Событие после импорта существующих элементов

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 
    'rbs.moyskladstocks',
    'OnAfterUpdateItems',
    'OnAfterUpdateItemsHandler'
);

function OnAfterUpdateItemsHandler(\Bitrix\Main\Event $event)
{
    $eventParams = $event->getParameters();

    $entity= $eventParams['entity']; //сущность в МойСклад, которая обрабатывается (четыер варианта значения: product / variant / bundle / service)
    $items = $eventParams['items']; //массив обрабатываемых объектов (ниже пример их обработки)
    $productsBxArray = $eventParams['products']; //массив полей товара
    
    foreach ($items as $xmlId => $currentItem) {
        // $xmlId -- внешний код элемента, для модификаций это значение будет без решетки # во внешнем коде
        $itemBx = $currentItem['BX']; //сущность в битриксе, доступ к полям идет через ассоциативный массив
        $item = $currentItem['MS']; //сущность в МС, доступ к полям идет через свойства объекта
        //поля товара в торговом каталоге
        $productBxArray = isset($productsBxArray [$itemBx['ID']]) ? $productsBxArray[$itemBx['ID']] : [];
    }
    
    // \Rbs\MoyskladStocks\Logger::debugMsg($arItems, 'updateItemsLog.log'); //запись в логи, логи хранятся в папке /bitrix/rbs.moyskladstocks/logs/
}

Last updated

Was this helpful?