Перейти к основному содержимому

События связанные с импортом товаров

События в этом блоке работают для сущностей:

  • товары
  • модификации
  • комплекты
  • услуги

Все эти сущности импортируются по общим правилам и имеют одинаковые события для модификации импорта.

Общая структура импорта модуля делиться на несколько этапов:

Этап 1. Считывание очередной порции товаров.

Здесь модуль считывает порцию товаров. Она зависит от шага импорта, но всегда кратна 100 элементам. Максимум 1000 элементов. Далее модуль разделяет эту порцию на 2 подмассива:

  • найденные элементы по внешнему коду
  • не найденные элементы, которые нужно создать

Этап 2. Создание новых элементов

Здесь модуль создает новые элементы инфоблока. После создания каждого элемента он создает также элемент торгового каталога.

Именно на этом этапе существует только одно уникальное событие [OnAfterImporItems], его описание можно найти здесь:

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

И также есть 2 общий события, которые описаны ниже:

  • onSetPropsForItem
  • onSetSkuProps

Этап 3. Обновление существующих элементов

Здесь аналогичные правила как при создании: сначала обновляем элемент инфоблока, а затем уже обновляем поля товара торгового каталога.

к сведению

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

Ниже опишем события в том порядке, в котором они вызываются:

[OnBeforeUpdateItem] - вызывается перед тем как конкретный элемент будет обновлен, можно использовать для модификации данных, которые передаются в элемент инфоблока. В этом событии можно поменять поля, которые уйдут в метод CIblockElement::Update();

Событие перед изменением элемента инфоблока

[OnSetPropsForItem] - вызывается если вы импортируете свойства элементов инфоблока, здесь можно либо модифицировать значения передаваемых свойств, либо добавить свои свойства для записи. Поля в этом методе передаются в метод CIBlockElement::SetPropertyValuesEx();

Событие перед записью свойств товара

[OnBeforeUpdateItemProduct] - вызывается перед тем как изменятся поля товара торгового каталога. Вызывается перед методом \Bitrix\Catalog\Model\Product::update();

[OnBeforeUpdateItemVariant] - аналогично событию выше, но в нем также передаются поля родительского товара, т.к. здесь событие срабатывает при импорте модификаций.

Событие перед изменением товара

[onSetSkuProps] - вызывается после успешного импорта торгового предложения, здесь можно модифицировать значения свойств торговых предложений.

Событие перед записью свойств торговых предложений

[OnAfterUpdateItems] - здесь событие можно считать устаревшим, т.к. оно срабатывает после того, как сработали все события выше для каждого из товаров и в этом событии передаются данные массового импорта. Следовательно данные в этом событии можно обрабатывать также массово.

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