Переопределить единицу измерения Битрикс в момент обмена с 1С

Разработка
Иногда требуется переназначать логику 

//изменяем количество в Коэффициент единицы измерения: если стоит свойство
$eventManager->addEventHandler("catalog", "\Bitrix\Catalog\MeasureRatio::OnBeforeUpdate", 'MeasureRatioCustom');
//$eventManager->addEventHandler("catalog", "\Bitrix\Catalog\MeasureRatio::OnBeforeAdd", 'MeasureRatioCustom');

function MeasureRatioCustom (\Bitrix\Main\Event $event) {
    $result = new \Bitrix\Main\Entity\EventResult;
    $fields = $event->getParameter("fields");

    //получаем свойства
    $props = [];
    \CIBlockElement::GetPropertyValuesArray($props, 37, ['ID' => $fields['PRODUCT_ID']], ['CODE' => ['KOLICHESTVO_SHT_V_KOROBKE']]);

    //обновляем количество
    if(!empty($props[$fields['PRODUCT_ID']]['KOLICHESTVO_SHT_V_KOROBKE']['VALUE'])){
        $result->modifyFields(array('RATIO' => $props[$fields['PRODUCT_ID']]['KOLICHESTVO_SHT_V_KOROBKE']['VALUE']));
    }
    return $result;
}

/** В моммент выгрузки данные с 1С подменяем единицу измерения при покупки **/
$eventManager->addEventHandler("catalog", "\Bitrix\Catalog\Product::OnAfterUpdate", "ProductOnAfterUpdateCustom");
function ProductOnAfterUpdateCustom(\Bitrix\Main\Event $event) {
    $primary = $event->getParameter("id");
    $fields = $event->getParameter("fields");

    $props = [];
    \CIBlockElement::GetPropertyValuesArray($props, $fields['IBLOCK_ID'], ['ID' => $primary['ID']], ['CODE' => ['KOLICHESTVO_SHT_V_KOROBKE']]);
    //Обновляем RATIO если количество указано в свойстве другое
    if($props[$primary['ID']]['KOLICHESTVO_SHT_V_KOROBKE']['VALUE']){
        $data = \Bitrix\Catalog\MeasureRatioTable::getList([
            'select' => array('ID', 'RATIO', 'PRODUCT_ID'),
            'filter' => array('=PRODUCT_ID' => $primary['ID'])
        ])->;fetch();
        \Bitrix\Catalog\MeasureRatioTable::update(
            $data["ID"], [
                'PRODUCT_ID' => $primary['ID'],
                'RATIO' => $props[$primary['ID']]['KOLICHESTVO_SHT_V_KOROBKE']['VALUE'],
            ]
        );
    }
}


Похожие статьи

Сергей Эсауленко
Сергей Эсауленко

Руководитель

01.10.2025
Разработка
Как правильно дорабатывать продукты Аспро, чтобы они оставались обновляемыми
Сергей Эсауленко
Сергей Эсауленко

Руководитель

07.12.2023
Разработка
Автоматические перенаправление со штатной системы оплат Битрикса
Сергей Эсауленко
Сергей Эсауленко

Руководитель

08.09.2023
Разработка
Обмен с 1С по http когда сайт работает по https
Сергей Эсауленко
Сергей Эсауленко

Руководитель

20.06.2023
Разработка
Преобразователь свойства CML2_TRAITS (из 1С) в 1С-Битрикс
Сергей Эсауленко
Сергей Эсауленко

Руководитель

02.05.2023
Разработка
Как исправить отображение картинок в соцсетях