inkShio
@inkShio

Как добавить данные при добавлении или изменении элемента в Битриксе?

Всем привет, пытаюсь сделать обновление значение свойства элемента при обновлении или добавление элемента, но что то не понимаю почему не работает. Почитал документацию, погуглил и т.д. но так и не понял как сделать и что делаю не так. Примеры из документации почему то тоже не сработали. Пробовал это сделать через SetPropertyValuesEx и через Update. Но без результатно.
Есть поле
646ca39670a4b582550403.jpeg
Все что осталось из перепробованых вариантов
// init.php

function testUpdateElement(&$arFields) {
	if ($arFields['IBLOCK_ID'] == 8) {
		if(CModule::IncludeModule('iblock')) {
			//- v1 
			//CIBlockElement::SetPropertyValuesEx($arFields['ID'], $arFields['IBLOCK_ID'], array(172 => '0:00'));
			//- v2
			//CIBlockElement::SetPropertyValuesEx(932, 8, array('TESTTEST' => '0:00'));

			$PROPERTY_VALUE = array (
				'n0' => array (
					'VALUE' => '0:00',
				)
			);
			CIBlockElement::SetPropertyValuesEx(932, 8, array(172 => $PROPERTY_VALUE));
		}
		AddMessage2Log($arFields);
	}
}

AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "testUpdateElement");
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "testUpdateElement");

Это то что в логах
646ca4402da24427574523.jpeg

P.S. с битриксом только начал знакомство.
  • Вопрос задан
  • 296 просмотров
Пригласить эксперта
Ответы на вопрос 2
@koder_1
Битрикс программист
Если используются события before, не нужно вызывать функцию CIBlockElement::SetPropertyValuesEx,
вместо нее нужно задавать новое значение в массив $arFields.
Ответ написан
Комментировать
@tgarl
а почему вы используете в строковом значении массив
раз у вас свойство строка, то и значение должно быть строковое
CIBlockElement::SetPropertyValuesEx(932, 8, array('TESTTEST' => '0:00'));

так же вы указываете 932 - это id элемента который будет изменятся, соответсвенно если вы вдруг удалили этот элемент и создаете новый, то изменений или не будет или их нужно будет смотреть только в элементе 932
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы