Как склонировать товар при событии обновления/добавления элемента каталога?

Для того чтобы склонировать товар при событии обновления или добавления элемента каталога в CMS 1C-Bitrix, вам потребуется выполнять следующие шаги:

1. Напишите обработчик события, который будет реагировать на событие обновления или добавления элемента каталога. Для этого используйте функцию AddEventHandler в файле init.php вашего шаблона или в файле init.php основной директории вашего сайта. Например:

AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "CloneProduct");
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "CloneProduct");

function CloneProduct(&$arFields) {
    //Проверяем, является ли элемент каталога
    if ($arFields["IBLOCK_ID"] == ID_ВАШЕГО_КАТАЛОГА) {
        //Получаем данные о товаре
        $product = CIBlockElement::GetByID($arFields['ID'])->GetNext();
        //Создаем новый элемент каталога
        $newProduct = new CIBlockElement;
        $newProductFields = array(
            //Копируем нужные поля товара
            "IBLOCK_ID" => $product['IBLOCK_ID'],
            "IBLOCK_SECTION_ID" => $product['IBLOCK_SECTION_ID'],
            "NAME" => $product['NAME'],
            "DETAIL_TEXT" => $product['DETAIL_TEXT'],
            //...
        );
        //Добавляем новый элемент каталога
        $newProductId = $newProduct->Add($newProductFields);
        if ($newProductId) {
            //Теперь мы можем обновить оригинальный товар, чтобы сохранить информацию о том, что он был склонирован
            CIBlockElement::SetPropertyValuesEx($product['ID'], $product['IBLOCK_ID'], array('CLONED_PRODUCT_ID' => $newProductId));
        }
    }
}

Здесь мы используем события OnBeforeIBlockElementAdd и OnBeforeIBlockElementUpdate, чтобы перехватить события добавления и обновления элемента каталога соответственно. В обработчике CloneProduct мы проверяем, что элемент является элементом каталога, затем получаем данные о товаре, создаем новый элемент каталога и копируем необходимые поля в новый элемент. Затем мы добавляем новый элемент каталога и обновляем оригинальный элемент, чтобы сохранить информацию о том, что он был склонирован.

2. Не забудьте заменить ID_ВАШЕГО_КАТАЛОГА на ID своего каталога.

3. После того как вы добавили код в нужные файлы, сохраните их и перезагрузите страницу вашего сайта.

Теперь, при каждом обновлении или добавлении элемента каталога, будет создаваться его копия.