Добрый день!
Суть такая: я добавил новое свойство в инфоблок с торговыми предложениями, назвал его "Главное торговое предложение"(GLAVNOE_TP), тип чекбокс. Необходимо сделать чтобы только одно торговое предложение(внутри товара) являлось главным.
Я создал обработчик событий. в нем по id товара могу получить список всех торговых предложений
Я нашел методы с помощью которых можно получить и изменить созданное свойство, если их подставить в обработчик, но в примере я указал id "жестко"(Картинка с результатом ниже):
Нужно сделать чтобы когда выбирали какое-то главное ТП(отловить ID торгового предложения) у всех остальных статус был равен НЕТ, а у главного соответственно ДА. не знаю, как это реализовать в обработчике.Заранее благодарен
Суть такая: я добавил новое свойство в инфоблок с торговыми предложениями, назвал его "Главное торговое предложение"(GLAVNOE_TP), тип чекбокс. Необходимо сделать чтобы только одно торговое предложение(внутри товара) являлось главным.
Я создал обработчик событий. в нем по id товара могу получить список всех торговых предложений
Код |
---|
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", array("myClassN", "myFuncN"));class myClassN { function myFuncN(&$arFields) { $isProduct = CCatalogSKU::GetInfoByProductIBlock($arFields['IBLOCK_ID']); // отсюда берем - $arFields['IBLOCK_ID'] = 14 // Фильтр данных $arFilter = array( 'IBLOCK_ID' => $isProduct['IBLOCK_ID'], 'PROPERTY_' . $isProduct['SKU_PROPERTY_ID'] => $arFields['ID'] // $arFields['ID'] - это ID товара ); // Выберем перечень полей, которые нам необходимы $arSelect = array( 'ID', 'IBLOCK_ID' ); //получим список торговых предложений внутри товара $rsOffers = CIBlockElement::GetList( array(), //сортировка $arFilter, //фильтр данных false, //группировка данных false, //постраничная навигация $arSelect //необходимые поля ); $offers_tp = []; //массив для торговых предложений while ($arOffer = $rsOffers->GetNext()) { $offers_tp[] = $arOffer['ID']; //получился один массив с ID торговых предложений } } } |
Код |
---|
$db_props = CIBlockElement::GetProperty($isProduct['IBLOCK_ID'], 1358, array(), array("CODE" => "GLAVNOE_TP")); if ($ar_props = $db_props->GetNext()) { $status = 1; if (($ar_props['VALUE'] == 0)) { CIBlockElement::SetPropertyValuesEx(3757, $isProduct['IBLOCK_ID'], array("GLAVNOE_TP" => array("VALUE" => $status))); } } |
Нужно сделать чтобы когда выбирали какое-то главное ТП(отловить ID торгового предложения) у всех остальных статус был равен НЕТ, а у главного соответственно ДА. не знаю, как это реализовать в обработчике.Заранее благодарен