Итератор: как работать с множественными переменными в бизнес-процессах

Я долго ждала, и он появился!

Итератор: для чего он нужен, как настраивать и пример использования - всё по ссылке "Подробнее" :-)

Для чего нужен итератор


В Битрикс24 можно создавать множественные поля и переменные.

Всё хорошо, но в бизнес-процессе это поле/переменная представляется как список значений через запятую. Не было простой возможности обработать каждое значение отдельно.

Новое действие в редакторе бизнес-процессов "Итератор" эту проблему решает: он делает последовательный обход элементов множественного поля/переменной.

Как настраивать итератор и пример использования

Пример:

Сделка оплачивается частями в произвольное количество этапов. Платежи фиксируются в множественном поле "Платежи". Нужно автоматом рассчитывать оставшуюся к оплате сумму, как разницу между суммой сделки и суммой платежей, и записывать ее в поле "Осталось оплатить".


Как настроить:

Для того, чтобы рассчитать уже оплаченную сумму, нужно последовательно сложить все значения из поля "Платежи".

В настройках итератора можно указать только переменную, поэтому сначала нужно значение поля "Платежи" скопировать в служебную множественную переменную "Платежи":


Добавляем из категории "Конструкции" новый блок "Итератор" в бизнес-процесс и настраиваем его на работу с переменной "Платежи":


Итератор сам последовательно пройдет каждое значение переменной и в дополнительные результаты вернет ключ и значение.

Для вычисления и хранения суммы платежей добавляем ещё одну переменную "Сумма платежей" (payment_sum) с типом "Число" и в итераторе к текущему значению суммы платежей прибавляем значение итератора:


Теперь осталось только из суммы сделки вычесть сумму платежей и записать значение в поле "Осталось оплатить":


В итоге схема бизнес-процесса должна выглядеть так:


Бизнес-процесс настраиваем на автозапуск при создании и изменении сделки.

Тестируем:


45 000 - (5 000 + 6 000 + 10 000) = 24 000

Идеально! :-)

Комментарии

  1. Все здорово, только вот с задачами итератор работать не умеет. Нельзя просто так взять и поставить задачу каждому участнику группы с помощью бизнес-процессов. Потому что нет инструмента , который подготовит для итератора список пользователей. Это возмутительно так как с действием "ознакомление с документом" использование итератора возможно.

    ОтветитьУдалить
    Ответы
    1. Артём, здравствуйте!)

      Не совсем поняла Вашу задачу. Вам нужно каждому участнику определенной рабочей группы поставить задачу или задание "Ознакомление с документом"? С задачами не должно быть проблем: сохраняете список участников группы в множественную переменную с типом "Пользователь", по этой переменной запускаете итератор и в цикле итератора ставите задачи.

      Если нужно использовать задание "Ознакомление с документом", то опишите, пожалуйста, подробнее, что нужно настроить.

      Удалить
    2. К сожалению так не работает. При присвоении множественной переменной группы пользователей, присваивается именно идентификатор группы, а не список пользователей

      Удалить
  2. А возможно ли в описание одной задачи итератором подставлять ID файлов из полей лида (в ссылку)?
    Не совсем понятно как их разделить в этом случае

    ОтветитьУдалить
    Ответы
    1. Как я поняла, нужно сформировать список из ссылок на файлы и поместить этот список в описание задачи.

      Если да, то можно создать переменную с типом "Многострочный текст" и в цикле итератора добавлять строку со ссылкой на файл в эту переменную. После завершения цикла добавить эту переменную в описание задачи.

      Удалить
    2. Люба, здравствуйте!
      Скажите пожалуйста, можно ли через итератор настроить отправку смс роботом сразу всем контактам, прописанным в сделке, а не только первому?

      Удалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. самые нужные фото к описанию не показывает страница(

    ОтветитьУдалить
    Ответы
    1. Вроде бы отображается всё. Напишите, плиз, в каком браузере открываете, если остается проблема.

      Удалить
  5. Как с вами связаться? Написал вам на почту.

    ОтветитьУдалить
  6. Спасибо вам!
    Год назад пытался разобраться с итератором. Очень помогла ваша статья.
    Не думал, что вы тут отвечаете, был приятно удивлён )

    ОтветитьУдалить
    Ответы
    1. Я некоторое время не занималась блогом, сейчас все комменты просматриваю и на все отвечаю)

      Удалить
  7. Добрый день, Люба, может вы в курсе по следующему вопросу?
    Получаю по задаче утверждения комментарии пользователей из дополнительных результатов. По идее это многострочная переменная. Пытаюсь запустить по ней итератор, он срабатывает только один раз. Хотя если это значение в уведомления пользователя вывести, они выводятся в несколько строк, например:
    test1 test1 (ch@lala.ru): Утвержден
    Комментарий: 123
    test2 test2(du@lala.ru): Утвержден
    Комментарий: 456
    test3 test3 (v@lala.ru): Отклонен
    Комментарий: фыв.
    Я через стороннюю программу формирую документ с комментариями и результатами утверждения. Все пишется в одну строку, без разделения.

    ОтветитьУдалить
    Ответы
    1. Константин, здравствуйте!
      Проверила - да, комменты из Утверждения - это многострочный текст, а не Строка с множественными значениями. Поэтому и итератор срабатывает только один раз. Пока нет идей, как ее разделить.

      Удалить
    2. Спасибо, может есть признак окончания строки в многострочной переменной?

      Удалить
    3. Проверяла "\n" и "[br]" - по ним разделить строку не получилось.

      Удалить
    4. $a = explode("\n", $text); в php срабатывает, можно в админке в командной строке php проверить:

      $text = "
      User1: Утвержден

      User2: Утвержден


      User3: Отклонен
      Комментарий: Требуется разместить последний проект договора с заполненным п.п. 3.1.1.
      ";
      //print_r($text);
      $a = explode("\n", $text);
      $a = array_diff($a, array('', null));
      print_r($a);

      сравнение array_diff с нулем, чтобы убрать пустые строки из массива, если образуются.

      Удалить
  8. Добрый день! отличная статья. Столкнулся с задачкой по итератору. Отправил Вам на почту более детально. Посмотрите пж, как время будет

    ОтветитьУдалить
  9. Люба, отправил Вам запрос на почту. Надеюсь ответите. Не получается запустить итератор с формулой:
    staff_tmp ={=Variable:staff_tmp}+{=A64775_90163_3992_42294:Value}
    staff_tmp - привязка к пользователю
    A64775_90163_3992_42294:Value - перебор переменной - привязка к пользователю.

    Что не так делаю. В конце БП staff_tmp пуст

    ОтветитьУдалить
    Ответы
    1. Сергей, добрый день!)

      Вместо ={=Variable:staff_tmp}+{=A64775_90163_3992_42294:Value} попробуйте:
      {{=merge({=Variable:staff_tmp},{=A64775_90163_3992_42294:Value})}}

      Проверила на своем упрощенном БП с двумя множественные переменными с типом Привязка к сотруднику: если использовать merge, то значения из переменной, по которой запускается итератор, последовательно копируются во вторую переменную.

      Удалить
    2. Добрый день, в схожей ситуации в итератор загружаю переменную с несколькими сотрудниками, при добавлении нового сотрудника через "merge" из первой переменной берется только один пользователь (их там может быть 10).. в чем может быть проблема?

      Удалить
    3. Добрый день!
      Пока не сталкивалась с такой ситуацией. Напишу, если будет решение.

      Удалить
  10. Спасибо!!! "=merge" - это то, что нужно для создания переменно и использования ее в Итераторе!

    ОтветитьУдалить
  11. А скажите, можно без итератора как-то узнать количество значений в множественном поле, запустить цикл и обратиться последовательно к каждому полю? Задачка: хочу настроить график платежей по сделке. Накреативил два множественных списка: даты платежа и сумма платежа. Теперь хочу поставить ответственному по одной задаче на каждую такую пару. Итератор тут не подойдет.

    ОтветитьУдалить
    Ответы
    1. А почему итератор не подходит в данном случае? Он как раз нужен, чтобы последовательно обратиться к каждому значению множественного поля.

      Удалить
    2. А как такой кейс можно решить с помощью итератора если дано два множественных поля и нужно получить значения из полей (1ая строчка Дата платежа, 1ая строчка Сумма платежа) а таких строчек может быть 10 шт. и отправить ответственному данные только по 1ой?

      Удалить
  12. Здравствуйте!
    Как вывести множественное значение в файл Word, чтобы каждый раз появлялась новая строка?
    Есть процесс ознакомления - количество сотрудников изначально неизвестно, в шаблоне Word только одно поле для вывода ФИО и одно поле для указания даты ознакомления. Как добавить следующие значения в файл Word, чтобы получился список ознакомившихся с датой?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте! Каким образом формируется документ: действием Создание Документа CRM или какими-то активити из маркетплейс?

      Удалить
    2. Шаблон лежит на Диске, используем "Генератор документов" из маркетплейс.

      Удалить
    3. Не подскажу. С Генератором документов работала, но конкретно с такой задачей не сталкивалась.

      Удалить
  13. Добрый день Тинаева Люба, подскажите, как прибавить в конец первой переменной (строки) значение второй переменной (тоже строка)?
    Из примеров выше всё понятно "={=Variable:staff_tmp}+{=A64775_90163_3992_42294:Value}" это сложение.
    А как сложить строки. Аналог в php ""

    ОтветитьУдалить
    Ответы
    1. А просто через пробел должно работать. То есть вот так ={=Variable:staff_tmp} {=A64775_90163_3992_42294:Value}, если бы нужно было в строку объединить значения, а не посчитать сумму

      Удалить
    2. Спасибо большое! Очень помогли.

      Удалить
  14. Добрый день ! Возможно это не совсем в эту ветку .Я так и не нашел есть ли такая возможность присваивать переменной значение из массива по ключу примерно так как в обычном языке программирования

    i = 3 // Ключ
    y = x [i] // значение по ключу

    В итераторе есть и ключ и значение , но можно ли ими как то пользоваться кроме как присваивать их значения?

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Не поняла вопрос. В дополнительных результатах итератора есть и ключ и значение, их можно записать в переменные, если требуется.

      Удалить
    2. Да это я понял, вопрос в том если я хочу взять значение из массива допустим по ключу 3 (четвертый элемент по счету в массиве ) не через итератор путем перебора всех значений массива, допустим директивно так пример блока изменения переменной "Переменная " = {=Variable:Array[3]} . Но так не сохраняет блок изменение переменной Битрикс значит это не возможно, есть ли такая возможность в принципе?

      Удалить
    3. Теперь поняла вопрос. Насколько я знаю, ключ и значение только на текущей итерации можно получить. После завершения работы итератора обратиться к значению по ключу не получится.

      Удалить
    4. Спасибо, то есть к массиву ни как не обратиться на прямую без итератора?

      Удалить
  15. Добрый день. Есть компания в которой несколько контактов, стоит задача, чтоб при смене ответственного в компании, менялся ответственный во всех контактах. Это можно как-то реализовать через итератор?

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Да, можно реализовать через итератор. В переменную нужно записать значение поля "Контакты компании" и по этой переменной запустить итератор. В итераторе последовательно обновить контакты: можно с помощью запуска бизнес-процесса для контакта.

      Удалить
    2. День добрый. А можно чуточку подробнее? Каким образом мне в переменную вписать все контакты, принадлежащие этой компании?

      Удалить
    3. В бизнес-процессе для компании нужно создать множественную переменную с типом "Целое число", в нее записать значение поля "Контакты компании" скрин. По этой переменной запустить итератор.

      Удалить
    4. Интересно, у меня такого пункта нет, возможно он называется Контакты https://prnt.sc/sotuv4. БП так должен выглядеть https://prnt.sc/sotvbe https://prnt.sc/sotw20? А то как то не заработал. Спасибо

      Удалить
    5. На Вашем первом скриншоте показана настройка бизнес-процесса для сделки и, соответственно, список полей сделки. В сделке список связанных контактов находится в поле Контакты. Вам нужно настроить смену ответственного в контактах при изменении ответственного в сделке или в компании? Если в компании, то бизнес-процесс наверно правильнее настроить для компаний, а не для сделок. В бизнес-процессе для компании список связанных контактов будет в поле Контакты компании.

      Я бы настроила так:
      1. Бизнес-процесс в компании, который запускается на любое изменение компании, проверяет, изменилось ли поле Ответственный и, если изменилось, то запускает бизнес-процесс из п.2
      2. Бизнес-процесс с параметром в контактах. В параметр передавать ID нового ответственного. Этот БП состоит из одного действия: меняет в контакте ответственного на значение параметра.

      Удалить
    6. Я планировал менять ответственного в контактах, при изменении в сделке. Т.к. к сделке уже прикреплена и Компания и Контакты компании

      Удалить
    7. Тогда БП по сделке, но в остальном принцип тот же.

      Удалить
  16. Здравствуйте. У меня вопрос такой. Можно ли в блоке итератора в активити Согласование отминусовать Автора документа?
    Все пользователи записаны в переменную и в это переменной есть еще и автор. (из переменной его не удалить, так как пользователи берутся из поля где записаны подразделения)
    И есть в блоке итератора активити согласования.
    Согласуют все сотрудники которые были выявлены с помощью итераций.
    НО! Согласует еще и Автор.

    ОтветитьУдалить
  17. Добрый день! Фото не открываются (не видны совсем) ни в каком браслете: chrome, yandex, Mozilla. Замените, пожалуйста.

    ОтветитьУдалить
    Ответы
    1. Добрый день! А какой у Вас провайдер интернета? Через некоторые провайдеры есть такая проблема.

      Удалить
  18. Люба, добрый день. Я правильно понимаю, что итератор может работать только с одним параметром, допустим перебрать названия товаров и вывести их в список. А чтобы получить к примеру еще и ID товаров, нужно делать еще один итератор. А как потом совместить ID товаров и их названия в одном месте, типа таблицы, не подскажете?

    ОтветитьУдалить
    Ответы
    1. Добрый день!)
      Итератор работает с одной множественной переменной. А какая у Вас задача, с каким полем/переменной работаете и что хотите получить в итоге?

      Удалить
  19. Здравствуйте.
    Можете помочь решить задачу?

    У нас есть скопированные сделки-Дочки.
    Необходимо в карточке основной Сделке внести их Название, ID, стадию сделки-дочки в динамике.

    Но в такой скопированной сделке необходимо добавить признак, по которому бизнес-процесс определит, что именно она скопированная.

    Как добавить этот признак? нужно ввести переменную? делать через Итератор
    и настроить цикл в процессе, чтобы найти нужную?
    но у меня сейчас 5 направлений по сделкам.
    Как задать переменную, чтобы она отделила именно скопированные-дочерние сделки?

    может как-то попроще можно?

    буду благодарна если поможете 😳

    я так поняла что это на объем статьи катит?( может сможете помочь реализовать?

    или может хотя бы объясните простым языком как добавть ID в карточки сделок?:
    Для того чтобы была связь основной и дочерней сделки, необходимо записывать их ID.

    ОтветитьУдалить
    Ответы
    1. Татьяна, здравствуйте)

      Можно более простой вариант сделать:

      1. Добавить в сделках множественное пользовательское поле "Дочерние сделки" с типом "Привязка к элементам CRM", сущность Сделки. В основных сделках указывать все их дочерние сделки.

      2. Добавить в сделках пользовательское поле "Дочерняя сделка" с типом Да/Нет. Для дочерних вручную устанавливать в Да. Если в сделке есть какой-то другой признак, что она является дочерней, например, она в каком-то отдельном направлении, то это поле можно не создавать.

      3.Чтобы информация о каждой дочерней сделке была в виде "Название - ID - стадия" нужно написать бизнес-процесс с запуском на создание и изменение, который будет по признаку "Дочерняя сделка"=Да в Название сделки записывать строку "Название - ID - стадия". При этом в основной сделке всегда будет отображаться список ссылок на дочерние сделки с актуальными названиями, которые уже содержат всю необходимую инфу.

      Удалить
  20. Добрый день, помогите решить задачу.
    Необходимо получать значение из определенного поля,к примеру email, у всех сотрудников определенного отдела. С помощью итератора пытаюсь настроить но в итоге получаю значение типа "D30_все сотрудники отдела", можно как то из этого значения вытащить каждого сотрудника?

    ОтветитьУдалить
    Ответы
    1. Добрый день!)
      Проверила на тестовом портале - у меня так же получается, как и у Вас. Если найду какое-то хорошее решение - напишу.

      Удалить
  21. Отличная штука - итератор! Выше уже был совет по задаче, я хочу подтвердить.
    В элементе бизнес процесса есть множественное поле с типом "Привязка к сотруднику". Предположим, его заполнили тремя сотрудниками. Далее возникает необходимость автоматически поставить одну и ту же задачу всем трем сотрудникам. Я указываю в поле "Ответственный" то самое множественное поле. Но задача ставится только одному, первому выбранному. Пробовал через множественную переменную - то же самое.
    Взял итератор.
    Сначала обязательно помещаем множественное поле, содержащее список сотрудников в множественную переменную (активити "Изменение переменных"). Затем ставим активити "Итератор", в нем выбираем нашу множественную переменную. Затем помещаем в цикл итератора задачу. В поле "Ответственный" выбираем из дополнительных результатов "Итератор - значение".
    Все. Задача будет поставлена всем, кто содержался в множественном поле.
    Спасибо!

    ОтветитьУдалить
  22. Люба добрый вечер! подскажите как решить задачу в облачном Б24
    Есть бизнес процесс, в нем есть множественное поле с типом строка (Например: Форма)
    в этом поле указано три и более значений (Например: 1ая строчка - круг , 2ая строчка - овал, 3ая строчка - квадрат)
    как получить через бизнес процессы в новое поле значение содержащиеся во второй или любой другой строчке?
    пример с формой это только пример, в реальности будут каждых раз новые значения которые указывает пользователь

    ОтветитьУдалить
    Ответы
    1. Получилось так сделать: первый БП (основной) https://prnt.sc/u7574z , в нем добавляем итератор на множественное поле. Итератор 1) создает элемент списка (БП вспомогательный создан для хранения полученных данных от итератора) в который передает ID родителя (БП основной), Полученное значение, Ключ значения (он же номер строки) и 2) запускает БП вспомогательный по созданному элементу списка (в параметре ID указываем значение из Дополнительные результаты https://prnt.sc/u759kn . во вспомогательном БП читаем элемент по ID родителя (основной БП) и уже по конструкции выполняем условие и добавляем необходимое значение в нужное для задачи поле, пример быстро накидал для теста https://prnt.sc/u75aub , а это условие на номер строки https://prnt.sc/u75ayu . Все получилось как было задумано)

      Удалить
    2. столкнулся с необходимостью выделить уникальные данные между массивами 1 и 2. Сделал это следующим образом (высылайте оптимизированную версию в ответ, если придумаете) https://a.radikal.ru/a04/2103/cf/df5bc050b49d.jpg

      Удалить
    3. Если будет аналогичная задача - выложу пример в блоге.

      Удалить
  23. Люба, здравствуйте. Подскажите пожалуйста, как все значения итератора занести в 1 переменную если используется несколько списков? Или создать поле в сделке, в которое вносить все строки списков?

    ОтветитьУдалить
    Ответы
    1. Андрей, здравствуйте!
      Я не поняла Ваш вопрос. Опишите, пожалуйста, подробнее: какую переменную обрабатывает итератор, что значит "используется несколько списков"?

      Удалить
  24. Добрый день! Подскажите пожалуйста, как с помощью итератора возможно выбрать совпадение телефона в контактах или компаниях?

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Я думаю, что тут без использования плагинов из маркета или программных доработок не получится.

      Удалить
    2. Можно, при этом программирование БП Битрикс-занятие не для слабонервных.
      А работа с массивами организована через одно место.

      Делаем так:
      1) В итераторе каждый цикл увеличиваем переменную n на 1 и на выходе получаем число элементов.
      2) Заводим переменные a,b,c,d,e и если n=1, то a=значение, если n=2, то b=значение.
      3) на выходе сравниваем a<b?, a<c?, b<d? или любой удобный вам режим поплавка. Если одинаковые, удаляем значение.
      До пяти еще можно, но большее количество номеров - уже ад с проклятиями студентов с бодуна, писавших ЭТО НЕЧТО.

      Удалить
  25. Добрый день! Подскажите пожалуйста, как можно вывести множественную переменную в описание блока "Запрос дополнительной информации" списком, а не через запятую. Дело в том, что пользовательское поле содержит массив из адресов, и эти адреса требуется вывести списком, друг под другом.

    Или можно как-то по-другому возможно решить эту задачу

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Создайте переменную с типом "Текст" например "Список адресов". Запустите итератор по своей исходной множественной переменной и на каждой итерации нужно добавлять к переменной "Список адресов" значение итератора скрин. В запрос доп инфы выводите итоговое значение переменной "Список адресов".

      Удалить
    2. Спасибище вам огромное!!!! Со вчера сижу с этим, а оказывается вот как надо :) Всего вам хорошего! Спасибо! И так ответили быстро!

      Удалить
  26. Люба, добрый день! Может и мне сможете помочь. В запросе доп. информации менеджер должен заполнять 3 поля для одного выезда инженера - район (тип "Список"), адрес (тип "Адрес Google карты") и количество замеров (тип "Число"). После этого автоматически создается сделка в в отдельной воронке с названием "Район, адрес, количество замеров". Выездов инженеров можете потребоваться от 1 до 50 по разным адресам, то есть максимум менеджеру нужно будет заполнить 150 полей. Возможно ли добавлять эти заветные три поля при необходимости, а не создавать отдельно 150 полей с похожими названиями? И как с помощью итератора можно будет запускать процедуру создания новой сделки с названием, соединенном из трех полей?

    ОтветитьУдалить
    Ответы
    1. Добрый день!) Хочу помочь, но не оч поняла задачу.
      А как менеджер получает запрос доп информации? Как-то в цикле настроено, чтобы 50 раз отправить этот запрос?

      Удалить
  27. Добрый день.
    Использую итератор для пробега по списку. Но в списке скоро буднт около 150 записей и постоянно вводят новые. Нужно постоянно добавлять новые записи по умолчанию. Как пробежать по всех элементах списка без указания значений по умолчанию(Нужно организовать цикл по списку и вытянуть ID каждого элемента). Спасибо

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Без программирования вот этим плагином из Маркета https://kosas.ru/manuals/course1/contents/#LE69 можно получать элементы списка.

      Удалить
  28. Здравствуйте. Мне необходимо отправлять уведомления пользователям которые не проголосовали. Никак не могу понять, как вычислить этих пользователей :(

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      А как задаете пользователей в задании на утверждении? Это какая-то переменная или просто список сотрудников?

      Удалить
    2. Здравствуйте. Переменная USERS.

      Удалить
    3. Я бы попробовала сделать так:
      Использовать параллельное выполнение, в одной ветке задание, а в другой пауза и после нее поиск тех, кто не проголосовал. Если такие есть, то отправить им уведомление. Как искать: в переменную, например, VOTED_USERS сохранить из дополнительных результатов тех, кто уже утвердил плюс тех, кто уже отклонил задание. Пройти итератором по переменной USERS и на каждой итерации запускать итератор по переменной VOTED_USERS. Внутри второго итератора проверять, совпадают ли значения. Если да, значит сотрудник проголосовал. Если нет, значит добавить его в переменную, где будут храниться не проголосовавшие.
      Как то так)

      Удалить
    4. Любовь, огромное вам спасибо! )

      Удалить
  29. Здравствуйте Любовь! Скажите пожалуйста решает ли итератор проблему перехода сделки из одной воронки в другу сразу в нужную стадию?

    ОтветитьУдалить
    Ответы
    1. Алексей, добрый день! Нет, для этой задачи нет необходимости использовать итератор.

      Удалить
  30. Доброго утра, Люба

    Сейчас занимаюсь вопросом учета платежей, создал раздел Платежи, добавил четыре поля Сумма, Дата, Способ, Оплачено, в Оплачено каждый раз при сохранении прибавляется цифра из поля сумма, все платежи заносятся в Универсальный список, ИД сделки,Дата,Сумма,Способ,Пользователь. Возник вопрос внесения дублирующихся платежей, один сотрудник внес, потом другой, решил сделать проверку платежа, функции поиска в списке в БП не нашел, думаю можно итератором пройти по списку, не пойму как в переменную сохранить массив списка, подскажите или может есть другой способ поиска по спикам

    ОтветитьУдалить
    Ответы
    1. Владимир, добрый день!
      Штатными средствами наверно не получится пройти по списку элементов. Можно это сделать приложениями из Маркета:
      https://www.bitrix24.ru/apps/?app=itsolutionru.restactivity или https://www.bitrix24.ru/apps/?app=kosas.robots - есть активити для поиска элемента в списке.

      Удалить
  31. Добрый день! можно ли с помощью итератора выводить зависимые списки значений? Например, в карточке лида создано поле категория товара и поле наименование товара. при выборе в категории товара значения двери во втором поле "наименование товара" выводить список дверей, а при выборе в категории товара окна выводить только иды окон?

    ОтветитьУдалить
  32. Люба, добрый день! Новичок я в битриксе (облачный), пытаюсь разобраться как написать бизнес процесс на сделку. Суть такова: при создании сделки определенного направления необходимо просмотреть значение одного пользовательского поля у всех связанных со сделкой контактов и при наличии хотя бы у одного связанного контакта определенного значения поменять название сделки на указанное, если значение не найдено то изменить наименование на "Очередная работа". Создал бизнес процесс в сделках запускающийся на ожидание статуса сделки - далее условие (описал условие) - далее изменение документа в зависимости от условий. Работает только на первый связанный со сделкой контакт.... Возможно итератор решит мою проблему НО не знаю куда его втиснуть и как его написать! не дается он мне :(

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Очень похожий пример описывала в статье. Там в первом бизнес-процессе для сделки итератор проходит по всем связанным со сделкой контактам.

      Удалить
    2. Т.е. моя задача так же будет состоять из двух последовательных бизнес-процессов с выбором в первом "данных crm"?

      Удалить
    3. Нет, для вашей задачи достаточно одного бизнес-процесса в сделках. Итератором обойдете связанные контакты и для каждого контакта с помощью выбора данных CRM получите значение нужных полей. В статье второй бизнес-процесс нужен только для отправки смс-сообщения.

      Удалить
    4. он получает значения нужных полей здесь и сейчас при каждом цикле, НО не запоминает их. Правильно? так как же по итогам работы итератора произвести оценку наличия\отсутствия выбранного значения по условию и изменить наименование сделки? или все же хранит где-то значения для возможности последующей обработки!?

      Удалить
    5. Итератор после обхода множественной переменной данные больше не хранит.
      Для решения можно сделать так:
      - создать переменную, например, "Значение найдено" с типом "Да/Нет", по умолчанию установите "Нет"
      - в теле итератора на каждой итерации в Условии проверяете, нашли то, что искали или нет
      - если нашли, то переменную "Значение найдено" устанавливаете в "Да"
      - после завершения работы итератора проверяете в Условии переменную "Значение найдено"
      - если "Значение найдено"="Да", то меняете название сделки

      Удалить
    6. Да! Отлично! Работает! Спасибо!

      Удалить
  33. Здравствуйте. А можно ли сделать итератором всех пользователей и все подразделения?

    ОтветитьУдалить
    Ответы
    1. Евгений, добрый день! Сталкивалась с такой задачей, но пока не знаю, как ее решить.

      Удалить
  34. Добрый вечер, помогите понять. При переходе на стадию забускаеться БП с двумя итераторами в параллельном выполнении, в результате создаются сделки в разных направлениях, проблема в том, что в в одном направление создаются сделки, в другом есть сообщения создавшихся сделок но на самом деле их нет, если создать отдельный БП и запустить в конце все ок, смущают что криво сделано.

    ОтветитьУдалить
    Ответы
    1. Ирина, добрый день!
      А можете скинуть скрин схемы БП, где параллельно работают итераторы, чтобы было понятно, какие еще действия выполняются?

      Удалить
    2. Люба, добрый день! https://prnt.sc/z3s5lt скрин БП

      Удалить
    3. Добрый день!
      По схеме БП вроде бы всё корректно.
      А в лог бизнес-процесса никакая ошибка не пишется у Вас?

      Удалить
  35. Добрый день, Любовь.
    У меня есть 2 множественные переменные (товар и количество)
    Нужно их попарно объединить в поле документа в виде:
    товар 1 - количество 1
    товар 2 - количество 2 и т.д.
    В каждом документе количество таких пар может быть разное.
    Никак не могу разобраться как это сделать, кажется что нужно применить итератор, но не пойму как ((
    Если сталкивались с подобной задачей или знаете как решить, подскажите, пожалуйста.

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Попробуйте так:
      - Создаете множественную переменную Итог
      - Первый итератор запускается по переменной Товар
      - Второй итератор запускается по переменной Количество внутри первого итератора
      - Внутри второго итератора проверяете: если Ключ первого итератора равен Ключу второго итератора, то в переменную Итог добавляете строку "Значение первого итератора - Значение второго итератора".
      - После всех итераторов В поле документа записать переменную Итог

      Должно всё получиться)

      Удалить
    2. Да, все работает!
      Любовь, огромное спасибо Вам за помощь и за статьи.

      Удалить
  36. Здравствуйте!
    Создаю в БП документ по шаблону. Интересует, есть ли метод вывода в него значений множественной переменной в виде списка (как список товаров в счёте и т.п.)?

    ОтветитьУдалить
    Ответы
    1. Увидел ответ на подобную задачу чуть выше, но так понял, что там данные предполагается выводить в документ простым текстом, каждую позицию просто с новой строки? А таблицей как-то можно?

      Удалить
    2. Добрый день!
      Не очень много в последнее время работаю с созданием документов из БП, поэтому не могу подсказать по этому вопросу.

      Удалить
    3. Очень жаль... В целом-то вопрос лишь в том, возможно ли в метку шаблона, скажем, {ProductsProductName} передать множественную переменную из БП именно как массив значений, а не строку с их перечислениями... Если что-то припомните по этой теме, был бы благодарен... а то везде молчат... %))

      Удалить
    4. Хорошо) напишу, если похожий пример будет в работе

      Удалить
  37. Люба добрый день.
    Подскажите пожалуйста сталкивались с такой ситуацией...?

    задача вывести переменную списком из переменной а не строкой

    пытался в порядке бреда сделать так:
    - Работаю с универсальным "списком 1". В этом списке есть привязка к универсальному "списку 2". соответственно в в с "списке 1" хранятся номера ID из "списка 2".
    - организовал перебор этих ID в итераторе для получения буквенных значений из "списка2"
    - для этого создал переменную 1 (привязка к элементам в виде списка) и внес туда поле из "списка 1". эту переменную поместил в итератор. на каждом витке итератора выбираю значение.
    - отдельно в БП создал переменную 2 (множественный список) и на каждом витке итератора вношу туда текстовое значение.

    как результат записывает только последнюю запись)))

    может знаете как вставить после каждого значения перенос строки?

    ОтветитьУдалить
    Ответы
    1. Добрый день!)
      Я правильно поняла, что в итоге надо получить текстовые значения из списка2 в виде:
      aaa
      bbb
      ccc
      и тд
      ?

      Удалить
    2. да, совершенно верно!

      Удалить
    3. А просто записывать их в строку перемежая BBCode типа [br] не получается?

      Удалить
    4. Добрый день!

      Можно попробовать с помощью переменной типа "Многострочный текст":
      Создать переменную с типом "Многострочный текст" например "Буквенные значения из списка 2". В итераторе получаете очередное буквенное значение из списка 2 и добавляете его в переменную "Буквенное значение из списка 2"

      Удалить
    5. пока не выходит... но уверен, что выход где-то есть)

      Удалить
  38. буду признателен за уделенное время!

    ОтветитьУдалить
  39. Здравствуйте!
    Прошу помочь разобраться. Есть множественная переменная типа "Строка", которая содержит значения "Наталья" и "Чекалова". Как с помощью итератора можно записать первое значение в поле документа "Имя", а второе в поле документа "Фамилия"?

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Итератор возвращает в дополнительные результаты Ключ и Значение. Ключ - это просто порядковый номер итерации, начиная с 0. В теле итератора можно сохранять Ключ в доп переменную и проверить: если она равна 0, то записать Значение в поле Имя, если равна 1 - записать в Фамилия.

      Удалить
  40. добрый день вы уточнили что «сумма платежей» должна быть как тип «число». Можете подсказать какой тип использовать для всех других переменных и полей.

    ОтветитьУдалить
    Ответы
    1. Добрый день! Все поля с типом Число в моем примере.

      Удалить
  41. Люба, добрый день.

    Есть множественное поле Сделки типа "Привязка к элементам CRM". Там хранятся дочерние Сделки.
    Нужно, имея ID дочки, удалить эту дочку из значений.

    Вроде бы простая история, а я голову сломал...
    Можете помочь?

    ОтветитьУдалить
    Ответы
    1. Сергей, добрый день!

      Можно создать 2 множественные переменные с типом Привязка к элементам CRM:
      1. В первую записать значение поля, в котором хранятся дочерние сделки
      2. Во вторую будем сохранять дочерние сделки, которые нужно оставить.

      Потом пройти итератором по первой переменной. В итераторе проверять, если это НЕ идентификатор дочерней сделки, которую надо удалить, то текущее значение итератора во вторую переменную записываем.

      После завершения работы итератора пересохранить в поле сделки то, что во второй переменной.

      Удалить
    2. Ох, спасибо вам огромное!
      Век живи – век учись. 💖

      Удалить
  42. Небольшой оффтоп: Есть необходимость в шаблоне документа выводить число (а можно и строку) с неким форматированием, скажем, с пробелами между разрядами, т.е. вместо "123456" выводить "123 456". Это возможно?

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Для шаблона документа не видела такого модификатора данных. Можно попробовать в бизнес-процессе в копии поля разделять разряды. Например, функцией numberformat.

      Удалить
  43. Здравствуйте, а можно написать вам по поводу БП на почту?

    ОтветитьУдалить
  44. Добрый день! Подскажите пожалуйста. Наверняка вопрос элементарный, но не для меня. Как настроить БП чтобы автоматически или при изменении он заменял один знак (или символ) на другой в выбранных полях сделки? Грубо говоря: менеджеры ставят запятую или "/" там, где должна быть точка и все ломается

    ОтветитьУдалить
    Ответы
    1. Добрый день!)
      Можно попробовать так, поменять пользовательское поле, например, {{Адрес}}:
      1. с помощью функции explode разделить значение поля по тому символу, который нужно заменить. Например, по "/": {{=explode("/",{{Адрес}})}}.
      2. соединить то, что получили в п.1 по тому символу, на который нужно заменить. Например, {{=implode(".",{{значение_из_п.1}})}}
      3. записать то, что получилось в п.2 в исходное поле сделки

      Удалить
    2. Спасибо, будем пробовать!
      Подскажите, а нельзя как-то использовать функцию str_replace ? Так не будет проще?

      Удалить
  45. Добрый день!
    Подскажите, пожалуйста, есть ли возможность заполненные поля из бизнес-процесса автоматически подставить в поля СРМ-формы?

    ОтветитьУдалить
    Ответы
    1. Наталья, добрый день!
      Опишите подробнее задачу, не поняла какие поля заполняются из бизнес-процесса.

      Удалить
    2. Добрый день!
      Например, сотрудник запускает БП из живой ленты и указывает значение требуемых полей при добавлении (название обучения, дата начала и конца обучения и т.п.), а также указывает ссылку на СРМ-форму. Нужно, чтобы сотрудник, перейдя по этой ссылке имел в СРМ-форме ряд автоматически заполненных полей, которые до этого были заполнены сотруником при запуске БП (название обучения, дата начала и конца обучения и т.п.).

      Удалить
    3. Добрый день!
      Можно на основе заполненных данных создавать сделку, например, в какой-то отдельной воронке. А потом для этой сделки использовать CRM-форму с заполненными по умолчанию полями. То есть я думаю, что надо идти от сделки в данном случае.

      Удалить
    4. Добрый день!
      То есть получается после запуска БП создается сделка. А срм-форму тоже из сделки запускаем?Как тогда связать поля срм-формы и сделки?

      Удалить
    5. Добрый день!)
      Посмотрите описание персонализированных CRM-форм. В бизнес-процессах в форме Вставка значений доступна ссылка на форму, при заполнении которой данные автоматом поступят в сделку.

      Удалить
  46. Добрый день. Не подскажите на ко множественной переменной добавить в конец ОДНО значение?

    ОтветитьУдалить
    Ответы
    1. Через функцию merge?

      = merge({=массив_1}, {=массив_2});

      Удалить
    2. Люба, можно вопросик не про итератор? 🙄

      Как в коробке задать паузу в БП длиной 1-2 секунды?

      Задаю 1 секунду, пауза длится не менее 30 секунд 🥴

      В настройках модуля поставил минималку — 1 сек.

      Удалить
    3. Сергей, здравствуйте)
      Не подскажу - с такой задачей не сталкивалась.

      Удалить
    4. Уже пообщались с ТП Б24. Совместно пришли в неутешительному выводу: штатного механизма для вставки в БП короткой (1-2секунды) паузы, нет.

      Удалить
  47. Добрый день помогите пожалуйста советом, есть строка с множественными значениями
    в в описании задания бизнес процесса нужно вывести значения этой строки списком, как это можно сделать?

    Сейчас в описании задания стоит:
    {{Список дистрибьюторов региона (system)}}

    И вывод выглядит так:
    ООО «Лидер» / г. Москва и Московская обл., ООО Интереттехнологии / г. Москва и Московская обл., ООО «Триал Маркет» / г. Москва и Московская обл., ПТГ «МИСТЕРИЯ» / г. Москва и Московская обл., ГК «ОптиКом» / г. Москва и Московская обл., ООО «U2B» / г. Москва и Московская обл., ООО «Чебоко» / г. Москва и Московская обл., ООО «Деловая Русь» / г. Москва и Московская обл., ГК «Гудвин» / г. Москва и Московская обл., ООО «Сапплз» / г. Москва и Московская обл.

    А очень хочется его вывести следующим образом:
    ООО «Лидер» / г. Москва и Московская обл.
    ООО Интереттехнологии / г. Москва и Московская обл
    ООО «Триал Маркет» / г. Москва и Московская обл.

    чтобы каждое значение с новой строки было

    Это возможно?

    ОтветитьУдалить
    Ответы
    1. Добрый день)
      Надо создать переменную с типом Многострочный текст. Потом исходную строку надо поместить в итератор и на каждой итерации к новой созданной переменной добавлять значение итератора с переходом на новую строку. Полученную переменную уже использовать в задачах/заданиях.

      Удалить
    2. Спасибо большое! Вы мне очень помогли)

      Удалить
  48. Добрый день! у меня большая просьба подсказать! Есть БП который запускается каждый день и проверяет какои сеичас день, в результате создает сделку для доставки, доставку определяет по региону и дню недели. Сделку создает если доставка завтра. Итератором считывает дни недели со списка https://prnt.sc/1hnfz2g, https://prnt.sc/1hni02v, затем эти дни переносим в переменную дни доставки https://prnt.sc/1hnigiy и другие переменные https://prnt.sc/1ho1kcl. И тогда идет проверка итератором https://prnt.sc/1ho2qvw, https://prnt.sc/1ho2x0k, https://prnt.sc/1ho34tf, В зависимости от региона осуществляется доставка в эти дни. проблема в том что одну неделю работает так как надо, а следующую неделю сделки создаются неправильно, потом снова правильно и незнаю в чем проблема. троха запутано надеюсь поможете https://prnt.sc/1ho889c

    ОтветитьУдалить
    Ответы
    1. Ирина, добрый день!
      К сожалению, сейчас по времени нет возможности изучить задачу.

      Удалить
  49. Здравствуйте, с бизнес-процессами сталкиваюсь впервые. Нужно настроить так, чтобы при переходе лида в статус сделки, клиенту отправлялось сообщение в Whatsapp через Wazzup и если у клиента нет Whatsapp отправлять sms сообщение. С чего начать мне нужно? может есть статьи на эту тему почитать? Пока что нет понимания как правильно прописать переменные и т.д. Каким должен быть алгоритм понимаю, но как это выполнить?

    ОтветитьУдалить
    Ответы
    1. Добрый день!)
      Ну тут надо наверно с документации по бизнес-процессам начать: когда запускаются и т.д)

      Можно создать бизнес-процесс на создание сделки, в нем делать отправку. Но я точно не скажу, можно ли с помощью активити для отправки сообщения в Wazzup узнать статус отправки: есть у клиента Whatsapp или нет. Если как-то узнать можно, то проверить этот статус и доотправить смс.

      Удалить
  50. добрый день! Вы можете подсказать как можно в поле Ответственный вставить значение с списка, но чтобы он пеменял на того кто был выбран в списке

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      А в каком виде хранятся значения в списке: ФИО, ID сотрудников?

      Удалить
  51. День добрый!

    Пожалуйста, подскажите как сотрудников отдела поместить в множественную переменную (какого типа?), чтобы использовать её в итераторе ?

    ОтветитьУдалить
    Ответы
    1. Михаил, добрый день!
      Я пробовала поместить в множественную переменную с типом Пользователь/Привязка_к_сотруднику, но в итоге с ней работать через итератор не получилось.

      Удалить
    2. Спасибо. И техподдержка подтвердила, что не получится.

      Удалить
  52. Добрый день! Можно ли итератором выполнить операции со множеством значений одного пользовательского поля в разных сделках. Допустим у меня есть значение которое представляет собой лимит полученных средств и привязывается к одной сущности компании исполнителю #1. И есть множество сделок c компаниями заказчиками #2..10, сделки которых по полю сумма составляют объема установленного лимита для компании #1. Возможно ли в БП сделать обход всех сделок по фильтру и сложением значений полей сумм сделок проверить превышен ли лимит или нет перед созданием новой сделки?

    ОтветитьУдалить
    Ответы
    1. Иван, добрый день!)

      Как я поняла, создается новая сделка, в ней указывается компания-исполнитель, и нужно при создании проверить, на какую сумму в данный момент существует сделок, у которых указана та же компания-исполнитель.

      Если так, то для облака я не знаю, как решить задачу без Маркета или доработок. Если есть подписка на Маркет, то можно получить список id сделок плагинами, например, Лаборатория роботов или REST Активити Б24.

      Удалить
  53. Здравствуйте!
    Люба, не сталкивались вы с задачей -
    из множественной переменной исключить текущее значение итератора?

    ОтветитьУдалить
    Ответы
    1. Александр, добрый день!)
      Не совсем поняла.
      Например, есть множественная переменная с значениями 100, 200, 300, 400 и есть еще одна множественная переменная с значениями 300, 400, 500, 600, по которой запущен итератор. Нужно, чтобы в первой переменной остались значения 100, 200?

      Удалить
    2. Любовь, добрый день!
      Да примерно так.
      Опишу прототип БП более детально.
      Есть номера заявок 1,2,3 (по сути это элементы списка стороннего)
      Итератор проходит по этим элементам (внутри итератора можно размещать такие блоки как чтение элемента списка и блок насыщаться сведениями) и спрашивает у Ответственного работа выполнена? Да, Нет.

      Далее хотелось бы в ветке ДА текущее значение которое итератор обрабатывает в текущий момент времени, например 1 исключать из множественной переменной.
      В свою очередь в ветке НЕТ оставлять значения 2 и 3 если ответственный по ним нажал НЕТ.
      Забыл добавить - мы поместили итератор в цикл, после итератора в цикле 1 час паузу. через час итератор запускается по оставшимся элементам 2,3 и спрашивает ответственного ДА или НЕТ.
      Цикл молотит до тех пор пока по элементам 1,2,3 не будет ДА

      Все бы хорошо, но пока я не понял как текущее значение из итератора исключить из множественной переменной.
      ТП битрикса ответила что в разработке, даже функции новые появились:
      firstvalue Возвращает первое значение множественного поля.
      Но удалить то как)))

      На самом деле кейс мне показался очень привлекательным. В сочетании с приложением задания в карточках ЦРМ можно очень интересные обработки делать при чем удобные для пользователя.

      п.с. сам по себе итератор !БОМБА! благодаря ему мы перебираем элементы списков, а по их ID вынимаем все остальное. не городя при этом кучу веток различных условий)

      Удалить
    3. Александр, здравствуйте!)
      Теперь поняла. Я несколько похожих примеров по работе с итератором хотела описать в отдельной статье.

      Можно попробовать так:
      1. Создать дополнительную множественную переменную с тем же типом данных, что и исходная (где хранятся номера заявок).
      2. Итератор идет по исходной переменной.
      3. Если для текущего значения итератора Ответственный выбирает Да, то это значение НЕ добавляется в новую множественную переменную. Если НЕТ, то добавляется.
      4. После того, как итератор отработает значение исходной переменной заменить на значение доп переменной, доп переменную обнулить.

      Удалить
    4. Любовь, добрый день!
      В новую множественную переменную значения перезаписываются а не дополняются
      https://yadi.sk/i/KGFv5Q9Ay83EtQ

      вот такая конструкция
      https://yadi.sk/i/t0-zxyPwxSPg3Q

      Видимо нужно сначала писать в техническое поле документа Оставшееся приборы действием Изменение документа с параметром Дополнить множественные поля вместо перезаписи=Да, а уже потом писать из поля документа в переменную. И потом очищать поле документа....

      Удалить
    5. Александр, каким оператором пытаетесь добавить оставшиеся?
      merge пробовали?

      Удалить
    6. Не merge не пробовал
      Сейчас так
      https://yadi.sk/i/73G99iIiDiPwPQ
      С другой стороны как merge поможет?
      = merge({=значение итератора}, {=значение итератора}) так? а если значений не два а 5... или 10
      Пробую сейчас через поле документа

      Удалить
    7. Люба, вопрос. Не знаю в тему или нет. Но может быть интересно многим.
      Если в итератор засунуть действие
      Запуск бизнес-процесса для указанного документа (при этом в обрабатываемой переменной сидит ID элемента универсального списка)
      И поставить флаг Ожидать завершения бизнес-процесса....

      БП будет ждать завершения запущенных БП по каждому элементу?

      Удалить
    8. Александр, добрый день!)
      Итератор остановится на время выполнения БП для документа и только после завершения выполнения БП перейдет к следующей итерации.

      Удалить
  54. Добрый день! Подскажите пожалуйста как нужно настроить Бизнес процесс чтобы при смене ответственного в сделке также менялся ответственный в контакте?

    ОтветитьУдалить
    Ответы
    1. Добрый день!)
      Можно настроить процесс на изменение сделки и в нем добавить активити Изменение контакта.

      Перед этим действием можно дополнительно с помощью активти Выбор данных CRM получить текущее значение Ответственного в связанном контакте и, если ответственные в сделке и в контакте разные, то сделать изменение контакта.

      Удалить
    2. Спасибо большое получилось! Теперь подскажите как сделать чтобы запускался Бизнес процесс при изменении поля ответственного в сделке?

      Удалить
    3. В параметрах БП ставите запускать при изменении а внутри бп пишите условия... или роботом.... роботы ИЗМЕНЕНИЕ ПОЛЕЙ вроде чувствуют... но почему то я их не оч люблю))) в дизайнере как то наглядней все

      Удалить
    4. Александр, можете расписать какие условия я должен расписать? Роботом это не получится сделать

      Удалить
    5. Тинаева Люба, не могли бы вы мне помочь по вопросу выше

      Удалить
    6. Асет, добрый день!)

      Бизнес-процесс не получится настроить на изменение какого-то конкретного поля. Можно, как выше написал Александр, в параметрах процесса поставить запуск на любое изменение сделки, а в самом бизнес-процессе прописать условие изменения.

      Отследить изменение именно Ответственного можно так:
      1. Создать в сделке пользовательское поле "Ответственный (служебное)" с типом "Пользователь".
      2. При запуске бизнес-процесса проверять: если "Ответственный" Равно "Ответственный (служебное)", то ничего не делать в этой ветке. Если НЕ равно, то считаем, что ответственный изменился и нужно выполнить то, что у вас по ТЗ (изменить ответственного в контакте). После этого в поле "Ответственный (служебное)" записать значение из поля "Ответственный".

      Но, если у вас задача просто чтобы Ответственный в контакте всегда был равен Ответственному в сделке, то я бы не стала отслеживать изменение Ответственного в сделке. Просто проверила бы при запуске процесса: если Ответственный в контакте не равен ответственному в сделке, то поменять ответственного в контакте.

      Удалить
  55. Люба, здравствуйте!
    Я в Битриксе новичок, подскажите пожалуйста, как настроить бизнес процесс. Задача следующая: есть Смарт процесс, привязанный к сделке, в котором указываются адреса и виды работ (из каталога товаров) по каждому адресу. Нужно, чтобы при привязке Элементов смарт-процесса к сделке, в неё добавлялись товары из смарт-процесса.

    ОтветитьУдалить
    Ответы
    1. Делаю так: БП создаю в сделке, создал множественную переменную, далее через активити "Чтение элемента смарт-процесса" получаю информацию по разделу Товары, после этого меняю переменную - указываю поле из Дополнительно "Товары". Потом в итераторе создаю элемент "добавить товарную позицию" со значением итератора, но товар не добавляется, что я делаю не так?

      Удалить
    2. Евгений, добрый день!
      Пока нет возможности проверить. Напишу, как проверю.

      Удалить
  56. Люба, очень добрый день!
    Подскажите, как решить такую задачу. Нужно переводить по 10 сделок на следующую стадию с паузой 5 минут, пока все сделки не уйдут с первой стадии, и второй вопрос сразу, почему после рассылки e-mail (по сегментам) не срабатывает триггер на отправку письма? Извините, что вопрос не в тему.

    ОтветитьУдалить
    Ответы
    1. небольшое уточнение, почему после рассылки e-mail (по сегментам) не срабатывает триггер перехода на стадию "письмо отправлено", то есть я запускаю e-mail рассылку, письма отправляются, но сделки не двигаются с места.

      Удалить
    2. Наташа, добрый день!

      А рассылке не подскажу - нет возможности протестировать.

      Насчет перевода сделок.
      Это нужно однократно сделать для существующих сделок, находящихся в первой стадии? Или постоянно поступает большое количество сделок на первую стадию, и с ними непрерывно нужно проводить эту операцию?

      Удалить
    3. Добрый день, однократно.

      Удалить
    4. Можно сделать так:
      1. создать процесс в ленте. Он будет служебным, и в нем будет достаточно создать 1 элемент
      2. для этого процесса настраиваем бизнес-процесс. БП получает сделки с помощью стороннего приложения, например, этого или этого. Тут точно не знаю, можно ли выбрать этими приложениями 10 сделок или только все сразу, надо тестировать. Если только все сразу, то на следующем этапе можно ограничиться 10 сделками
      3. полученные id сделок помещаем в итератор, в итераторе каждой сделке меняем стадию
      4. ставим паузу на 5 минут
      5. все пункты 2, 3, 4 помещаем в цикл и повторяем до тех пор, пока сделки не закончатся

      Удалить
  57. Добрый день
    У меня проблема. Нужно запустить бизнес процесс сразу по всем элементам списка, вручную это долго. Пытаюсь сделать это с помощью Итератора, но почему-то не срабатывает. Создаю переменную список, загружаю в нее id элеменов списка. В Итераторе выбираю эту переменную. И в цикле создаю активити Запуск бизнес-процесса. Но почему-то этот процесс не отрабатывает. Помогите с настройками может что не так делаю. в Активити выбираю ID документа - результат итератора, Сущность список, тип документа Сам спискок, шаблон - Шаблон нужного процесса.

    ОтветитьУдалить
  58. Добрый день!
    Подскажите пожалуйста, в какую сторону "копать" :)
    Есть такая задача.
    1. Есть материнская сделка с множественным полем тип - привязка к сущности СRM сделка, в котором записываются дочерние сделки на определенном этапе, с определенной суммой по каждой сделке, которые суммируются в отдельном поле "Общая сумма дочерних сделок".
    2. Когда дочерняя сделка завершается, то ее необходимо убрать в материнской сделке из общего списка сделок и вычесть сумму сделки из "Суммы дочерних сделок"
    Вопрос по п.2.
    Каким образом это можно реализовать через итератор ?
    Определить по ID сделки есть ли она в общем перечне и потом ее убрать из общего списка в материнской сделке?

    ОтветитьУдалить
    Ответы
    1. Люба мне выше отвечала на такой же вопрос 🤗
      https://luba-tinaeva-b24.blogspot.com/2018/04/blog-post.html?showComment=1617979728644&m=1#c4018197145170425246

      Удалить
    2. Ага, т.е. грубо говоря перебираем итератором значения сделок в поле со сделками дочерними и перезависываем их в новое поле, если попадается нужна сделка, то ее не перезаписываем. :) . Сергей, спасибо вам и Любе, само собой ! :) Пойду пробовать.

      Удалить
    3. Да, всё верно!
      Сергей спасибо!)

      Удалить
  59. И еще вопрос, есть что-то наподобие функции merge ( она добавляет значения в массив) , а функция противоположного формата чтобы удалять значение из множественного массива?

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Нет, такой функции нет. Как вы писали выше - нужно перезаписать значения массива в доп поле/переменную, исключив ненужные.

      Удалить
    2. Люба, добрый день! Большое спасибо за ответ! И еще, подскажите , а можно из сделки подобным образом ( через итератор) информацию по товарам получить ? К примеру, у нас есть сделка с 10 товарами и мне нужно выбрать все ID товаров итератором.

      Удалить
    3. Добрый день!
      В списке доступных функций такой не вижу.

      Удалить
  60. Большое спасибо за помощь! :)

    ОтветитьУдалить
  61. Любовь, здравствуйте!

    Подскажите, пожалуйста, а можно ли в БП на облаке решить задачу поиска конкретного значения в универсальном списке.
    Список состоит из двух полей:
    1) Менеджер по категории - привязка к сотруднику
    2) Категория товара - строка
    В сделке есть поля "категория", которое привязано к этому списку. Нужно по этому названию как-то найти менеджера по этой категории товара, чтобы отправить ему сообщение. Бьюсь уже более месяца...

    Спасибо!

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения

Расширение возможностей бизнес-процессов с помощью вебхуков: работа с задачами