<?/** Обновляет записи значений свойств элемента инфоблока */ 

//Константы помогающие снизить нагрузку на сайт
define('NO_KEEP_STATISTIC', true);// крон определяет собирать статистику или нет (по умолчанию false - собирать)
define('NOT_CHECK_PERMISSIONS',true);//не учитывать уровни доступа (по умолчанию false - учитывать)
define('NO_AGENT_CHECK', true);//заставляет агенты запускаться, не давая переопределить константу NO_AGENT_CHECK (по умолчанию false - учитывать)

require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');

use Bitrix\Main\{Loader,Application};

$request = Application::getInstance()->getContext()->getRequest();

if($request->isPost() && $request->getPost('VALUE') != '')
{
    Loader::includeModule("iblock");

    $arData['ITEM_ID'] = $request->getPost('ITEM_ID');// id element
    $arData['UPD_FIELD'] = $request->getPost('UPD_FIELD');//name value
    $arData['VALUE'] = $request->getPost('VALUE');//value
    $arData['TYPE'] = $request->getPost('TYPE');//type element
    $arData['ENUM'] = $request->getPost('ENUM');//name enum

    if($arData['TYPE'] == 'SU')//для полей инфоблока
    {
        $data = [
             $arData['UPD_FIELD'] => $arData['VALUE'],
             "IBLOCK_ID" => I_OURSHOPS,
        ];

        $el = new CIBlockElement;
        $result = $el->Update($arData['ITEM_ID'], $data);

        $arResult['status'] = true;
        $arResult['result'] = $result;       
    }
    elseif($arData['TYPE'] == 'SV')//для свойств инфоблока
    {
        CIBlockElement::SetPropertyValuesEx($arData['ITEM_ID'], false, [$arData['UPD_FIELD']=>$arData['VALUE']]);

        $arResult['status'] = true;
        $arResult['result'] = 'Обновление записи прошло успешно';       
    }
    elseif($arData['TYPE'] == 'SE')//для свойств инфоблока типа список с 1м значением
    {
       if($arData['VALUE'] != 'Y')
       {
           $arData['ENUM'] = '';
       }

        CIBlockElement::SetPropertyValuesEx($arData['ITEM_ID'], false, ['PICKUP'=>$arData['ENUM']]);

        $arResult['status'] = true;
        $arResult['result'] = 'Обновление записи прошло успешно';       
    }
    else
    {
        $arResult['status'] = false;
        $arResult['result'] = 'SAVE ERROR';       
    }
}
else
{
    $arResult['status'] = false;
    $arResult['result'] = 'SAVE ERROR';  
}

echo json_encode($arResult);

require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_after.php');