Цитата |
---|
arnly написал:
Цитата |
---|
Алексей Алексеев написал: Сама проблема: Допустим, я создаю новое поле для БП. Оно имеет тип - привязка к сотруднику, и оно множественное. С помощью уведомления я глянул, что содержится в этом поле: user_1, user_2, user_3, user_4 (это пример). То есть я могу выделить отдельную переменную в БП, записать в неё эти значения. Затем в PHP коде сделать:
$rootActivity = $this->GetRootActivity(); $users = $rootActivity->GetVariable("user_array");//тут я получаю строку с пользователями $userarr = explode(", ", $users);//а тут создаю массив из полученных пользователей без запятых и пробелов
Потом я провожу много всяких операций, но на выходе - записываю "свои" переменные в переменные БП (отдельно созданные с типом "привязка к сотруднику") так: здесь 1-ый аргумент - куда я пишу, 2-ой аргумент - что я пишу.
$this->SetVariable('main_ing', $main_ing); $this->SetVariable('us1', $us1); $this->SetVariable('us2', $us2); $this->SetVariable('us3', $us3); $this->SetVariable('us4', $us4);
Я просто записал пользователей типо "user_1" в переменную. И так со всеми остальными.
А теперь самое странное. Я делаю задачу. Постановщик - Автор. Исполнитель - us1 (это записанная переменная БП и содержать она должна user_1), и соисполнители - us2, us3, us4. Запускаю БП. Задача просто игнорируется. Значит где-то ошибка.
Предполагаю, что Битрикс наврал с идентификаторами пользователей. Как можно решить такую задачу?
Если просто подставить значение этого поля в задачу и в исполнителя и в соисполнителя, то задачу видит ИСКЛЮЧИТЕЛЬНО первый выбранный пользователь. Поэтому я вношу свои коррективы. |
Полный код выложи |
Вот полный код. Выводы я естественно комментирую.
//only for BITRIX
$rootActivity = $this->GetRootActivity();
//Recive string with users
//$users = "user_1, user_2, user_3, user_4";//change this to test with string below...
$users = $rootActivity->GetVariable("user_array");//all users here
//separate users string to values as array
$userarr = explode(", ", $users);
$users = null;
$users = implode("", $userarr);//create new string without separ
$userarr = null;
$userarr = explode("user_", $users);//separate string
//see 2 elements
echo "User for task " . $userarr[1] . "<br>";
$main_ing = $userarr[1];//Main user for make task....
$us1 = "";
$us2 = "";
$us3 = "";
$us4 = "";
//echo count($userarr). "<br>";
if (count($userarr) > 1)
{
for ($i = 1; count($userarr[$i]); $i++)
{
echo "User number ".$i . $userarr[$i] . "<br>";
}
switch (count($userarr)) {
case 2:
echo "found 2 users". "<br>";
$us1 = $userarr[2];
//$us2 = $userarr[2];
break;
case 3:
echo "Found 3 users" . "<br>";
$us1 = $userarr[2];
$us2 = $userarr[3];
//$us3 = $userarr[3];
break;
case 4:
echo "found 4 users" . "<br>";
$us1 = $userarr[2];
$us2 = $userarr[3];
$us3 = $userarr[4];
//$us4 = $userarr[4];
break;
}
}
elseif (count($userarr) == "" || count($userarr) === 0 || count($userarr) == null)
{
echo "No data!!! Error.";
}
elseif (count($userarr) == 1)
{
echo "Only one user avalible...";
}
//only for BITRIX
$this->SetVariable("main_ing", $main_ing);
$this->SetVariable("us1", $us1);
$this->SetVariable("us2", $us2);
$this->SetVariable("us3", $us3);
$this->SetVariable("us4", $us4);
Внизу скрин с выводом из IDE. Все номера корректно определяются.