Источник:
Необходимость сложить две переменные бизнес-процесса в ходе выполнения его контекста может быть востребована когда вы анализируете расходы/доходы или прогнозируете вложения в новый Проект.
В данном посте описано как можно организовать подсчет каких либо параметров или переменных бизнес-процесса. Вы так же узнаете как можно из PHP повлиять на эти переменные. Вопрос сохранения переменной в поле документа решается стандартным блоком "Изменение полей документа".
[spoiler]
Изначально предположим что у нас есть:
- параметр бизнес-процесса
{=Template:integrator_USD} - стоимость работы программиста в USD - переменная бизнес процесса
{=Variable:kurs_usd} - курс валюты для пересчета
Нам нужно пересчитать стоимость работы программиста ))
Для организации вычислений нам потребуется стандартный блок "PHP код"
В начале о методике внесения кода:
- код будет выполняться в своем пространстве, т.е. если нужно вызвать стандартное API Битрикса - нужно учитывать что модули заранее не подключались
- символы <??> вносить не нужно
- внимательно следите за типами переменных - приведение типа переменных организуйте в обязательном порядке (в примере это пропущено для упрощения восприятия)
- пока документации по бизнес-процессам нет, Вам придется в случае необходимости искать в исходных кодах модуля
- хитрый финт ушами {=(Variable:kurs_usd*Template:integrator_USD)} пока не проходит (надеюсь разработчики введут что-то подобное)
Теперь синтаксис:
// получить текущий бизнес-процесс $rootActivity = $this->GetRootActivity(); // получить значение переменной бизнес-процесса {=Variable:kurs_usd} $kursUSD = $rootActivity->GetVariable("kurs_usd"); // получить значение параметра бизнес-процесса {=Template:integrator_USD} $integrator = $rootActivity->integrator_USD; // пересчет валюты $integrator = $integrator*$kursUSD; // установка значения параметра бизнес-процесса {=Template:integrator_USD} $rootActivity->integrator_USD = $integrator; // установка значения переменной бизнес-процесса {=Template:ttl} // Вы можете не только считать, но и делать что хотите с переменными и параметрами бизнес-процесса $rootActivity->SetVariable("ttl", 'Минимально возможная цена:'.number_format($min_ttl,0,',',' ')." руб\n". 'Прибыль от минимальной цены:'.number_format($min_ttl_plus,0,',',' ')." руб\n". 'Налог:'.number_format($min_ttl*$nalog,0,',',' ')." руб\n\n". 'Средняя цена:'.number_format($ttl,0,',',' ')." руб\n". 'Прибыль от средней цены:'.number_format($ttl_plus,0,',',' ')." руб\n". 'Налог:'.number_format($ttl*$nalog,0,',',' ')." руб\n" ); |
Отображение результатов можно организовать через стандартные блоки управления из группы "Уведомления", на пример "Сообщение соц. сети"