Частая задача, особенно на первых этапах использования Битрикс24, это импорт существующей клиентской базы.
Импорт данных
4 мин
Базовый подход к импорту данных
Откроем раздел «Импортировать/экспортировать данные» инструмента Разработчикам и выберем сценарий «Импортировать контрагентов».
Для этого урока уже подготовлен пример. Вы можете скачать его и загрузить его на сервер так же, как мы это делали ранее в уроке «Локальные интеграции».
Вы видите, что здесь уже подготовлен для нас входящий вебхук, которым мы воспользуемся для добавления контактов.
Посмотрим на код примера.
В нем используется метод добавления контакта. В качестве параметров мы передаем имя, фамилию, email и номер телефона.
Выполним пример, открыв наш index.php в браузере. Пример отработал и теперь, вернувшись в CRM, мы увидим новый контакт.
Но на практике операция импорта означает, что нам надо перенести не одного, а много клиентов.
Давайте сделаем код для импорта данных из файла формата CSV. Вы всегда можете экспортировать данные клиентов именно в этот простой формат из самых разных источников. Например, из какой-то базы данных или таблицы Excel. Использованный в этом уроке файл можно скачать вместе с примером в материалах урока.
Итак, посмотрим на csv-файл. У него очень простая структура – каждая строка данных содержит пять полей, разделенных точкой с запятой. При этом самая первая строка содержит наименования полей.
Давайте сначала выполним готовый пример, открыв файл csv_import.php в браузере. Пример отработал. Мы видим отладочную информацию - массив данных, полученных из нашего csv-файла, и массив с результатами выполнения REST-запросов. Если бы что-то пошло не так, то, глядя на сообщения об ошибках в этом массиве, можно было бы проанализировать и устранить причины проблем.
У нас все прошло хорошо и если мы перейдем в CRM, то обнаружим импортированных клиентов.
Теперь посмотрим на код в файле csv_import.
В нем вызывается готовая функция csv_to_array, которая загружает данные из нашего csv-файла в простой массив. Вы сможете изучить ее самостоятельно.
Далее, мы в цикле используем каждый отдельный элемент массива для формирования параметров, которые, как и в начале, передаем в метод crm.contact.add.
Импорт объемных данных
В целом, наша задача была успешно решена и, вполне вероятно, в большинстве случаев вам хватит полученных знаний для импорта данных в Битрикс24. Однако, вы можете столкнуться с проблемами, когда объем данных для импорта действительно очень большой. В этом случае, простой цикл может привести к срабатыванию лимитов на количество REST-хитов в единицу времени. Более подробно об этом лимите вы можете прочитать в дополнительных материалах к уроку.
Рассмотрим специальный метод пакетного выполнения REST-запросов, который может нам помочь.
Откроем файл batch_import. Код в нем также начинается получением данных из csv-файла, однако на этот раз в файле содержится порядка трехсот записей.
Мы все так же используем цикл для обхода массива с данными для импорта. Но вместо выполнения каждого отдельного запроса crm.contact.add, мы формируем массив для последующего пакетного выполнения.
Это массив специальной структуры, в котором в каждом элементе мы указываем, какой REST-метод мы хотим выполнить, и какие параметры и значения параметров нам нужны.
Идея состоит в том, чтобы, по мере обхода массива, формировать очередной пакет из 50-ти запросов и выполнять этот пакет запросов, вызвав специальный метод batch.
Batch - метод пакетного выполнения до 50 запросов за один хит к Битрикс24
Почему именно из 50-ти? Таково текущее ограничение метода batch в REST API Битрикс24.
Если у нас в файле 2000 клиентов, то вместо 2000 отдельных запросов метода crm.contact.add мы выполним всего 40 batch-запросов. Согласитесь, это неплохая оптимизация!
Выполним готовый пример, открыв файл batch_import.php в браузере. Пример отработал и, перейдя в Битрикс24, мы увидим импортированных клиентов.
Список ресурсов
Материалы уроку:
- Пример из урока example10.zip
- SDK CRest перейти
- Справочник REST API перейти
- Статистика использования REST на портале перейти
- Механизм лимитов перейти