Помогите разобраться! При обновлении элемента инфоблока Битрикс, по событию должно присваиваться значение. Если изначально поле значения пустое, то код не работает. Точнее срабатывает со второго раза. Нужно зайти в изменение элемента и нажать "сохранить" без изменения значения.
<?php
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("StartRatingUpdate", "Update"));
class StartRatingUpdate
{
function Update(&$arFields)
{
if ($arFields['IBLOCK_ID'] == BOXER_IBLOCK_ID) {
$db_props = CIBlockElement::GetProperty(
$arFields['IBLOCK_ID'],
$arFields['ID'],
['sort' => 'asc'],
['CODE' => 'ATT_BXREC_RT']
);
if ($ar_props = $db_props->Fetch()) {
$bxrecRatingVal = $arFields['PROPERTY_VALUES'][$ar_props["ID"]][$ar_props["PROPERTY_VALUE_ID"]]['VALUE'];
if (!empty($bxrecRatingVal)) {
$arFields['PROPERTY_VALUES'][$ar_props["ID"]][$ar_props["PROPERTY_VALUE_ID"]]['VALUE'] = 'HELLO!';
}
}
}
}
}
?>
Попробуйте так:
<?php
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("StartRatingUpdate", "Update"));
class StartRatingUpdate
{
function Update(&$arFields)
{
if ($arFields['IBLOCK_ID'] == BOXER_IBLOCK_ID) {
$db_props = CIBlockElement::GetProperty(
$arFields['IBLOCK_ID'],
$arFields['ID'],
['sort' => 'asc'],
['CODE' => 'ATT_BXREC_RT']
);
if ($ar_props = $db_props->Fetch()) {
CIBlockElement::SetPropertyValueCode($arFields['ID'], "ATT_BXREC_RT", 'HELLO!');
}
}
}
}
?>
Обратите внимание! Вот ссылка на мануал метода SetPropertyValues
В вашем случае использован кусок кода из Пример 2 (код вызова метода для свойства типа "Строка") т.е. это работает если свойство куда будет записываться значение имеет тип "Строка"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
в базе mysql поле Usloviya просто текст (это одно поле):
на вход поступает объект, нужно записать в сsv файл, преобразовав объект в массив