Меню

Доброго дня! Помогите, не могу разобраться с работой события

RSS
Доброго дня! Помогите, не могу разобраться с работой события, Значение свойства элемента записывается со второго раза
 
Что я делаю не так? В коде ниже в переменную $bxrecRatingVal значение "прилетает" только со второго раза. Т.е. я открываю редактирование элемента, заполняю значение свойства, нажимаю сохранить - в переменной пусто. Захожу снова в редактирование элемента и ничего не меняя жму "Сохранить" ещё раз и тогда в переменную попадает заданное мной значение.





Код
<?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)) {
                        $startRatingCalc = number_format(1000 + 50 * log($bxrecRatingVal), 2, ',', ' ');
                    
                            CIBlockElement::SetPropertyValueCode($arFields['ID'], "ATT_RBX_RT", $startRatingCalc);

                    }
                }
            }
        }
    }
    ?>
 
Событие запускается при обновлении элемента "OnAfterIBlockElementUpdate" - именно обновление существующего.
Отработайте и "OnAfterIBlockElementAdd" - добавление
Код
Событие "OnAfterIBlockElementAdd" вызывается после попытки добавления нового элемента информационного блока методом CIBlockElement::Add. 
Работает вне зависимости от того были ли созданы/изменены элементы непосредственно, поэтому необходимо дополнительно проверять параметр: RESULT_MESSAGE.Параметры
 
А, не внимательно прочитал- итак редактируете существующий элемент.
Но свой поссаж оставлю- мало ли кому пригодится, при добавлении элемента.

У вас, вот эта проверка точно выполняется корректно?
Код
 if (!empty($bxrecRatingVal))
Изначально, свойство- видимо пустое. На второй итерации сохранения, как раз уже не пустое и задача выполняется.
 
Разобрался.

$bxRecRatingVal = $ar_props['VALUE'];
Изменено: pavelmbx@gmail.com - 08.11.2019 01:27:30
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 

Блог-note: заметки разработчика

Малая корзина Битрикс, упрощенный шаблон

Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке интернет-магазина. Код окульту...

Сортировать товары по названию, цене и свойствам в каталоге 1С-Битрикс

Задача: реализовать возможность сортировки товаров в разделах каталога. Сортировка должна работать с использованием AJAX...

Cordova, ввод в input под диктовку. Голосовой поиск в мобильном приложении.

Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам нужно захватить речь с микроф...

Отфильтровать элементы в Битрикс по свойству привязка к разделам

При создании достаточно сложных интернет-магазинов на Битрикс, иногда встает задача помимо обычной навигации каталогу со...

Изменить размер картинок на лету в битрикс

Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздела дизайн. Само собой, перезали...

Показать доступный остаток каждого товара в корзине 1С-Битрикс

Задача: показать остаток каждого товара в корзине 1С-Битрикс, что бы покупатель сразу знал предельное колличество товара...

Регистрация пользователя в определенную группу сайта на Битрикс

Достаточно часто требуется регистрировать пользователя в определенную группу, в зависимости от того какую форму регистра...

Показать выбранные параметры умного фильтра над товарами, с возможностью отмены выбора

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

Заполнить свойство заказа выбранным пунктом самовывоза и передать в 1С

Задача: При оформлении заказа пользователь может выбрать пункт самовывоза (склады магазина). Нужно заполнить сво...