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

Помогите с CIBlockElement::Add

00 голосов
3
При добавлении блока формирую массив:
Код
$arLoadProductArray = Array(
            "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
            "IBLOCK_SECTION_ID" => 141,          // элемент лежит в корне раздела
            "IBLOCK_ID"      => $IBLOCK_ID,
            "NAME"           => $fName,
            "ACTIVE"         => "Y",            // активен
            "PREVIEW_TEXT"   => "",
            "DETAIL_TEXT"    => "",
            "DETAIL_PICTURE" => "",
            "CODE"           => ""
        );
        $ELM_ID = $el->Add($arLoadProductArray);


Элемент добавляется, но лежит в корневом разделе, хотя я и указаю группу 141.

При этом в базе в таблице `b_iblock_element` IBLOCK_SECTION_ID = 141.

Почему то не заносится запись в таблицу `b_iblock_section_element`. Когда я занес информацию туда самостоятельно, то все заработало как надо.

Подскажите может я что-то не указал в параметрах CIBlockElement::Add() или надо вызывать что-то еще?
спросил 05 Окт, 13 от FarAway (340 баллов)

3 Ответы

00 голосов
может просто не IBLOCK_SECTION_ID, а IBLOCK_SECTION надо передавать?
сейчас посмотрел в функции Add. и не нашел обработки IBLOCK_SECTION_ID. Зато есть обработка IBLOCK_SECTION.
Цитата

if(is_set($arFields, "IBLOCK_SECTION"))
{
CIBlockElement::SetElementSection($ID, $arFields["IBLOCK_SECTION"]);
// CIBlockElement::RecalcSections($ID);
}
ответил 19 Окт, 13 от Kalendar (140 баллов)
00 голосов
Код

<?
$el = new CIBlockElement;

$PROP = array();
$PROP[12] = "Белый";  // свойству с кодом 12 присваиваем значение "Белый"
$PROP[3] = 38;        // свойству с кодом 3 присваиваем значение 38

$arLoadProductArray = Array(
  "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
  "IBLOCK_SECTION" => false,          // элемент лежит в корне раздела
  "IBLOCK_ID"      => 18,
  "PROPERTY_VALUES"=> $PROP,
  "NAME"           => "Элемент",
  "ACTIVE"         => "Y",            // активен
  "PREVIEW_TEXT"   => "текст для списка элементов",
  "DETAIL_TEXT"    => "текст для детального просмотра",
  "DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
  );

if($PRODUCT_ID = $el->Add($arLoadProductArray))
  echo "New ID: ".$PRODUCT_ID;
else
  echo "Error: ".$el->LAST_ERROR;
?>


это пример из документации
ответил 22 Янв, 14 от salo (840 баллов)
00 голосов
CIBlockElement::SetElementSection(
int ID,
array arSections,
bool bNew = false
);

Функция привязывает элемент информационного блока к группам (очень нежелательно трогать бд mysql запросами "вручную" изза такой мелочи).

http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/setelementsection.php
ответил 10 Май, 14 от Ponda (100 баллов)

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

0 голосов
2 ответов
0 голосов
6 ответов
спросил 26 Апр, 13 от MadHatter (260 баллов)
0 голосов
2 ответов
спросил 29 Апр, 14 от Canon (260 баллов)
0 голосов
1 ответ
спросил 03 Янв, 14 от ufoman (390 баллов)
0 голосов
5 ответов