Answer the question
In order to leave comments, you need to log in
How to write down and get the value of a global variable in a PHP code block in a Business Process?
Bitrix24 box
1. How to write a value to a global variable in a PHP code block in a Business Process?
2. How to get the value of a global variable in a PHP code block in a Business Process?
//вот это не работает
$this->SetVariable('VarDocumentNumberForAct', $docNum); // пробую записать глобальную переменную
$docNum = $rootActivity->GetVariable('VarDocumentNumberForAct'); //пробую получить глобальную переменную
Answer the question
In order to leave comments, you need to log in
In the end this helped.
Boris, [22.11.2021 0:56]
[В ответ на Andrey DEV(Джейс) ↑]
/*
* Комментарии к изменению глобальных переменных через БП PHP блок
* Если указывать из БП глобальную переменную с _ будет ошибка исполнения (просто флоу до конца не дойдет, без каких то ошибок в логи)
* Если \Bitrix\Bizproc\Workflow\Type\GlobalVar::getById возвращает пустоту, значит глобальная переменная в недопуступом имени
* Если в \Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert отдать что-то недопустимое, будет ошибка без логов
* Если создать произвольный массив типа $var['idGlobVar'] = ['Name'=>'Имя глобальной переменной','Description'=>'','Type'=>bool,'Required'=>'','Multiple'=>'','Options'=>'','Default'=>'Y'];
* а после скормить этот массив в \Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert то создастся ещё одна глобальная переменная idGlobVar несмотря на то, что она уже будет (да, две переменные будут, с одинаковыми идентификаторами)
* Изменение значения происходит через изменение Default параметра
*/
$var = \Bitrix\Bizproc\Workflow\Type\GlobalVar::getById('orderVacancy');
$var['Default'] = 'Y';
if($var)
{
\Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert('orderVacancy', $var);
}
//в начале объявляем текущий бизнес-процесс
$rootActivity = $this->GetRootActivity();
//достаем переменную из бизнес-процесса в php
$varPHP = $rootActivity->GetVariable("var1");
//или
$varPHP = '{=Variable:zolkina_printable}';
//и наоборот
//присваиваем переменной в бизнес-процессе из php
$rootActivity->SetVariable("var1", 'переменная1');
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question