146  /  175

Добавление информации в инфоблок из бизнес-процесса

Просмотров: 7181 (Статистика ведётся с 06.02.2017)

Рассмотрим пример, в котором у нас значения из пользовательских полей списка с помощью бизнес-процесса будут записываться в пользовательские свойства инфоблока.

В данном случае у нас после заполнения полей списка Название, Строка и Файл (несколько файлов) и последующего сохранения, будет создан новый элемент в нужном инфоблоке, в пользовательских свойствах которого будут содержаться значения, указанных выше, полей списка. Название этого элемента будет соответствовать названию создаваемого элемента списка.


  • Для начала создадим в списке дополнительные поля:

    Значения из этих полей с помощью бизнес-процесса будут записываться в пользовательские свойства инфоблока.

    Для поля Идентификатор инфоблока зададим значение по умолчанию, чтоб каждый раз не заполнять его при создании нового элемента списка (в нашем случае это будет инфоблок с идентификатором =1 ). Это поле создано лишь для наглядности.

    Примечание: Идентификатор инфоблока можно также прописать прямо в коде (см. ниже) или переменной бизнес-процесса.

  • Перейдем к инфоблоку.

    На странице настроек инфоблока, закладка Свойства (Контент > Инфоблоки > Типы инфоблоков > требуемый_инфоблок), создадим новые пользовательские свойства, в которые у нас и будут записываться значения из полей списка.

  • Перейдем к самому бизнес-процессу. Создадим шаблон последовательного бизнес-процесса.
  • Создадим 2 переменные, которые будут использоваться в отладочных целях:

    • ELEMENT_ID - переменная бизнес процесса, в которую будет записан ИД созданного элемента инфоблока в случае удачи,
    • ERROR - переменная бизнес процесса, в которую будет записан текст ошибки в случае неудачи создания элемента инфоблока.

  • Возьмем код из примера АПИ-вызова CIBlockElement::Add

    Исходный код

    и модифицируем его:

    <?
    CModule::IncludeModule("iblock"); //подключаем модуль инфоблоков
    
    $el = new CIBlockElement;
    
    $PROP = array();
    $PROP[IB_CUSTOM_PROPERTY] = {=Document:PROPERTY_117};
    // задаем для свойства инфоблока "IB_CUSTOM_PROPERTY" типа "строка" значение из поля документа "PROPERTY_117"  
    
    $files = explode(', ',"{=Document:PROPERTY_118}");
    foreach($files as $key=>$value)
     {
      $PROP[IB_FILE_PROPERTY]['n'.$key]=array('VALUE'=> CFile::MakeFileArray($value), 'DESCRIPTION' => '');
     }  
    // задаем для свойства инфоблока "IB_FILE_PROPERTY" типа "файл" (множественное) значение из поля документа "PROPERTY_118"	
    	
    $arLoadProductArray = Array(
      "IBLOCK_ID" = >{=Document:PROPERTY_119},	
    // задаем  Идентификатор инфоблока, в котором будет создан элемент, из поля документа "PROPERTY_119" типа "строка" 	
      "NAME" => {=Document:NAME},
    // задаем Название создаваемого элемента инфоблока из поля документа "Название"	
     "PROPERTY_VALUES"	=> $PROP,
    );
    
    $ELEMENT_ID = $el->Add($arLoadProductArray);
    
    if($ELEMENT_ID > 0)
     $this->SetVariable('ELEMENT_ID', $ELEMENT_ID);
    // задаем для переменной бизнес-процесса "ELEMENT_ID" значение, содержащее номер созданного элемента инфоблока, в случае, если он будет создан	
    else
     $this->SetVariable('ERROR', $el->LAST_ERROR);
    // задаем для переменной бизнес-процесса "ERROR" значение, содержащее текст ошибки, в случае, если  элемент инфоблока не будет создан	
    ?>
    

    Этот код будет, с помощью АПИ-методов, создавать новый элемент инфоблока, в котором пользовательские свойства IB_CUSTOM_PROPERTY, IB_FILE_PROPERTY, а также название элемента инфоблока будут содержать значения пользовательских полей PROPERTY_117, PROPERTY_118, PROPERTY_119 и значение поля название элемента списка.

    После чего добавим в шаблон действие PHP-код, в котором укажем наш измененный код.

  • Добавим в шаблон действие Запись в отчет, в котором укажем следующий текст:
    {=Variable:ELEMENT_ID_printable}, {=Variable:ERROR_printable}

    Этим самым мы запишем в отчет по выполнению бизнес-процесса значение отладочных переменных для анализа в случае ошибок.

Документация по теме:


15
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии