Задать вопрос
@Nentra

Как в Бизнес-процессе записать, получить в блоке PHP-код значение глобальной переменной?

Битрикс24 коробка
1. Как в Бизнес-процессе записать в блоке PHP-код значение в глобальную переменную?
2. Как в Бизнес-процессе получить в блоке PHP-код значение глобальной переменной?
//вот это не работает
	$this->SetVariable('VarDocumentNumberForAct', $docNum); // пробую записать глобальную переменную
$docNum = $rootActivity->GetVariable('VarDocumentNumberForAct'); //пробую получить глобальную  переменную
  • Вопрос задан
  • 3956 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Nentra Автор вопроса
В итоге вот это помогло

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);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IgorVader
@IgorVader
//в начале объявляем текущий бизнес-процесс
$rootActivity = $this->GetRootActivity(); 
 
//достаем переменную из бизнес-процесса в php
$varPHP = $rootActivity->GetVariable("var1"); 
//или
$varPHP = '{=Variable:zolkina_printable}';
 
//и наоборот
//присваиваем переменной в бизнес-процессе из php
$rootActivity->SetVariable("var1", 'переменная1');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы