Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Обновление элемента в каталоге

00 голосов
7
Помогите пожалуйста...
Новичок в Битриксе, вопрос такой:

Нужно сделать поиск элемената в каталоге если его нет добавить, если есть то обновить...
Делаю так:
Код
$rsItems = CIBlockElement::GetList(array(),array("IBLOCK_ID" => $arUpdateValues["IBLOCK_ID"],"=NAME" => $arUpdateValues["NAME"],"PROPERTY_COMMENT" => $arUpdateValues["PROPERTY_VALUES"]["COMMENT"]),false,false,array('ID'));
                  if (!$arItem = $rsItems->GetNext())
                  {
                     $bWorkflowIncluded = CIBlock::GetArrayByID($fBlockId, "WORKFLOW") == "Y" && CModule::IncludeModule("workflow");
                     $arParams["ID"] = $oElement->Add($arUpdateValues, $bWorkflowIncluded, true, $arParams["RESIZE_IMAGES"]));
                  }            
                  else
                  {
                     ?????
                  }
}      


Там, где ?????Нужно обновить $arUpdateValues["DATE_ACTIVE_FROM"], в тех элементах которые прошли в CIBlockElement::GetList.

Помогите пожалуйста...

Заранее благодарю!!!
спросил 14 Июль, 13 от andrey2 (160 баллов)

7 Ответы

00 голосов
Может логичнее так, а то как-то не по-русски.

Код
$rsItems = CIBlockElement::GetList(array(),array("IBLOCK_ID" => $arUpdateValues["IBLOCK_ID"],"=NAME" => $arUpdateValues["NAME"],"PROPERTY_COMMENT" => $arUpdateValues["PROPERTY_VALUES"]["COMMENT"]),false,false,array('ID'));
                  if ($arItem = $rsItems->GetNext())
                  {
                     
                  }            
                  else
                  {
                    $bWorkflowIncluded = CIBlock::GetArrayByID($fBlockId, "WORKFLOW") == "Y" && CModule::IncludeModule("workflow");
                     $arParams["ID"] = $oElement->Add($arUpdateValues, $bWorkflowIncluded, true, $arParams["RESIZE_IMAGES"]));
                  }
}     


Да и посмотрите, точно ли по этому фильтру вы что-то находите.
Код
array("IBLOCK_ID" => $arUpdateValues["IBLOCK_ID"],"=NAME" => $arUpdateValues["NAME"],"PROPERTY_COMMENT" => $arUpdateValues["PROPERTY_VALUES"]["COMMENT"])
ответил 14 Июль, 13 от ZakonD3D (600 баллов)
00 голосов
Цитата
Да и посмотрите, точно ли по этому фильтру вы что-то находите.

Вас насторожило "=NAME"? - опечатка)

Да и бог с ним... Вопрос состоит, в том, как именно обновить в имеющемся элементе $arUpdateValues["DATE_ACTIVE_FROM"] при такой конструкции... ?
ответил 02 Сен, 13 от andrey2 (160 баллов)
00 голосов
ответил 30 Ноя, 13 от ZakonD3D (600 баллов)
00 голосов
Код
$rsItems->Update($PRODUCT_ID, $arLoadProductArray);

Да это то я и пытаюсь сделать... только вот два вопрса:
1) как из $rsItems вытащить айдишник записи.?
2) Все поля нужно перечислять в $arLoadProductArray или только те что нужно изменить.?
ответил 13 Март, 14 от andrey2 (160 баллов)
00 голосов
Цитата
Михаил Михайлов пишет:
Код
$rsItems->Update($PRODUCT_ID, $arLoadProductArray);


Да это то я и пытаюсь сделать... только вот два вопрса:

1) как из $rsItems вытащить айдишник записи.?

2) Все поля нужно перечислять в $arLoadProductArray или только те что нужно изменить.?


1. Вытаскивается так $arItems["ID"]
2. Только те что нужно изменить.
ответил 03 Июль, 14 от ZakonD3D (600 баллов)
00 голосов
Блииин! А я то её из $rsItems всё пытался вытащить :D

Извините за шквал глупых вопросов!!! С битриксом, очень редко имею дело...

Спасибо огромное!
ответил 04 Ноя, 14 от andrey2 (160 баллов)
00 голосов
Вообще, если собираетесь работать с Битрикс - есть смысл внимательно изучить API Инфоблоков. Они чаще всего используются при программировании.
ответил 03 Март, 15 от ZakonD3D (600 баллов)

Похожие вопросы

0 голосов
2 ответов
0 голосов
1 ответ
0 голосов
3 ответов
спросил 13 Июнь, 13 от Kane (160 баллов)
0 голосов
1 ответ
+1 голос
1 ответ
спросил 02 Март, 17 от devenge (320 баллов)