Инструмент «Итератор»
Инструмент «Итератор» преобразует массив объектов (строки) в отдельные элементы.
«Строки» — это неограниченный набор данных внутри какой-либо сущности. Например, у сделки в CRM-системе есть позиции товаров. Представьте, что в Albato приходит одна сделка, при этом у неё может быть неограниченное количество товаров. У каждой позиции свои одинаковые поля: название, количество и прочее. Все эти поля приходят одним массивом.
Каждая такая позиция товара и называется «Строка», а все вместе они — «Строки».
В связках «Итератор» будет обрабатывать отдельно каждый элемент массива. То есть шаги, которые есть в связке после «Итератора», запустятся столько раз, сколько вы получили элементов в массиве. Также к каждой сущности можно будет применять другие инструменты Albato.
Какую проблему решает «Итератор»
Например, мы хотим для каждого товара из сделки в «Битрикс24» создавать новый товар в «МойСклад», используя действие «Новый товар», но мы не можем знать заранее, сколько будет товаров в сделке.
Чтобы создать в «МойСклад» столько товаров, сколько есть в сделке в «Битрикс24», мы сделали инструмент «Итератор». Он преобразовывает объекты в отдельные сущности, позволяя работать с каждой по отдельности.
Перед действием «Мой Склад “Новый товар”» мы добавим «Итератор». В зависимости от количества товаров в сделке «Битрикс24», будет вызываться следующий шаг «Мой Склад “Новый товар”».
В итоге, если мы получим в сделке 5 товаров, 5 раз запустится действие «МойСклад “Новый товар”», и будет создано 5 товаров.
Пример настройки «Итератора» на примере CoinMarketCap
Разберем на примере передачи данных с сайта по отслеживанию цен на криптовалюты CoinMarketCup в Telegram. Наша задача: получать данные об изменении цены на выбранные криптовалюты в Telegram, и с помощью инструментов Albato задать фильтр, который будет передавать данные только если цена изменилась больше чем на 1%
Настройка инструмента Итератор выполняется также, как настройка любого другого инструмента в Albato.
Перед нужным шагом нажмём «+», выберем пункт «Инструмент» → «Итератор»:
В поле «Итерируемая строка» выберем стороковую секцию из предыдущего шага CoinMarketCup — «Получить курсы криптовалют», которую необходимо преобразовать/разбить на отдельные элементы — курсы одной валюты.
В шаге «Telegram» укажем, какие переменные нужно передавать при отправке сообщения.
Готово, теперь при получении новых данных будут отправляться сообщения в Telegram.
Данные об изменении курса из CoinMarketCup приходят не в самом удобном формате — в виде обычных чисел.
Здесь поможет инструмент Albato «Математическая операция». В его настройках укажем, где применить математическую операцию, «тип округления» и количество символов после запятой.
Теперь математическая операция применяется к каждому элементу в массиве, и мы получаем данные в более читабельном виде.
Осталось перед шагом «Математическая операция» добавить инструмент «Прервать связку при условии», чтобы передавать данные в Telegram только если изменения будут больше чем на 1%
В настройках инструмента добавим 2 условия через «ИЛИ».
Сохраним настройки. Теперь можно запускать связку. Данные будут приходить только по тем криптовалютам, у которых изменение за последний час больше чем на 1%.