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

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

[OnBeforeGetPropsValues] Замена списка сопоставления свойств​

Событие OnBeforeGetPropsValues вызывается только на этапе обновления существующих элементов — один раз на порцию, до цикла по элементам. Оно позволяет заменить список сопоставления «свойство Битрикс ⇄ поле МойСклад», с которым модуль будет работать на этом шаге.

Событие вызывается, если одновременно:

  • включена опция обновления свойств или загрузка картинок в свойство;
  • в порции есть элементы на обновление;
  • список сопоставления непуст.

Итоговый список модуль использует дважды:

  1. чтобы прочитать текущие значения свойств всех элементов порции (они придут в arAllPropsValues события OnSetPropsForItem);
  2. чтобы собрать и записать новые значения свойств каждого элемента — этот же список придёт в propList события OnSetPropsForItem.

На этапе создания новых элементов событие не вызывается: там модуль берёт список из настроек как есть.

Как модуль читает ответ
  • Исключение из обработчика модуль не перехватывает — оно обрывает шаг импорта. Оборачивайте код в try/catch.
  • Параметры последнего обработчика, вернувшего EventResult::SUCCESS, целиком заменяют propList. Возвращается сам массив сопоставления, без обёртки ['propList' => ...].
  • Ответы не сливаются: каждый обработчик получает исходный список модуля.
  • EventResult::ERROR игнорируется.
  • SUCCESS без параметров даёт null, который модуль передаёт в count() — на PHP 8 это TypeError. Всегда возвращайте полный массив, а если менять нечего — не возвращайте ничего.

Параметры события

ПараметрТипОписание
entitystringСущность: product, variant, bundle, service
propListarrayСписок сопоставления: ID свойства Битрикс => доп. поле или стандартное поле МойСклад

Структура propList

[
123 => 'msAttrUUID1', // ID свойства Битрикс => UUID доп. поля МойСклад
456 => 'msAttrUUID2',
789 => 'field_article', // стандартное поле МойСклад: префикс field_ + имя поля
321 => '', // свойство для дополнительных картинок — есть, если включена загрузка картинок в свойство
]

Возвращаемое значение

Верните EventResult::SUCCESS с полным новым списком сопоставления:

return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $propList);
к сведению

Запись ID => '' для свойства дополнительных картинок оставляйте в списке: по ней модуль читает текущие файлы свойства. Картинки загружаются отдельно, но их обновление опирается на эти значения.