Битрикс24 API Работа со сделками

Битрикс24 API Работа со сделками
18.02.2021
В начале подключение модуля СРМ : 

\Bitrix\Main\Loader::includeModule('crm');

Добавление сделок

 $arFields=[
"TITLE"=>"Название сделки",
'ASSIGNED_BY_ID'=>ответственный,
'CATEGORY_ID'=> направление сделок,
'STAGE_ID'=>'IS_NEW',/*стадия*/
'OPENED'=> 'Y',
'CURRENCY_ID'=>'RUB',
'SUM'=> сумма,
'BEGINDATE'=>"дата начала"
'CLOSEDATE'=> "предполагаемая дата завершения"
'CONTACT_IDS'=>массив Id контактов
'COMPANY_ID'=>компания клиент
'OBSERVER_IDS'=>массив Id наблюдателей,
'UF_FIELD'=>значение пользовательского поля,
]; $entity = new CCrmDeal(false); //false - не учитывать права $entity->Add($arFields, $bUpdateSearch = true, $options = array('CURRENT_USER'=>1));

Изменение сделки

$entity= new CCrmDeal(false); //false - не учитывать права 

$entity->Update($dealID, array $arFields, $bCompare = true, $bUpdateSearch = true, $options = array('CURRENT_USER'=>1));

Добавление наблюдателей в сделке:


Кажется, что можно использовать стандартную функцию 
 \Bitrix\Crm\Observer\Entity\ObserverTable::add($arAdd); 

так как наблюдатели хранятся в отдельной таблице.
Но при таком добавлении наблюдателей в сделку, они не получают права на просмотр сделки и не видят ее в списке сделок. 
Правильно добавлять наблюдателей в сделку  нужно через функцию: 
 \CCrmDeal::AddObserverIDs($dealId,$arFields['USERS_IDS']); 

Соответственно удаление массива наблюдателей из сделки:

\CCrmDeal::RemoveObserverIDs($dealId,$arFields['USERS_IDS']);

Изменение товаров в сделке:

создаем массив нужных товаров
$arRows[] = array(

			'PRODUCT_ID' => $arProduct['ID'],
			'QUANTITY' =>$arProduct['QUANTITY'], 
'PRICE' =>$arProduct['PRICE']
);
и добавляем в сделку.
 CCrmDeal::SaveProductRows($dealID, $arRows, $checkPerms = true, $regEvent = true, $syncOwner = true);

Поиск и получение сделок по фильтру:


$dbDeal=CCrmDeal::GetListEx($arOrder = array("ID"=>"ASC"), $arFilter = array('CHECK_PERMISSIONS'] => 'N'), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array("*","UF_*"), $arOptions = array());

while($arDeal=$dbDeal->fetch()){
var_dump($arDeal);
}  

Запуск бизнес-процесса или робота для сделки:


Если изменяете стадию сделки, то надо вручную запустить робота для этой стадии:
\Bitrix\Main\Loader::includeModule('bizproc'); 

   $arErrors = Array();                  
   CBPDocument::StartWorkflow(
         $bpId,  //ID робота, смотреть через таблицы
         array("crm","CCrmDocumentDeal","DEAL_".$dealId), 
         array("TargetUser" => "user_1"),
         $arErrors
   );    



Добавление комментария в таймлайн сделки
if (!empty($attachments))
$settings = array('HAS_FILES' => 'Y');
else
$settings = array('HAS_FILES' => 'N');
$entryID = \Bitrix\Crm\Timeline\CommentEntry::create(
    array(
'TEXT' => $text,
'FILES' => $attachments,
'SETTINGS' => $settings,
'AUTHOR_ID' => $authorID,
'BINDINGS' => array(array('ENTITY_TYPE_ID' => $ownerTypeID, 'ENTITY_ID' => $ownerID))
)
);    

Возврат к списку


Материалы по теме: