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

lists.element.add

Scope: lists Права на выполнение: для всех

Описание

lists.element.add (params, fields)

Метод создаёт элемент списка. В случае успешного создания элемента ответ true, иначе Exception.

Чтобы загрузить файлы в поле типа Файл (Диск) необходимо:

  1. использовать rest api модуля disk: disk.folder.uploadfile и disk.storage.uploadfile. В ответе при загрузке этих файлов, вы будете получать "FILE_ID": 290.
  2. Получить список ID загруженных файлов.
  3. Затем с помощью rest api модуля lists добавлять файлы в нужное поле:
    var params = {
    	'IBLOCK_TYPE_ID': 'lists',
    	'IBLOCK_ID': '41',
    	'ELEMENT_CODE': 'element1',
    	'FIELDS': {
    		'NAME': 'Test element 1',
    		'PROPERTY_121': { 'n0':["n1582"]}
    	}
    };
    BX24.callMethod(
    	'lists.element.add',
    	params,
    	function(result)
    	{
    		if(result.error())
    			alert("Error: " + result.error());
    		else
    			alert("Success: " + result.data());
    	}
    );

Параметры

Параметр Описание
IBLOCK_TYPE_IDid типа инфоблока (обязательно):
  • lists - тип инфоблока списка
  • bitrix_processes - тип инфоблока процессов
  • lists_socnet - тип инфоблока списков групп
IBLOCK_CODE/IBLOCK_IDкод или id инфоблока (обязательно)
ELEMENT_CODEкод элемента инфоблока (обязательно)
LIST_ELEMENT_URLшаблон адреса к элементам списка
FIELDSмассив полей и значений
SOCNET_GROUP_IDid группы (обязательно, если список создается для группы);

Пример

var params = {
	'IBLOCK_TYPE_ID': 'lists_socnet',
	'IBLOCK_CODE': 'rest_1',
	'ELEMENT_CODE': 'element_1',
	'LIST_ELEMENT_URL': '#list_id#/element/#section_id#/#element_id#/',
	'FIELDS': {
		'NAME': 'Test element',
		'PROPERTY_62': 'Text string',
		'PROPERTY_63': {
			'0': '7',
			'1': '9',
			'2': '10'
		}
	}
};
BX24.callMethod(
	'lists.element.add',
	params,
	function(result)
	{
		if(result.error())
			alert("Error: " + result.error());
		else
			alert("Success: " + result.data());
	}
);

Пример добавления файла:

var params = {
	'IBLOCK_TYPE_ID': 'lists',
	'IBLOCK_ID': '41',
	'ELEMENT_CODE': 'element1',
	'FIELDS': {
		'NAME': 'Test element 1',
		'PROPERTY_122': document.getElementById('fileInputId') // PROPERTY_122 - Пользовательское свойство типа "Файл"
	}
};
BX24.callMethod(
	'lists.element.add',
	params,
	function(result)
	{
		if(result.error())
			alert("Error: " + result.error());
		else
			alert("Success: " + result.data());
	}
);


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

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

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

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
2
Евгений Тычкин
Добавление в множественное поле, универсального списка, типа "Файл" из формы сайта в CRM
1) У формы должен быть атрибут enctype со значением multipart/form-data (enctype="multipart/form-data");
2) В обработчике формы разбираем глобальную переменную $_FILES

Код
//из формы передаеться произвольное число фотографий, которые должны быть добавлены в множественное поле типа файл в универсальном списке.
function set_foto($name_comp=false, $shop_id=false, $day_of_invoice=false, $inner_num=false){
   
    $razreshenniye_simvoli = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $random_number = substr(str_shuffle($razreshenniye_simvoli), 0, 15);
    $name = $random_number.'.'.pathinfo( $_FILES['pictures']['name'][0], PATHINFO_EXTENSION );
    // запоминаем сколько у нас фотографий в массиве
    $count_pic = count($_FILES['pictures']['name']);
      
   $params = array(
      'id' => 1633722, // id папки, специального метода для определения id нет, так что ищем его через инструменты разработчика 
      'data' => array(
      'NAME' => $name,
      ),
      'fileContent' => base64_encode(file_get_contents($_FILES['pictures']['tmp_name'][0]))
   );
   // добавляем файл на диск
   $result = CRest::call('disk.folder.uploadfile', $params);
   // echo '<pre> добавил первый файл ';print_r($result);echo '</pre>';
   // сохраняем FILE_ID для того что бы подставить в запрос на добавление файла в список
   $file_id = $result['result']['FILE_ID'];
   // сохраняем ID файла что бы потом почистить за собой и удалить его с диска
   $element_id = $result['result']['ID'];
   // echo '<pre> ID записи файла ';print_r($file_id);echo '</pre>';

   $random_number = substr(str_shuffle($razreshenniye_simvoli), 0, 15);
   $params = array(
      "IBLOCK_TYPE_ID" => 'lists',
      "IBLOCK_ID" => 92,
      "ELEMENT_CODE" => $random_number,         //случайный ID элемента,без него не добавит в список новую запиcm
      "FIELDS"=> array(
         "NAME" => $name_comp,            // название магазина списком
         "PROPERTY_638" =>$shop_id,         // id магазина
         "PROPERTY_616" =>$file_id,         // FILE_ID у файла добавленного ранее на диск
         "PROPERTY_620" =>$day_of_invoice,       // дата за какое документ
         "PROPERTY_640" =>$inner_num,         // внутренний номер магазина
      )
   );
   // добавляем запись в список      
   $result = CRest::call('lists.element.add', $params);
   $ELEMENT_id = $result['result']; // сохраняем для того что бы добавить вторую и далее фотографии
   // echo '<pre> params';print_r($params);echo '</pre>';
   // echo '<pre> результат добавления в список ';print_r($result['result']);echo '</pre>';

   // чистим за собой и удаляем файл с диска
   $params = array('id' => $element_id);
        CRest::call('disk.file.delete', $params);
   
   if($count_pic > 1){
      // echo '<pre> елементов в массиве ';print_r(count($_FILES['pictures']['name']));echo '</pre>';
      for($i =1; $i < $count_pic; $i++){
            $random_number = substr(str_shuffle($razreshenniye_simvoli), 0, 15);
          $name = $random_number.'.'.pathinfo( $_FILES['pictures']['name'][$i], PATHINFO_EXTENSION );

          $params = array(
         'id' => 1633722, // id папки, как нашли смотри выше
         'data' => array(
            'NAME' => $name,
            ),
         'fileContent' => base64_encode(file_get_contents($_FILES['pictures']['tmp_name'][$i]))
         );

         $result = CRest::call('disk.folder.uploadfile', $params);
         // echo '<pre> добавил первый файл ';print_r($result);echo '</pre>';
         $file_id = $result['result']['FILE_ID'];
         $element_id = $result['result']['ID'];
         // echo '<pre> ID записи файла ';print_r($file_id);echo '</pre>';

         $random_number = substr(str_shuffle($razreshenniye_simvoli), 0, 15);
         $params = array(
            "IBLOCK_TYPE_ID" => 'lists',
            "IBLOCK_ID" => 92,
            "ELEMENT_ID" => $ELEMENT_id,                 //случайный ID элемента,без него не добавит в список новую запиcь, не путать с $element_id
            "FIELDS"=> array(
               "NAME" => $name_comp,            // название магазина списком
               "PROPERTY_638" =>$shop_id,         // id магазина
               "PROPERTY_616" =>$file_id,         // FILE_ID у файла добавленного ранее на диск
               "PROPERTY_620" =>$day_of_invoice,       // дата за какое документ
               "PROPERTY_640" =>$inner_num,         // внутренний номер магазина
            )
         );     
      
         $result = CRest::call('lists.element.update', $params); // при обновлении, старые записи во множественном поле не затираються 
         // echo '<pre> params';print_r($params);echo '</pre>';
         // echo '<pre> результат добавления в список ';print_r($result['result']);echo '</pre>';
         $params = array('id' => $element_id);
          CRest::call('disk.file.delete', $params);
        }
    };
}

set_foto("магазин", 49684, "25.05.2022", 12029);
8
Денис Меснянкин
Добавление в множественное поле типа "Файл" из формы сайта в CRM
1) У формы должен быть атрибут enctype со значением multipart/form-data (enctype="multipart/form-data");
2) В обработчике формы разбираем глобальную переменную $_FILES https://www.php.net/manual/ru/features.file-upload.post-method.php
3) Создаем переменные и наполняем наше поле типа "Файл"
Код
$url = $_FILES['userfile']['tmp_name'][$key];
$data = file_get_contents($url);
$base64 = base64_encode($data);
$name = urldecode(basename($url));
$field[] = array($_FILES["userfile"]['name'][$key],$base64);
4) Формируем массив 
 $massive = array(
  "IBLOCK_TYPE_ID" => 'bitrix_processes',
  "IBLOCK_ID" => $id,
  "ELEMENT_CODE" => 'element_'.time(),
  "FIELDS" => array(
    'NAME' => htmlspecialchars(trim($_POST["number"])),
    'PROPERTY_320'=> $field,   
  )         
         ));
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх