Импорт данных в Б24

Урок 9 из 29

Частая задача, особенно на первых этапах использования Битрикс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, мы увидим импортированных клиентов.

Список ресурсов

Материалы уроку: