Спасибо. Очень полезная ссылка.
01.02.2013 13:54:32
Выкладываю проверенный код для получения ID задания созданного в бизнес процессе
$root = $this->GetRootActivity(); $docID = $root->GetDocumentId(); $docService = $this->workflow->GetService("DocumentService" ; $docFields = $docService->GetDocument($docID); $userID = $docFields[ASSIGNED_BY_ID]; $userID = intval(substr($userID, strlen("user_" )); $BP = CBPActivity::GetWorkflowInstanceId(); $ar = CBPDocument::GetUserTasksForWorkflow($userID, $BP); $taskID = $ar[0][ID]; $this->SetVariable("taskID", $taskID); Пришлось немного доработать код от Всем успехов. |
|
|
31.01.2013 22:34:06
Не знаю как строки переносить в коде. Извините.
И забыл добавить, что нужно присвоить значение переменно БП $this->SetVariable("Var1", $taskID); И наверное, получение root здесь не нужно? не проверял. А смысл этого рут никак не пойму. PS Как вступать в группы веб-разработчиков? Хотел бы почитать мысли умных людей, а нигде не нашел как это сделать. |
|
|
31.01.2013 22:28:08
Сам недавно заморачивался и нашел решение.
Применяете конструкцию БП - параллельное выполнение. В левой ветке я использовал блок "Запрос дополнительной информации", который как раз и создает задачу бизнес процесса. В правой ветке сначала запускаете PHP код. Потом уведомление со ссылкой, где соответственно используется ID сделки и ID задачи. Код для получения ID задачи я использую такой. Может меня кто поправит, я не программист. Просто пытливый ))
В коде не расписано как получить User_id (третья строка, 1). Сам еще до этого не дошел )) Может, кстати, подскажите? В $taskID будет код именно созданной ранее задачи, если она первая в этом БП (0 в четвертой строке, соответствует первому значению в массиве задач БП). Надеюсь понятно объяснил. |
|||
|
25.01.2013 12:28:09
Ни для лидов, ни для сделок я такого функционала не нашел. Это печально ((
В том числе не могу найти как сделать по умолчанирю для всех форму редактирования и отображения сделки. Есть 100 пользователей... и что для всех все настраивать вручную??? А если некоторые в других городах??? Большой минус разработчикам! |
|
|
28.12.2012 12:21:23
Заработал такой код
$arFilter = Array("IBLOCK_ID" => 35, "ID" => {=Document:UF_CRM_1356611629}); $dc = CIBlockElement::GetList(array(), $arFilter, false, false, array("PROPERTY_141", "PROPERTY_142", "PROPERTY_143")); $br = $dc->Fetch(); $Pbra = $br['PROPERTY_141_VALUE']; $Pbrb = $br['PROPERTY_142_VALUE']; $Pbrc = $br['PROPERTY_143_VALUE']; $this -> SetVariable('Fio', $Pbra); $this -> SetVariable('Predel', $Pbrb); $this -> SetVariable('Stag', $Pbrc); Это верная конструкция? Или все-таки коряво? ) |
|
|
28.12.2012 11:23:48
Дмитрий, спасибо.
Только я так понимаю, в моем случае, так наверное не получится. Пробую так. Но где-то ошибка. Переменные (Fio, Predel, Stag) пустые в итоге. $arFilter = Array("IBLOCK_ID" => 35, "ID" => {=Document:UF_CRM_1356611629}); $dc = CIBlockElement::GetList(array(), $arFilter, false, false, array("PROPERTY_141","PROPERTY_142","PROPERTY_143" ; $br = $dc->Fetch(); $Pbra = $br["PROPERTY_141_VALUE"]; $Pbrb = $br["PROPERTY_142_VALUE"]; $Pbrc = $br["PROPERTY_143_VALUE"]; $this -> SetVariable('Fio', $Pbra); $this -> SetVariable('Predel', $Pbrb); $this -> SetVariable('Stag', $Pbrc); |
|
|
28.12.2012 10:41:11
Добрый день.
Подскажите пожалуйста, как в БП сделки обращаться к полям универсальных списков через PHP-код. Пробую так $arFilter = Array("IBLOCK_ID" => 35, "ID" => {=Document:UF_XXX}); $dc = CIBlockElement::GetList(array(), $arFilter, array("NAME" ); $br = $dc->Fetch(); $Pbrr = $br["NAME"]; $this -> SetVariable('Variable2', $Pbrr); Пояснения: "IBLOCK_ID" => 35 - это созданный мной список, который хранится в отдельной таблице. "ID" => {=Document:UF_XXX} - Строка в этом списке отбирается по пользовательскому полю сделки В итогу в переменную Variable2 сохраняется значение поля Название отобранной строки. Как обратиться к другим полям списка в отобранной строке? Знаю только их ID. |
|
|