"Здравствуйте. Столкнулся со следующей проблемой:
Есть обработчик события "OnBeforeIBlockElementUpdate"
привожу его код:
Суть задачи в том, что необходимо при обновленииэлемента проверять установлено ли значение свойства флага, и если да то менять значение свойства AUTO_SORT на 100000, "запоминая" при этом текущее значение AUTO_SORT в специальное свойство. В противном случае (если свойство - флаг не установлено) восстанавливать значение свойства AUTO_SORT в прежнее значение, которое было сохранено. Обработчик выполняется, но почему-то вызовы
не дают результата. Пробовал заменить их на
CIBlockElement::SetPropertyValuesEx
но они тоже не срабатывают. В чем может быть дело? При этом
срабатывает нормально.
Есть обработчик события "OnBeforeIBlockElementUpdate"
| Код |
|---|
//bitrix/php_interface/init.php
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", array("SortOrderManager", "updateSortHandler")); |
привожу его код:
| Код |
|---|
class SortOrderManager {
public function updateSortHandler(&$arFields) {
$flagPropertyId = 100;
$memoryIndexPropertyId = 119;
if (!empty($arFields['PROPERTY_VALUES'][$flagPropertyId])) {
foreach ($arFields['PROPERTY_VALUES'][$memoryIndexPropertyId] as $key => $value) {
if (is_array($value) && array_key_exists("VALUE", $value) ) {
$arrKey = $key;
}
}
$res = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields['ID'], array(), array("CODE" => "AUTO_SORT"));
if ($ob = $res->GetNext())
{
$arFields['PROPERTY_VALUES'][$memoryIndexPropertyId][$arrKey]['VALUE'] = $ob['VALUE'];
}
CIBlockElement::SetPropertyValueCode($arFields['ID'], "AUTO_SORT", "1000000");
} else {
foreach ($arFields['PROPERTY_VALUES'][$memoryIndexPropertyId] as $key => $value) {
if (is_array($value) && array_key_exists("VALUE", $value) ) {
$rememberedSortIndex = $value['VALUE'];
$arrKey = $key;
}
}
CIBlockElement::SetPropertyValueCode($arFields['ID'], "AUTO_SORT", $rememberedSortIndex);
}
}
// ...
} |
| Код |
|---|
CIBlockElement::SetPropertyValueCode($arFields['ID'], "AUTO_SORT", $rememberedSortIndex); |
CIBlockElement::SetPropertyValuesEx
но они тоже не срабатывают. В чем может быть дело? При этом
| Код |
|---|
$res = CIBlockElement::GetProperty |