Документация для разработчиков

Add

int CIBlockProperty::Add(
 array arFields
);

Метод добавляет новое свойство. Отменить добавление или изменить поля свойства можно в обработчике события OnBeforeIBlockPropertyAdd. После добавления нового свойства вызываются обработчики события OnAfterIBlockPropertyAdd. Нестатический метод.

Параметры вызова

ПараметрОписание
arFields Массив Array("поле"=>"значение", ...). Содержит значения всех полей свойства. Кроме того, с помощью поля "VALUES", значением которого должен быть массив структуры array(array("VALUE"=>"значение", "DEF"=>"по умолчанию (Y/N)", "SORT"=>"индекс сортировки"),...), можно установить варианты выбора для свойств типа "список" (подробнее смотрите метод CIBlockProperty::UpdateEnum()).

Возвращаемое значение

Метод возвращает ID добавленного свойства, если добавление прошло успешно, при возникновении ошибки метод вернет false, а в свойстве объекта LAST_ERROR будет содержаться текст ошибки.

См. также

Примеры использования

<?
$arFields = Array(
"NAME" => "Цвет",
"ACTIVE" => "Y",
"SORT" => "100",
"CODE" => "color",
"PROPERTY_TYPE" => "L",
"IBLOCK_ID" => 11
);

$arFields["VALUES"][0] = Array(
"VALUE" => "Красный",
"DEF" => "N",
"SORT" => "100"
);

$arFields["VALUES"][1] = Array(
"VALUE" => "Желтый",
"DEF" => "N",
"SORT" => "200"
);

$arFields["VALUES"][2] = Array(
"VALUE" => "Зеленый",
"DEF" => "Y",
"SORT" => "300"
);

$ibp = new CIBlockProperty;
$PropID = $ibp->Add($arFields);
?>
//добавление свойства типа "HTML"
 $arFields = Array(
        "NAME" => "Итог",
        "ACTIVE" => "Y",
        "SORT" => "600",
        "CODE" => "ITOG",
        "PROPERTY_TYPE" => "S",
        "USER_TYPE" => "HTML", 
        "IBLOCK_ID" => $arParams["IBLOCK_ID"],
        );
      
      $ibp = new CIBlockProperty;
      $PropID = $ibp->Add($arFields);


//для добавления свойства типа "Видео" в массиве arFields должно быть указано:
"PROPERTY_TYPE" => "S",
"USER_TYPE" => "video",
//установка параметра "Выводить поле для описания значения" для свойства инфоблока ("WITH_DESCRIPTION" => "Y") - доступно только для типов свойств:  S - строка, N - число и F - файл
  $arFields = Array(
      "NAME" => "Прочее",
      "ACTIVE" => "Y",
      "SORT" => "1700",
      "CODE" => "F_OTHER",
      "PROPERTY_TYPE" => "S",
      "IBLOCK_ID" => $IBLOCK_ID,
      "WITH_DESCRIPTION" => "Y",
      );

   $iblockproperty = new CIBlockProperty;
   $PropertyID = $iblockproperty->Add($arFields);
//добавление к инфоблоку свойства типа "Справочник"
 $arFields = Array(
   "NAME" => "Производитель",
   "ACTIVE" => "Y",
   "SORT" => "50",
   "CODE" => "PROIZVODITEL",
   "PROPERTY_TYPE" => "S",
   "USER_TYPE" => "directory",
   "IBLOCK_ID" => 888888888888888,//номер вашего инфоблока
   "LIST_TYPE" => "L",
   "MULTIPLE" => "N",
   "USER_TYPE_SETTINGS" => array("size"=>"1", "width"=>"0", "group"=>"N", "multiple"=>"N", "TABLE_NAME"=>"b_producers")
);

$ibp = new CIBlockProperty;
$PropID = $ibp->Add($arFields);


//затем следует в значение свойства вставить значение поля  UF_XML_ID от вашего справочника
CIBlockElement::SetPropertyValuesEx(123188, 888888888888888, array('PROIZVODITEL'=>'000000701'));


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Ilya Chumakov
Сообщение непромодерировано, возможны ошибки и неточности.
LIST_TYPE в массиве полей отвечает за внешний вид свойства типа список. Если значение = L, то это просто список. Если C - флажки
2
ivan trufanov
Для привязки свойства к элементам инфоблока нужно указать PROPERTY_TYPE => E и LINK_IBLOCK_ID => <нужный iblock>
Код
 $arFields = Array(
   "NAME" => "Внешний ID элемента",
   "ACTIVE" => "Y",
   "SORT" => "600",
   "CODE" => "ExtElementID",
   "PROPERTY_TYPE" => "E",
   "IBLOCK_ID" => 2,
   "LINK_IBLOCK_ID" => 1
);
      
$ibp = new CIBlockProperty;
$PropID = $ibp->Add($arFields);
7
Адель Юсупов
//Для прикрепления свойства к разделу необходимо использовать класс

$SECTION_ID = 1; //- идентификатор раздела, либо 0, если требуется отвязать свойство от инфоблока.
$PROPERTY_ID = 2; // - идентификатор свойства.
$arLink = array('SMART_FILTER' => 'N'); //- в данный момент может содержать 2 ключа, это IBLOCK_ID и SMART_FILTER.
//В свою очередь $arLink = array(‘SMART_FILTER’ => ‘Y’) - включить свойство в умный фильтр, если свойство в умный фильтр включать не требуется, можно просто //не указывать SMART_FILTER, либо $arLink = array(‘SMART_FILTER’ => ‘N’).

CIBlockSectionPropertyLink::Add($SECTION_ID, $PROPERTY_ID, $arLink = array());
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх