Евгений Дорохов, не знаю, я другого способа не вижу. Создал, только вот добавляет два раза Вот код.
| Код |
|---|
// регистрируем обработчик
AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("Copy_news", "OnAfterIBlockElementAddHandler"));
class Copy_news
{
// создаем обработчик события "OnAfterIBlockElementAdd"
function OnAfterIBlockElementAddHandler(&$arFields)
{
if ($arFields["ID"]>0 && $arFields["IBLOCK_ID"] == 116)
{
if (!CModule::IncludeModule("iblock"))
{
AddMessage2Log("Не найден модуль инфоблоков.");
}
else
{
$copy_el = new CIBlockElement;
$arLoadProductArray = Array(
"CREATED_BY" => $arFields["CREATED_BY"],
"IBLOCK_SECTION" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 121, // Номер информационного блока, куда будет скопирован элемент
"NAME" => $arFields["NAME"],
"ACTIVE" => $arFields["ACTIVE"], // активен
"DATE_ACTIVE_FROM" => $arFields["DATE_ACTIVE_FROM"], // активен
"PREVIEW_TEXT" => $arFields["PREVIEW_TEXT"],
"PREVIEW_TEXT_TYPE" => $arFields["PREVIEW_TEXT_TYPE"],
"DETAIL_TEXT" => $arFields["DETAIL_TEXT"],
"DETAIL_TEXT_TYPE" => $arFields["DETAIL_TEXT_TYPE"],
"DETAIL_PICTURE" => $arFields["DETAIL_PICTURE"],
"DETAIL_PAGE_URL" => $arFields["DETAIL_PAGE_URL"]
);
if(!$PRODUCT_ID = $copy_el->Add($arLoadProductArray))AddMessage2Log("Ошибка добавления записи (".$copy_el->LAST_ERROR.").");
}
}
}
}
|
Обработчик срабатывает на любое добавление элемента, я постарался избежать этого с помощью проверки идентификатора инф блока, но всё равно нужно ещё как-то доработать, так как срабатывает два раза, пир создании в исходном инфоблоке, и при копировании в нужный. Долго мучился, может подскажет кто как решить?
P.S. Поля не все, только те, которые нужно конкретно мне..