Множественные поля — телефоны, почты, теги — хранят несколько значений сразу, и роботы тоже возвращают списки: например, части разбитой строки. Штатные действия бизнес-процессов Битрикс24 со списками работают плохо: подстановка склеивает все значения в одну строку, а запись в множественное поле затирает то, что в нём лежало. Роботы Роботеки закрывают работу с массивами: взять элемент по индексу, посчитать, проверить наличие значения, добавить и удалить значение множественного поля, а также убрать дубли, отсортировать, сложить, удалить элемент из списка и вывести список таблицей.
Откуда в бизнес-процессе берутся массивы?
Три источника. Множественные поля сущностей: телефоны и почты контакта, пользовательские поля с признаком «множественное» — теги, категории, список филиалов. Множественные переменные процесса, в которых значения накапливаются по ходу веток. И результаты других роботов: разбиение строки по разделителю возвращает список частей, извлечение по шаблону — список совпадений. Штатно с таким списком можно сделать немногое: подстановка в текст склеит значения через запятую, условие проверит вхождение по склейке. Взять именно второй телефон, посчитать теги или аккуратно дописать значение, не тронув остальные, — уже задачи для роботов ниже.
Как взять первый, последний или N-й элемент?
Робот «Получить элемент массива по индексу» принимает массив значений и индекс: 0 — первый элемент, 1 — второй, −1 — последний, −2 — предпоследний. Выход: элемент и признак «Элемент существует» (Y/N); если индекс за пределами массива, вернётся пустое значение и признак N — процесс не остановится, а ветка условия обработает нехватку данных. Типовые связки: разбили строку с ФИО по пробелу — взяли первый элемент как фамилию; разбили адрес по запятой — взяли последний элемент как дом; из списка совпадений регулярного выражения взяли первое. Результат записывают в обычное одиночное поле или переменную для следующих шагов.
Как посчитать элементы и проверить наличие значения?
Два робота-вопроса. «Размер массива / количество элементов» возвращает количество и признак «Массив пустой» (Y/N); пустые строки по умолчанию не считаются — случайная пустая позиция в множественном поле не испортит счёт. «Проверить наличие значения в массиве» ищет точное совпадение элемента — не подстроку — без учёта регистра, а опцией включается строгое сравнение. Выход: признак «Найдено» (Y/N) и индекс первого совпадения, минус один, если совпадений нет. Применение в условиях процесса: «у сделки уже есть тег VIP — пропустить выдачу скидки», «у контакта ноль телефонов — задача менеджеру дозаполнить карточку до передачи в обзвон».
Как добавить значение в множественное поле, не затирая остальные?
Главная боль множественных полей: штатное изменение документа записывает поле целиком, и, добавляя один тег, легко стереть существующие. Робот «Добавить значение в множественное поле» дописывает значение аккуратно: читает текущее содержимое поля сущности и добавляет новое к существующим. Вход: тип сущности — сделка, контакт, компания или лид, — ID сущности подстановкой из текущего документа, код поля (например, UF_CRM_TAGS или PHONE) и само значение. Опция «не добавлять, если уже есть» включена по умолчанию: повторный запуск процесса не наплодит дублей значения. Выход: признак «Успешно» (Y/N) и итоговое количество элементов в поле.
Как удалить значение из множественного поля?
Обратная операция — снять тег, убрать устаревший телефон. Вручную это значит открыть карточку и править поле; штатным действием — переписать поле целиком со всеми рисками. Робот «Удалить значение из множественного поля» принимает тип сущности, ID, код поля и удаляемое значение. Удаляются все вхождения этого значения, остальные элементы сохраняются на месте. Выход: признак «Успешно» (Y/N), сколько вхождений удалено и итоговое количество элементов в поле. Рецепт: сделка закрыта успешно — процесс снимает с компании тег «в работе» и соседним роботом добавления дописывает тег «клиент»; карточка всегда отражает актуальный статус без ручной правки.
Как взять последнее добавленное значение?
Битрикс24 хранит значения множественного поля в порядке добавления, поэтому «последнее добавленное» — это последний элемент списка. Робот «Получить элемент массива по индексу» с индексом −1 возвращает его без подсчёта длины; −2 даст предпоследний. Нюанс для полей типа «список» и «привязка к элементу CRM»: в бизнес-процесс такое поле приходит как список ID — значений списка или связанных элементов, — а не названий. Индекс −1 отдаст ID последнего элемента; чтобы прочитать по нему название, телефон или другое поле, дальше идёт робот «Получить значение поля связанной сущности» — ему передают тип сущности, этот ID и код поля. Пример: в сделке множественное поле «Согласующие» с привязкой к контакту — процесс берёт последнего добавленного и подтягивает его email в уведомление.
Как превратить строку с запятыми в множественное поле?
Из формы или интеграции значения часто приходят одной строкой: «монтаж, доставка, гарантия». Робот «Разбить строку по разделителю» делит её на список частей; разделитель берётся буквально, поэтому для строки с запятой и пробелом укажите «запятая с пробелом», иначе у частей останутся ведущие пробелы. Результат — обычный массив: его можно целиком записать в множественное поле штатным действием «Изменить документ» (поле перезапишется — для пустого поля это то, что нужно) или дописать к существующим значениям по одному через «Добавить значение в множественное поле». Подробнее о разбивке и склейке — в статье про строки в бизнес-процессах.
Как удалить элемент из массива или очистить список?
Два разных случая. Если нужно убрать значение из поля карточки — это «Удалить значение из множественного поля», он правит саму сущность. Если список живёт в переменной процесса или пришёл от другого робота и карточку трогать не надо — «Удалить элемент из массива». Два режима: по значению — удаляются все совпадения, по умолчанию без учёта регистра; по индексу — один элемент, 0 первый, −1 последний. Выход: массив после удаления, сколько элементов удалено и итоговое количество. Очистить множественную переменную целиком проще штатно — действие «Изменить переменные» с пустым значением; множественное поле карточки обнуляет робот «Очистить поле», потому что пустая строка в штатном изменении документа для таких полей не срабатывает. Робот удаления нужен, когда из списка выбывает одно значение: обработали первый телефон из очереди — убрали его по индексу 0 и передали остаток дальше.
Как убрать дубли и сравнить два списка?
«Убрать дубли из массива» оставляет только уникальные значения, порядок первых вхождений сохраняется; сравнение по умолчанию без учёта регистра, опцией включается строгое. Выход: массив без дублей, количество уникальных и сколько повторов убрано. Типовой случай — телефоны компании и её контактов, собранные в одну переменную перед рассылкой: после робота один номер не получит два сообщения. Тот же робот помогает сравнить два множественных поля. Поэлементно — «Проверить наличие значения в массиве» внутри штатной конструкции «Цикл»: значение из поля А ищется в поле Б. Целиком — собрать оба списка в одну переменную и прогнать через удаление дублей: если внутри самих полей повторов нет и убрано ровно столько, сколько элементов в поле Б, оно целиком входит в поле А.
Как сложить значения массива?
Множественное поле «Платежи» или список сумм от разбитой строки складывает робот «Сумма элементов массива». Он понимает запятую как десятичный разделитель и пробелы внутри чисел («1 500,50»), нечисловые элементы пропускает и отдельно сообщает, сколько пропущено, — по этому счётчику условие процесса поймает «в поле попал текст». Выход: сумма и количество учтённых элементов. Дальше сумму обычно округляют и подставляют в поле сделки или в текст письма — про округление и проценты есть отдельная статья о вычислениях в бизнес-процессах.
Как отсортировать массив?
Штатно список не сортируется, а сортировка чисел как строк даёт порядок «1, 10, 2». Робот «Отсортировать массив» упорядочивает по возрастанию или убыванию; тип определяется автоматически — все элементы числовые, значит сравнение числовое, иначе строковое по алфавиту, — и его можно задать принудительно. Выход: отсортированный массив и количество элементов. Связка с получением по индексу решает задачу «самый крупный платёж»: отсортировать по убыванию, взять элемент 0; «три самых ранних даты» — отсортировать по возрастанию, взять 0, 1 и 2.
Как вывести список таблицей в письмо или уведомление?
Подстановка множественного поля в текст даёт значения через запятую. Для читаемого письма — робот «HTML-таблица из массива»: каждый элемент массива становится строкой таблицы, разделитель внутри элемента (по умолчанию точка с запятой) делит его на колонки, отдельным полем задаётся строка заголовков. Выход: готовый HTML-код таблицы, количество строк и колонок. Рецепт: список позиций «название;количество;сумма», собранный в переменной по ходу процесса, уходит клиенту письмом в виде таблицы. Как доставить такое письмо или уведомление — в статье про уведомления из бизнес-процесса.
Итог
Роботы покрывают жизненный цикл массива: взять элемент — «Получить элемент массива по индексу», посчитать — «Размер массива / количество элементов», проверить — «Проверить наличие значения в массиве», изменить множественное поле карточки — «Добавить значение в множественное поле» и «Удалить значение из множественного поля», обработать список без записи в карточку — «Удалить элемент из массива», «Убрать дубли из массива», «Отсортировать массив», «Сумма элементов массива», «HTML-таблица из массива». Все — в каталоге Роботеки, бесплатно из Битрикс24.Маркет. Нет нужной операции с массивами — опишите задачу, сделаем робота бесплатно.