Задать вопрос
Nirrotaki
@Nirrotaki
Начинающий bitrix разработчик

Бизнес процесс и кастомные поля список. Как забрать выбранные значения из поля?

Коллеги, добрый день. Столкнулся с проблемой, которую самостоятельно не могу решить. Прошу вашей помощи.
Какая у меня ситуация:
Заказчику необходимо реализовать связь между несколькими БП. При утверждении одного БП вносить в глобальную переменную значение поля, к примеру, id_notebook. При формировании другого БП подтягивать id_notebook, чтоб можно было выбрать из утвержденных заявок.

Как я это сделал:
1. Создал переменную id_notebook, в которую присваиваю поле "Индивидуальный номер ноутбука";
2. Создал глобальную переменную типом список, в множественным выбором;
3. Смержил два переменные {{=merge( {{Переменные глобальные: ID_NOTEBOOK}}, {=Variable:id_notebook} )}};
4. Создал PHP код и добавил туда маленький скрипт:
Код

$root  =  $this->GetRootActivity();

$bp = array();
$keyArr = array();

$tmp_list = array({{Переменные глобальные: ID_NOTEBOOK}});



for ($i = 0; $i < count($tmp_list); $i++) {
    $keyArr[$i] = $i;
}

$arr_Id_Num = array_combine($keyArr, $tmp_list);

$arr = array(
    "Name"     => "id_notebook",
    "Title"    => "Индивидуальный номер ноутбука",
    "Type"     => "select",
    "Options"  => $arr_Id_Num,
    "Default"  => "",
    "Required" => 1,
    "Multiple" => 1
);


$bp[] = $arr;


$all["RequestedInformation"] = $bp;

// ИД Бизнесс процесса
$act = $root->workflow->GetActivityByName("A№№№№№№№№№");

$act->SetProperties($all);


Проблема была решена, код работает, я радостный и начинаю тесты...Тут я сталкиваюсь с проблемой, что никак не могу забрать выделенные значения с этого поля. Коллеги, прошу помощи, может что подскажете или ткенете в документацию? Я новичок в б24 и хотелось бы решить данный вопрос быстрее, сроки, к сожалению, я уже все сжег...
  • Вопрос задан
  • 151 просмотр
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
"Проблема" глобальных переменных в том что они глобальные.
Когда вы запустите 2 процесса то их данные у вас перемешаются и вы не получите ожидаемого результата.
Я бы посоветовал вам использовать один мастер-процесс, и универсальный список для синхронизации. Таким образом мастер-бп с параллельным выполнением дочерних БП, а на вход каждого БП подавать элемент созданный для синхронизации и уже в нем хранить.

Получить значение глобальной переменной можно многими путями, например через парсинг:

$globalVarAsdasd = $this->ParseValue('{'.'{Переменные глобальные: asdasd}}');


Взято из книжки
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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