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

Глючит Битрикс API

00 голосов
7
подскажите почему апи код в двух местах может работать по разному,

Код
      $el = new CIBlockElement;
      $PROP = array();
      
      $PROP[205] = func($s);
      $PROP[207] = 15;
      $PROP[206] = 'Y';
      $arLoadProductArray = Array(
            "MODIFIED_BY"    => $USER->GetID(), 
            "IBLOCK_SECTION_ID" => $_GET['SECTION_ID'],
            "IBLOCK_ID"      => 55, 
            "PROPERTY_VALUES"=> $PROP,
            "NAME"           => $name,  
            "ACTIVE"         => "N",
         );
      
      if($PRODUCT_ID = $el->Add($arLoadProductArray)){

         echo "New ID: ".$PRODUCT_ID;
      }else{
         echo "Error: ".$el->LAST_ERROR;
      }


в одном месте все нормально работает, а в другом элемент создается, но у него отсутствуют пользовательские свойства, в чем может быть причина? в обоих случаях массивы формируются одинаковые, но обрабатываются почему то по разному
спросил 04 Авг, 13 от LACOSTE88 (160 баллов)

7 Ответы

00 голосов
переопределяли ли Вы где-то функции OnAfterIBlockElementAdd или OnBeforeIBlockElementAdd?
ответил 04 Авг, 13 от XpoHo3aBp (860 баллов)
00 голосов
нет
ответил 04 Окт, 13 от LACOSTE88 (160 баллов)
00 голосов
Чем отличаются места где они вызываются? В каких функция этот код вызывается?
ответил 04 Янв, 14 от XpoHo3aBp (860 баллов)
00 голосов
он вызывается не в функциях а прямо на станице вида имя.пхп отличия тока вот в чем:
1) в первой этот файл с кодом подключается из другого файла..
2) во втором файле перед добавлением элемента сначала один удаляется и если он удаление прошло успешно, то добавляем новый элемент
ответил 21 Апр, 14 от LACOSTE88 (160 баллов)
00 голосов
массив $arLoadProductArray такой как надо? внутрь его смотрели
Код
$arLoadProductArray = Array(
            "MODIFIED_BY"    => $USER->GetID(),
            "IBLOCK_SECTION_ID" => $_GET['SECTION_ID'],
            "IBLOCK_ID"      => 55,
            "PROPERTY_VALUES"=> $PROP,
            "NAME"           => $name,  
            "ACTIVE"         => "N",
         );
      echo '<pre>'; print_r($arLoadProductArray); echo '</pre>'; 
      if($PRODUCT_ID = $el->Add($arLoadProductArray)){ 
как-то так
ответил 15 Авг, 14 от XpoHo3aBp (860 баллов)
00 голосов
Да, там везде все заполнено одинаково, да кстати, в другом блоке сайта точно такой же код с удалением и добавлением нового элемента работает без проблем, код один в один, отличается только айдишниками свойств и инфоблоков
ответил 20 Дек, 14 от LACOSTE88 (160 баллов)
00 голосов
немного разобрался в чем прикол:
битрикс начинает выдавать подобные фокусы после удаления объекта, если убрать удаление то все работает нормально

может кто сталкивался с такими проблемами?
ответил 10 Апр, 15 от LACOSTE88 (160 баллов)

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

0 голосов
2 ответов
спросил 18 Март, 14 от GIN1 (200 баллов)
0 голосов
8 ответов
спросил 26 Июнь, 13 от Ogyrez (240 баллов)
0 голосов
6 ответов
спросил 28 Май, 13 от wogich (630 баллов)
0 голосов
7 ответов
спросил 20 Авг, 13 от Kania (5,180 баллов)