Добрый день. Импортирую элементы каталога из csv файла. Перед добавлением хочу изменить некоторые поля. Вешаю на обработчик функцию:
Код
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyClass", "OnBeforeIBlockElementAddHandler"));
class MyClass
{
function OnBeforeIBlockElementAddHandler($arFields)
{
// тут я хочу изменить некоторые $arFields[PROPERTY_VALUES]
}
}
Но почему то в $arFields присутствуют только стандартные свойства элемента, $arFields[PROPERTY_VALUES] почему то пустой, хотя все делал по документации. То же самое пытался сделать OnAfterIBlockElementAdd, результат тот же. Пробовал и OnBeforeIBlockElementUpdate, но это событие видимо не вызывается во время добавления. При добавлении элемента вручную из админки $arFields[PROPERTY_VALUES] существует и наполнен. Помогите разобраться. Как можно изменить свойства при импорте? Заранее спасибо
Судя по всему, при импорте свойства добавляются отдельно через SetProperty. Можно посмотреть в исходном коде импорта, но мне кажется, что там очень много кода и долго разбираться.
А вот OnBeforeIBlockElementUpdate как раз должен бы вызываться во время обновления свойства элемента.
Может быть, в вашем случае стоит еще посмотреть OnBeforeProductUpdate.
OnBeforeProductUpdate не срабатывает. Зато срабатывает OnBeforeProductAdd. Но там в $arFields есть только ID, хотя если верить документации, то там должна быть еще как минимум цена. Как же достучаться до свойств?
Да, вроде не работает изменение свойств в $arFields перед добавлением элемента при csv-импорте, у меня вот так работает на одном сайте, но это года два назад я делал, давно уже импорт не делал и не проверял, но должен работать код.