Работа со свойствами инфоблока при добавлении новых элементов через API

Alexander K.
1С-Bitrix
10.10.2018
4
Разберём процесс добавления нового элемента с помощью API Битрикса и HTML формы. Для начала сформируем саму форму с различными видами полей:
<form method="POST" enctype="multipart/form-data">
    ФИО<br>
    <input type="text" name="name"><br><br>

    Email<br>
    <input type="email" name="email"><br><br>
    
    Цвет<br>
    <label><input name="color" type="radio" value="Белый">Белый</label>
    <label><input name="color" type="radio" value="Синий">Синий</label>
    <label><input name="color" type="radio" value="Красный">Красный</label><br><br>

    Описание<br>
    <textarea name="about"></textarea><br><br>
 
    Загрузить файл<br>
    <input type="file" name="dw"><br><br>
 
    <input type="submit" name="create" value="Отправить">
 </form>

В параметрах инфоблока необходимо создать дополнительные свойства, куда будут загружаться данные из формы. Присвоим им следующие коды:
  • ФИО - USERNAME (тип строка);
  • Email - EMAIL (тип строка);
  • Цвет - COLOR (тип список);
  • Описание - ABOUT (тип text/html);
  • Загрузить файл - DW (тип файл).
Для большинства типов свойств порядок загрузки данных одинаков: просто присваиваем значение из формы переменной $PROP с кодом свойства. Также не стоит забывать об очистке массива перед заполнением данными. Выглядит это всё так:
$PROP = array();
 $PROP['EMAIL'] = $_POST['email'];
 $PROP['USERNAME'] = $_POST['name'];
 $PROP['COLOR'] = $_POST['color'];
 $PROP['ABOUT'] = $_POST['about'];
С загрузкой файла дела обстоят немного иначе. В частности, чтобы загрузить файл, необходимо использовать переменную $_FILES с кодом свойства:
$PROP['DWFILE'] = $_FILES['dw'];
В итоге полная страница с описанными выше полями выглядит следующим образом:
<?CModule::IncludeModule("iblock");

 if(isset($_POST['create'])) {
    $PROP = array();
    $PROP['EMAIL'] = $_POST['email'];
    $PROP['USERNAME'] = $_POST['name'];
    $PROP['COLOR'] = $_POST['color'];
    $PROP['ABOUT'] = $_POST['about'];
    $PROP['DWFILE'] = $_FILES['dw'];
 
    $arLoadProductArray = Array(
      "MODIFIED_BY" => $USER->GetID(),
      "IBLOCK_ID" => 27,
      "PROPERTY_VALUES" => $PROP,
      "NAME" => $PROP['USERNAME'],
      "ACTIVE" => "Y",
    );
 
    if($PRODUCT_ID = $el->Add($arLoadProductArray)) {
        echo "New ID: ".$PRODUCT_ID;
        $successNewReg = $PRODUCT_ID;
    } else {
        echo "Error: ".$el->LAST_ERROR;
    };
 };?>
 
 <form method="POST" enctype="multipart/form-data">
    ФИО<br>
    <input type="text" name="name"><br><br>
 
    Email<br>
    <input type="email" name="email"><br><br>
    
    Цвет<br>
    <label><input name="color" type="radio" value="Белый">Белый</label>
    <label><input name="color" type="radio" value="Синий">Синий</label>
    <label><input name="color" type="radio" value="Красный">Красный</label><br><br>
 
    Описание<br>
    <textarea name="about"></textarea><br><br>
 
    Загрузить файл<br>
    <input type="file" name="dw"><br><br>
 
    <input type="submit" name="create" value="Отправить">
 </form>