Код |
---|
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnAfterIBlockElementAddHandler");
function OnAfterIBlockElementAddHandler(&$arFields)
{
CModule::IncludeModule("iblock");
CModule::IncludeModule("main");
CModule::IncludeModule("sale");
CModule::IncludeModule("catalog");
$IBLOCK_ID = 2;
$ID = $_SESSION["COPY_ITEM"];
CModule::IncludeModule("main");
CModule::IncludeModule("iblock");
\Bitrix\Catalog\ProductTable::add([
'ID' => $arFields['ID'],
'TYPE' => 3,
'AVAILABLE' => 'Y'
]);
$arSelect = [];
$rsOffers = CIBlockElement::GetList(array(),array('IBLOCK_ID' => 3, 'PROPERTY_CML2_LINK' => $ID), false, false, $arSelect);
while ($arOffer = $rsOffers->GetNextElement())
{
$arFieldss = $arOffer->GetFields();
$arProps = $arOffer->GetProperties();
foreach ($arProps as $key => $value) {
$PROP[$value['CODE']] = $value['VALUE'];
}
$PROP['CML2_LINK'] = $arFields['ID'];
$arLoadProductArray = Array(
"IBLOCK_SECTION_ID" => false,
"IBLOCK_ID" => 3,
"PROPERTY_VALUES"=> $PROP,
"NAME" => $arFields["NAME"],
"ACTIVE" => "Y"
);
$adds[] = $arLoadProductArray;
}
$ell = new CIBlockElement;
foreach ($adds as $key => $add) {
$ell->Add($add);
}
}
|
Задача довольно простая. Заказчик просит для удобства заполнения, копировать товар с ТП вместе с ТП. То есть после нажатия кнопки копировать, открывается форма добавления товара с?action="copy"
Идеально было бы появление уже разлоченного таба ТП с предзаполненными ТП, для редактирования и сохранения. Нашёл условие в карточке редактирования элемента инфоблока -> появилась активная вкладка, если предзаполнять ТП может === какой то длинный путь, с обновлением слетит.
OnAfterIBlockElementAdd - воспользовался событием.
Улетает в 504, добавляя по БД торговые и элемент.
Какие возможные решения существую? Функционал Joomla, заказчик хочет переехать на Битрикс.
.