Добрый день!
Суть такая: я добавил новое свойство в инфоблок с торговыми предложениями, назвал его "Главное торговое предложение"(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 торгового предложения) у всех остальных статус был равен НЕТ, а у главного соответственно ДА. не знаю, как это реализовать в обработчике.Заранее благодарен