Услуги профессионального Битрикс-программиста

Бизнес-процессы bitrix24 api коробка


читайте также Бизнес-процессы в Битрикс24 (памятка)

PHP-код блок пример
CModule::IncludeModule("nikaverro.gservice");
$root = $this->GetRootActivity();
$gs = GameService::getInstance();
$address = $gs->GetAddressGSText($root->GetVariable('AddressGS'));
$this->SetVariable('AddressGS',$address);
команды
$root = $this->GetRootActivity();
$root->GetVariable('name'); //получить переменную
$root->GetConstant('name'); //получить константу, но не работает для глобальных констант
$root->GetDocumentId(); //id документа

//получить глобальную константу
$property = \Bitrix\Bizproc\Workflow\Type\GlobalConst::getById($constName); //получить свойство  
$result = \Bitrix\Bizproc\Workflow\Type\GlobalConst::getValue($constName); //получить значение 

получить параметр GetRealParameterValue


PHP-код в условии
Задача: отправлять письмо о создании заказа если "онлайн-оплата на сайте" с ID 14 со ссылкой на оплату, иначе без нее.
1. Создаем переменную в бизнес-процессе. (у меня pay_system_id)

2. Присваиваем переменной значение
   вариант 1. через блок "php код"
$this->SetVariable('pay_system_id', {=Document:PAY_SYSTEM_ID});
   вариант 2. через блок "изменение переменных".

3. В условии выбираем тип условия "php-код"

4. Задаем условие
Важно! доступа к  Document и $this нет, есть $ownerActivity
$ownerActivity->GetVariable('pay_system_id') != 14 //платежная система эквайринг с ID 14
4.  Если да, то блок "Отправить письмо клиенту" (обычное письмо), иначе php-код, который запускает Функцию, которая генерирует письмо со ссылкой на оплату (ее размещаем в init.php)


Создать подзадачу для задачи из бизнес-процесса
$arFields = Array(        "TITLE" => "Название задачи",
        "DESCRIPTION" => "Описание",
        "RESPONSIBLE_ID" => $userId, //ответственный
        "GROUP_ID" => $this->GetVariable('WORKGROUPID'),
        "PARENT_ID"=>'{=A2629_10558_53461_99205:TaskId}',
    );
 
    $obTask = new CTasks;
    $ID = $obTask->Add($arFields);
Cоздать рабочую группу и ее диск из бизнес-процесса
CModule::IncludeModule('socialnetwork');
CModule::IncludeModule('disk');
CModule::IncludeModule('webdav');
 
$SocGroup=new CSocNetGroup;
global $USER;
 
$arFieldsSG=array(
   "NAME"=>"{=Document:TITLE}",
   "SITE_ID" => "s1",
   "DESCRIPTION"=>"{=Document:TITLE} Workgroup",
   "ACTIVE"=>"Y",
   "VISIBLE"=>"Y",
   "OPENED"=>"Y",
   "CLOSED"=>"N",
   "SUBJECT_ID"=>4,
   "OWNER_ID"=>1,
   "INITIATE_PERMS"=>A,
   "SPAM_PERMS"=>"N",
   "SUBJECT_NAME"=>"Management Board"
 
);
 
$GroupID=CSocNetGroup::CreateGroup($USER->GetID(),$arFieldsSG);
 
if (CModule::IncludeModule("disk")){
   BitrixDiskDriver::getInstance()->addGroupStorage($GroupID);
}
 
$this->SetVariable('WORKGROUPID',$GroupID);


запустить бизнес-процесс, не привязанный к CRM
$documentId = CBPVirtualDocument::CreateDocument(    0,
    array(
     "IBLOCK_ID" => 27,
     "NAME" => "Create Notification",
     "CREATED_BY" => "user_".$GLOBALS["USER"]->GetID(),
    )
);
$arErrorsTmp = array();
$wfId = CBPDocument::StartWorkflow(
   $bpId,
    array("bizproc", "CBPVirtualDocument", $documentId),
    array_merge(array(), array("TargetUser" => "user_".intval($GLOBALS["USER"]->GetID()))),
    $arErrorsTmp
);