Добрый день.
Настроил выгрузку товаров из 1с УП в один инфо-блок, а так же выгрузку брендов в другой блок.
Прошу подсказать, так как не могу найти инструкции по обращению с HL блоками.
Как мне изменить свой код под выгрузку именно в hl блок.
[CODE]AddEventHandler("catalog", "OnBeforeProductUpdate", "MyOnBeforeProductUpdate");
AddEventHandler("catalog", "OnBeforeProductAdd", "MyOnBeforeProductAdd");
function MyOnBeforeProductUpdate($ID, $arFields)
{
$element = CCatalogProduct::GetByIDEx($ID);
ModifyProduct($ID, $element);
}
function MyOnBeforeProductAdd($arFields)
{
$element = CCatalogProduct::GetByIDEx($arFields["ID"]);
ModifyProduct($arFields["ID"], $element);
}
function ModifyProduct($ID, $element)
{
$ELEMENT_ID = $ID;
$PROPERTY_CODE = "MANUFACTURER";
$PROPERTY_VALUE = "";
$MANUFACTURER_ELEMENT_ID = 10;
$dbr = CIBlockElement::GetList(array(), array("=ID"=>$ELEMENT_ID), false, false, array("ID", "IBLOCK_ID"));
if ($dbr_arr = $dbr->Fetch())
{
$CML2_MANUFACTURER = $element["PROPERTIES"]["CML2_MANUFACTURER"]["VALUE_ENUM"];
$CML2_MANUFACTURER_XML_ID = $element["PROPERTIES"]["CML2_MANUFACTURER"]["VALUE_XML_ID"];
$dbrp = CIBlockElement::GetList(array(), array("=EXTERNAL_ID"=>$CML2_MANUFACTURER_XML_ID), false, false, array());
if ($dbrp->Fetch() === false) {
$el = new CIBlockElement;
$fields = array(
'IBLOCK_ID' => 10,
'NAME' => $CML2_MANUFACTURER,
'ACTIVE' => "Y",
'SEARCHABLE_CONTENT' => $CML2_MANUFACTURER,
'CREATED_BY' => '1',
'MODIFIED_BY' => '1',
'DATE_CREATE' => time(),
'CODE' => $CML2_MANUFACTURER_XML_ID,
'EXTERNAL_ID' => $CML2_MANUFACTURER_XML_ID
);
$PROPERTY_VALUE = $el->Add($fields);
if (!$PROPERTY_VALUE) {
AddMessage2Log("Error[" . $PROPERTY_VALUE . "]: " . $el->LAST_ERROR . '<br />');
}
}
$dbrp = CIBlockElement::GetList(array(), array("=EXTERNAL_ID"=>$CML2_MANUFACTURER_XML_ID), false, false, array());
if ($dbrp_arr = $dbrp->Fetch())
{
$PROPERTY_VALUE = $dbrp_arr["ID"];
}
$IBLOCK_ID = $dbr_arr["IBLOCK_ID"];
CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);
}[/CODE]
Методом изменения iblock в block - не прокатывает.
Настроил выгрузку товаров из 1с УП в один инфо-блок, а так же выгрузку брендов в другой блок.
Прошу подсказать, так как не могу найти инструкции по обращению с HL блоками.
Как мне изменить свой код под выгрузку именно в hl блок.
[CODE]AddEventHandler("catalog", "OnBeforeProductUpdate", "MyOnBeforeProductUpdate");
AddEventHandler("catalog", "OnBeforeProductAdd", "MyOnBeforeProductAdd");
function MyOnBeforeProductUpdate($ID, $arFields)
{
$element = CCatalogProduct::GetByIDEx($ID);
ModifyProduct($ID, $element);
}
function MyOnBeforeProductAdd($arFields)
{
$element = CCatalogProduct::GetByIDEx($arFields["ID"]);
ModifyProduct($arFields["ID"], $element);
}
function ModifyProduct($ID, $element)
{
$ELEMENT_ID = $ID;
$PROPERTY_CODE = "MANUFACTURER";
$PROPERTY_VALUE = "";
$MANUFACTURER_ELEMENT_ID = 10;
$dbr = CIBlockElement::GetList(array(), array("=ID"=>$ELEMENT_ID), false, false, array("ID", "IBLOCK_ID"));
if ($dbr_arr = $dbr->Fetch())
{
$CML2_MANUFACTURER = $element["PROPERTIES"]["CML2_MANUFACTURER"]["VALUE_ENUM"];
$CML2_MANUFACTURER_XML_ID = $element["PROPERTIES"]["CML2_MANUFACTURER"]["VALUE_XML_ID"];
$dbrp = CIBlockElement::GetList(array(), array("=EXTERNAL_ID"=>$CML2_MANUFACTURER_XML_ID), false, false, array());
if ($dbrp->Fetch() === false) {
$el = new CIBlockElement;
$fields = array(
'IBLOCK_ID' => 10,
'NAME' => $CML2_MANUFACTURER,
'ACTIVE' => "Y",
'SEARCHABLE_CONTENT' => $CML2_MANUFACTURER,
'CREATED_BY' => '1',
'MODIFIED_BY' => '1',
'DATE_CREATE' => time(),
'CODE' => $CML2_MANUFACTURER_XML_ID,
'EXTERNAL_ID' => $CML2_MANUFACTURER_XML_ID
);
$PROPERTY_VALUE = $el->Add($fields);
if (!$PROPERTY_VALUE) {
AddMessage2Log("Error[" . $PROPERTY_VALUE . "]: " . $el->LAST_ERROR . '<br />');
}
}
$dbrp = CIBlockElement::GetList(array(), array("=EXTERNAL_ID"=>$CML2_MANUFACTURER_XML_ID), false, false, array());
if ($dbrp_arr = $dbrp->Fetch())
{
$PROPERTY_VALUE = $dbrp_arr["ID"];
}
$IBLOCK_ID = $dbr_arr["IBLOCK_ID"];
CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);
}[/CODE]
Методом изменения iblock в block - не прокатывает.