ОДНО ИЗ РЕШЕНИЙ, С УСЛОВИЕ ЕСЛИ НА СТОРОНЕ 1С программист согласится допилить логику
Сначала перенесем все штрих кода из системного поля в свойство товара. запускаем в PHP строке, перед етим создаем свойство у инфоблока с символьным кодом "BARCODE"
Дальше, что бы все это работало в автомате, пишем обработку событий на добавление, изменение и удаление штрих кода у элемента (все это запихиваем в init.php)
Сначала перенесем все штрих кода из системного поля в свойство товара. запускаем в PHP строке, перед етим создаем свойство у инфоблока с символьным кодом "BARCODE"
Код |
---|
// у меня 3 тыс товаров по этому запускаем скрипт на весь инфоблок... if(CModule::IncludeModule("iblock") && CModule::IncludeModule("catalog")){ $IBLOCK_ID = 37; //получаем все товары у которых есть штрих код $dbBarCode = CCatalogStoreBarCode::getList(array(), array("IBLOCK_ID" => $IBLOCK_ID), false, false, $arSelect); while($arBarCode = $dbBarCode->GetNext()) { //в инфоблоке создал свойство "BARCODE", сейчас его будет заполнять if($arBarCode['BARCODE']){ //значение из системного поля штрих-код мы записываем в ствойство товара BARCODE CIBlockElement::SetPropertyValuesEx( $arBarCode['PRODUCT_ID'], $IBLOCK_ID, array('BARCODE' => $arBarCode['BARCODE'])); } } } |
Дальше, что бы все это работало в автомате, пишем обработку событий на добавление, изменение и удаление штрих кода у элемента (все это запихиваем в init.php)
Код |
---|
//регистрация событий: добвление, изменения, удаление штрих кода... AddEventHandler("catalog", "OnCatalogStoreBarCodeAdd", Array("ProProCenter", "jobBarCode")); AddEventHandler("catalog", "OnCatalogStoreBarCodeUpdate", Array("ProProCenter", "jobBarCode")); AddEventHandler("catalog", "OnBeforeCatalogStoreBarCodeDelete", Array("ProProCenter", "DeleteBarCode")); class ProProCenter { //работа с штрих кодом, при изменении или добавлении штрих кода дублируем его в свойство BARCODE function jobBarCode($lastId, $arFields) { $iblock_id = 37;//ID инфоблока if(CModule::IncludeModule("iblock") && CModule::IncludeModule("catalog")) CIBlockElement::SetPropertyValuesEx($arFields['PRODUCT_ID'], $iblock_id, array('BARCODE' => $arFields['BARCODE'])); } //удаление штрих-кода function DeleteBarCode($id) { $iblock_id = 37;//ID инфоблока if(CModule::IncludeModule("iblock") && CModule::IncludeModule("catalog")){ //по ID получаем информацию о штрих коде, до его удаления, что бы удалить штрих код в нашем свойстве $dbBarCode = CCatalogStoreBarCode::getList(array(), array("ID" => $id), false, false, $arSelect); if($arBarCode = $dbBarCode->GetNext()) { //Удаляем запись у элемента CIBlockElement::SetPropertyValuesEx($arBarCode['PRODUCT_ID'], $iblock_id, array('BARCODE' => '')); } } } } |
Нужен проект или доработка? Пиши в личку, я всегда на связи! Скайп - sangro0307