Техподдержка сайтов
+7 (904) 589-06-04
+7 (904) 589-06-04
telegram @sng24
MAX
info@sng-it.ru
ПРОГРАММИСТ 1С-БИТРИКС
ПРОГРАММИСТ 1С-БИТРИКС
разработка · доработка · техподдержка
  • О себе
  • Услуги
    Обновление сайтов на 1С-БитриксPHP 8.2+, MySQL 8, ядро и модули›Поиск и удаление вирусовПроверка, очистка и защита сайта›Создание сайтовРазработка сайтов под задачи бизнеса›Интеграция сайта с 1СОбмен товарами, остатками и заказами›Композитный сайт›Внутренняя оптимизация сайтаТехническое SEO и оптимизация›Доработка сайтовНовые функции, интеграции, нестандартные решения›Импорт каталога из файла поставщикаИмпорт и обновление товарных данных›Перенос сайта на 1С БитриксМиграция сайта на 1С-Битрикс›Парсинг контентаСбор и импорт данных›Установка готового сайтаУстановка и настройка готового решения›Купить лицензию 1С Битрикс›Битрикс 24CRM и автоматизация бизнеса›Выгрузка товаров в Яндекс.Маркет›Настройка служб доставкиИнтеграция служб доставки›Интеграция с соцсетями›Заказ на Маркете›Перевод сайта на https›Сопровождение сайтов на 1С БитриксОбслуживание и развитие сайтов›Настройка платежных системПодключение и настройка оплаты›
    Все услуги →
  • Портфолио
  • Готовые сайты
    Недвижимость›Медицина›Ресторанный бизнес›Автомобили и автозапчасти›Бухгалтерские и юридические услуги›Государство›Детские товары›Красота и здоровье›Мебель, интерьер, декор›Образование›Одежда и обувь›Подарки и сувениры›Продукты питания›Спорт, туризм и отдых›Строительство, ремонт, инструменты›Товары для животных›ТСЖ, ЖСК›Украшения, аксессуары, подарки›Электроника и бытовая техника›Универсальные›
    Все готовые сайты →
  • 1С Битрикс
    Старт (7 100 ₽)›Стандарт (20 500 ₽)›Малый бизнес (47 000 ₽)›Бизнес (96 500 ₽)›Интернет-магазин + CRM (109 000 ₽)›Продление лицензии›Сравнить редакции›
  • CRM
  • Контакты
ПРОГРАММИСТ 1С-БИТРИКС
ПРОГРАММИСТ 1С-БИТРИКС
О себе
Услуги
Портфолио
Готовые сайты
1С Битрикс
CRM
Контакты
ПРОГРАММИСТ 1С-БИТРИКС
ПРОГРАММИСТ
1С-БИТРИКС
  • Главная
  • О себе
  • Услуги
    • Назад
    • Услуги
    • Обновление сайтов на 1С-Битрикс
    • Поиск и удаление вирусов
    • Создание сайтов
    • Интеграция сайта с 1С
    • Композитный сайт
    • Внутренняя оптимизация сайта
    • Доработка сайтов
    • Импорт каталога из файла поставщика
    • Перенос сайта на 1С Битрикс
    • Парсинг контента
    • Установка готового сайта
    • Купить лицензию 1С Битрикс
    • Битрикс 24
    • Выгрузка товаров в Яндекс.Маркет
    • Настройка служб доставки
    • Интеграция с соцсетями
    • Заказ на Маркете
    • Перевод сайта на https
    • Сопровождение сайтов на 1С Битрикс
    • Настройка платежных систем
  • Портфолио
  • Готовые сайты
    • Назад
    • Готовые сайты
    • Недвижимость
    • Медицина
    • Ресторанный бизнес
    • Автомобили и автозапчасти
    • Бухгалтерские и юридические услуги
    • Государство
    • Детские товары
    • Красота и здоровье
    • Мебель, интерьер, декор
    • Образование
    • Одежда и обувь
    • Подарки и сувениры
    • Продукты питания
    • Спорт, туризм и отдых
    • Строительство, ремонт, инструменты
    • Товары для животных
    • ТСЖ, ЖСК
    • Украшения, аксессуары, подарки
    • Электроника и бытовая техника
    • Универсальные
    • Разное
  • 1С Битрикс
    • Назад
    • 1С Битрикс
    • Старт (7 100 ₽)
    • Стандарт (20 500 ₽)
    • Малый бизнес (47 000 ₽)
    • Бизнес (96 500 ₽)
    • Интернет-магазин + CRM (109 000 ₽)
    • Продление лицензии
    • Сравнить редакции
  • CRM
  • Контакты
  • Личный кабинет
  • +7 (904) 589-06-04
Будьте на связи
info@sng-it.ru
  • Вконтакте
  • YouTube

CRM Битрикс24. Импорт сделок из csv-файла

  • Главная
  • ❶ Сниппеты
  • ❷ CRM Битрикс24. Импорт сделок из csv-файла

Поставлена задача - перенести данные по заказам и контактам из CRM "Простой бизнес" в Битрикс24.
Доступа к базе данных CRM "Простой бизнес" нет, дают три csv-файла по заказам, контактам и компаниям соответственно.

Заказы решили загружать в сделки, а к ним создавать и привязывать контакты и компании.

Алгоритм действий:

  • Создаем входящий вебхук: на странице Разработчикам->Другое: Создаем входящий вебхук
    Обязательно укажем права: CRM, Задачи, Пользователи.
    Получаем токен для REST-api (генерируется при создании вебхука, на скриншоте - размытая область).
  • Теперь пишем скрипт, который будет будет открывать csv-файл, последовательно брать из него данные, обрабатывать их и с помощью REST-api загружать в CRM.

Скрипт загрузки получился такой:


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); 
use Bitrix\Main;

function crmPostDeal($token, $metod, $queryData)
{
	$userb24 = 5;
	$b24 = 'https://bitrix.testpro.ru';
	$queryUrl = $b24.'/rest/'.$userb24.'/'.$token.'/'.$metod;	
	$curl = curl_init();
	curl_setopt_array($curl, array(
	  CURLOPT_SSL_VERIFYPEER => 0,
	  CURLOPT_POST => 1,
	  CURLOPT_HEADER => 0,
	  CURLOPT_RETURNTRANSFER => 1,
	  CURLOPT_URL => $queryUrl,
	  CURLOPT_POSTFIELDS => $queryData,
	));
	$result = curl_exec($curl);
	
	curl_close($curl);	
	return $result; 
}

$token = '1g32jhg13jh13jhg';

$arParams = array();
$row=0;
if (($handle = fopen("orders.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 2000, ";")) !== FALSE) {
		if($row==0)
		{
		}
		else
		{
			// add params to array			
			$arParams["TITLE"] = "Заказ №".$data[0];
			
			$arName = explode(" ", $data[1]);

			// CREATED_BY_ID - Создано пользователем
			$metod = "user.get";	
			$queryData = http_build_query(array(					
				"NAME" => trim($arName[0]),
				"LAST_NAME" => trim($arName[1])					
			));	
							
			$re = crmPostDeal($token, $metod, $queryData);	
			$ob = json_decode($re,true);
		
			if(intval($ob["result"][0]["ID"])>0){
				$arParams["CREATED_BY_ID"] = $ob["result"][0]["ID"];
				$arParams["ASSIGNED_BY_ID"] = $ob["result"][0]["ID"];
			}

			// МПП			
			//Менеджер
			// ASSIGNED_BY_ID - ответственный за сделку	
			//$arParams["ASSIGNED_BY_ID"] = 5   //Саня создает юзеров	
			
			//Источник 
			//Истрочник сделки или лида. Варианты списка 
			//(
			//OTHER- Прочее;
			//1 - Реклама интернет;
			//2 - Рассылка почта;
			//3 - По рекомендации;
			//4 - Сам нашел;
			//5 - Консультант)
			$source = '';
			if($data[5] == "Прочее"){
				$source = "OTHER";
			}elseif($data[5] == "Реклама интернет"){
				$source = 1;
			}elseif($data[5] == "Рассылка почта"){
				$source = 2;
			}elseif($data[5] == "По рекомендации"){
				$source = 3;
			}elseif($data[5] == "Сам нашел"){
				$source = 4;
			}elseif($data[5] == "Консультант"){
				$source = 5;
			}
			
			$arParams["SOURCE_ID"] = $source;
			
			// №КП
			$arParams["UF_CRM_1621934796754"] = $data[6];
			
			// Дата КП
			$arParams["UF_CRM_1621934924622"] = $data[7];
			
			//Статус 
			//Запрос; 
			//отказ; 
			//отправлено КП; 
			//обсуждение проекта; 
			//выставлен счет; 
			//получена оплата;
			$status = '';
			if($data[8] == "Запрос"){
				$status = 1;
			}elseif($data[8] == "отказ"){
				$status = 2;
			}elseif($data[8] == "отправлено КП"){
				$status = 3;
			}elseif($data[8] == "обсуждение проекта"){
				$status = 4;
			}elseif($data[8] == "выставлен счет"){
				$status = 5;
			}elseif($data[8] == "получена оплата"){
				$status = 6;
			}elseif($data[8] == ""){
				$status = "NEW";
			}			
			$arParams["STAGE_ID"] = $status;
			
			//Комментарии МПП
			$arParams["UF_CRM_1621935474473"] = $data[9];	

						
			//ТЗ, Опросный лист
			//(множественный файл)
			$ex_tz = explode(";", $data[16]);			
			if(count($ex_tz)==1)
			{
				$base64 = base64_encode(file_get_contents($data[16]));
				$arParams["UF_CRM_1622097303472"]['fileData'] = array(preg_replace("#http:\/\/prostoy\.irbispro\.ru\/files\/#","",$data[16]),$base64);
			}
			elseif(count($ex_tz)>1)
			{
				foreach($ex_tz as $k => $fileUrl){
					$base64 = base64_encode(file_get_contents($fileUrl));
					$arParams["UF_CRM_1622097411131"][fileData][$k] = array(preg_replace("#http:\/\/prostoy\.irbispro\.ru\/files\/#","",$fileUrl),$base64);
				}
			}
			
			//Стоимость, руб.
			$arParams["OPPORTUNITY"] = $data[19];
			$arParams["CURRENCY_ID"] = "RUB";
			
			//Номер счета
			$arParams["UF_CRM_1622097779695"] = $data[20];
			
			
			// Тех отдел			
			//комментарии тех.отдела
			$arParams["UF_CRM_1622099229455"] = $data[32];
			
			//Рецепт (для ШОК)
			$arParams["UF_CRM_1622099271768"] = $data[33];
			
			
			//В производстве			
			//Дата оплаты
			$arParams["UF_CRM_1622099397138"] = $data[34];
			
			//Согласовано
			$arParams["UF_CRM_1622099465170"] = $data[35];
			
			//Дата отгрузки
			$arParams["UF_CRM_1622099517984"] = $data[36];
			
			//ПЭК
			$arParams["UF_CRM_1622099559117"] = $data[37];
			
			
			//Данные о конечном клиенте 			
			//Звонок №1 (Дилер)
			$arParams["UF_CRM_1622099622406"] = $data[38];
			
			//Комментарии №1
			$arParams["UF_CRM_1622099678190"] = $data[39];
			
			//Звонок №2 (Монтажник)
			$arParams["UF_CRM_1622099742231"] = $data[40];
			
			//Комментарии №2
			$arParams["UF_CRM_1622099787420"] = $data[41];
			
			//Звонок №3 (Конечный клиент)
			$arParams["UF_CRM_1622099842875"] = $data[42];
			
			//Комментарии №3
			$arParams["UF_CRM_1622099880639"] = $data[43];
			
			//Дата обращения
			$arParams["UF_CRM_1622099921681"] = $data[44];
			
			//Сайт источнник
			//Сайт с которого пришла заявка. Список. Варианты (
			//Irbispro.ru;
			//food-exp.ru;
			//platinumdoors.ru;
			//fastcold.ru;
			//irbisgold.ru(ГОЛД);
			//irbiscold.ru(КОЛД);
			//eternal-kit.ru;
			//irbisGates.ru;
			//sklad-pro.ru
			$site = '';
			if($data[45] == "Irbispro.ru"){
				$site = 43;
			}elseif($data[45] == "food-exp.ru"){
				$site = 44;
			}elseif($data[45] == "platinumdoors.ru"){
				$site = 45;
			}elseif($data[45] == "fastcold.ru"){
				$site = 46;
			}elseif($data[45] == "irbisgold.ru(ГОЛД)"){
				$site = 47;
			}elseif($data[45] == "irbiscold.ru(КОЛД)"){
				$site = 48;
			}elseif($data[45] == "eternal-kit.ru"){
				$site = 49;
			}elseif($data[45] == "irbisGates.ru"){
				$site = 50;
			}elseif($data[45] == "sklad-pro.ru"){
				$site = 51;
			}			
			$arParams["UF_CRM_1622100108621"] = $site;			
			
			
			//Направление деятельности компании
			//Список. Варианты 
			//Пищевые производства (мясная промышленность, пекарни);
			//Торговые центры, магазины, супермаркеты (торговля, оптовая торговля);
			//Рестораны, столовые, кафе;
			//Склады, производственные помещения, строительные фирмы
			$np = '';
			if($data[46] == "Пищевые производства (мясная промышленность, пекарни)"){
				$np = 51;
			}elseif($data[46] == "Торговые центры, магазины, супермаркеты (торговля, оптовая торговля)"){
				$np = 52;
			}elseif($data[46] == "Рестораны, столовые, кафе"){
				$np = 53;
			}elseif($data[46] == "Склады, производственные помещения, строительные фирмы"){
				$np = 54;
			}
			$arParams["UF_CRM_1622100378971"] = $np;	
			
	

			// проверяем есть ли сделка с кодом $data[0]
				$metod = "crm.deal.list";			
				
				$queryData = http_build_query(array(		
					'order' => array("STAGE_ID"=>"ASC"),
					'filter' =>  array('TITLE' => $arParams["TITLE"]),
					'select' => array("ID", "TITLE", "STAGE_ID", "PROBABILITY", "OPPORTUNITY", "CURRENCY_ID")
				));		
				
				$result = crmPostDeal($token, $metod, $queryData);	
				$obj = json_decode($result,true);
				
				if(!empty($obj[result]))
				{
					if(intval($obj["result"][0]["ID"])>0)
					{
						$metod = "crm.deal.update";	
						$queryData = http_build_query(array(	
							'id' =>  $obj["result"][0]["ID"],
							'fields' => $arParams,
							'params' => array("")
						));	
							
						$r = crmPostDeal($token, $metod, $queryData);					
					}		
				}
				else
				{
					// создаем сделку
						$metod = "crm.deal.add";	
						$queryData = http_build_query(array(	
							'fields' => $arParams,
							'params' => array("")
						));	
							
						$r = crmPostDeal($token, $metod, $queryData);	
				}
		}		
		$row++;
    }
    fclose($handle);
}

Отдельно отметим, что дату создания заказа и дату изменения загрузить в CRM с помощью REST-api нельзя, так как эти поля readonly. Поэтому загружать их будем прямыми SQL-запросами(у нас коробочная версия). Для этого, на стороне CRM создаем скрипт:


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); 

$connection = \Bitrix\Main\Application::getConnection();

function formDate($date){
	$ex = explode(" ", $date);
	$ex1 = explode(".", $ex[0]);	
	return $ex1[2]."-".$ex1[1]."-".$ex1[0]." ".$ex[1];
}

$arParams = array();
$row=0;
if (($handle = fopen("orders.csv", "r")) !== FALSE) 
{
    while (($data = fgetcsv($handle, 2000, ";")) !== FALSE) 
	{	
		if($row==0)
		{
		}
		else
		{
			$data[0] = "Заказ №".$data[0];
			
			if(strlen($data[2])>0){			
				$data[2] = formDate($data[2]);				
				$resUp = $connection->query('UPDATE b_crm_deal SET DATE_CREATE = \''.$data[2].'\' WHERE TITLE=\''.$data[0].'\'');	
			}
			
			if(strlen($data[3])>0){
				//Изменено
				$data[3] = formDate($data[3]);				
				$resUp = $connection->query('UPDATE b_crm_deal SET DATE_MODIFY = \''.$data[3].'\' WHERE TITLE=\''.$data[0].'\'');				
			}			
		}		
		$row++;
    }	
	fclose($handle);	
}


Теги: CRM, sql update, crm.deal.add, crm.deal.update, импорт из csv, импорт сделок, crm простой бизнес

04.06.2021

Поделиться:
Назад к списку
  • Услуги
  • Обновление сайтов на 1С-Битрикс
  • Поиск и удаление вирусов
  • Интеграция сайта с 1С
  • Создание сайтов
  • Композитный сайт
  • Внутренняя оптимизация сайта
    • Доработка сайтов
    • Импорт каталога из файла поставщика
    • Парсинг контента
    • Перенос сайта на 1С Битрикс
    • Установка готового сайта
    • Купить лицензию 1С Битрикс
      • Битрикс 24
        • Выгрузка товаров в Яндекс.Маркет
        • Заказ на Маркете
        • Интеграция с соцсетями
        • Настройка служб доставки
        • Перевод сайта на https
        • Сопровождение сайтов на 1С Битрикс
        • Настройка платежных систем
        Аудит сайта
        Записаться на техподдержку

        Программист 1С-Битрикс — Семён Голиков
        Программист 1С-Битрикс
        разработка · доработка · техподдержка
        Работаю с 1С-Битрикс с 2010 года
        Есть задача по 1С-Битрикс?
        Выберите удобное время в календаре техподдержки.
        Выбрать времяНаписать в Telegram
        Услуги
        Доработка сайтовСопровождение сайтовОбновление 1С-БитриксПоиск и удаление вирусовИнтеграция с 1СХостинг для битрикса
        Проекты и продукты
        ПортфолиоГотовые сайтыЛицензии 1С-БитриксБитрикс24Отзывы
        Материалы
        БлогСниппетыВидеоурокиОптимизация сайтаАкции
        Связаться со мной
        +7 (904) 589-06-04Позвонитьinfo@sng-it.ruНаписать на e-mail
        Telegram M MAX
        Обычно отвечаю в течение дня
        © 2010-2026 Семён Голиков · программист 1С-Битрикс
        Политика конфиденциальностиОбработка персональных данныхКарта сайта
        VK
        Спасибо за заявку!
        Мы свяжемся с Вами в ближайшее
        время и ответим на все вопросы.
        Заполните форму и отправьте
        заявку на консультацию!