Техподдержка сайтов
+7 (904) 589-06-04
+7 (904) 589-06-04
s.golikov1
info@sng-it.ru
Сайт программиста 1С Битрикс
Сайт программиста
1C Битрикс
(создание и поддержка сайтов)
О себе
Услуги
  • Перевод сайта на https
  • Создание сайтов
  • Интеграция сайта с 1С
  • Выгрузка товаров в Яндекс.Маркет
  • Композитный сайт
  • Внутренняя оптимизация сайта
  • Доработка сайтов
  • Импорт каталога из файла поставщика
  • Перенос сайта на 1С Битрикс
  • Парсинг контента
  • Установка готового сайта
  • Купить лицензию 1С Битрикс
  • Битрикс 24
  • Настройка служб доставки
  • Интеграция с соцсетями
  • Заказ на Маркете
  • Сопровождение сайтов на 1С Битрикс
  • Поиск и удаление вирусов
  • Настройка платежных систем
  • Выгрузка товаров на Hotline
Портфолио
Готовые сайты
  • Недвижимость
  • Медицина
  • Ресторанный бизнес
  • Автомобили и автозапчасти
  • Бухгалтерские и юридические услуги
  • Государство
  • Детские товары
  • Красота и здоровье
  • Мебель, интерьер, декор
  • Образование
  • Одежда и обувь
  • Подарки и сувениры
  • Продукты питания
  • Спорт, туризм и отдых
  • Строительство, ремонт, инструменты
  • Товары для животных
  • ТСЖ, ЖСК
  • Украшения, аксессуары, подарки
  • Электроника и бытовая техника
  • Универсальные
  • Разное
1С Битрикс
  • Старт (6 200 ₽)
  • Стандарт (17 900 ₽)
  • Малый бизнес (40 900 ₽)
  • Бизнес (83 900 ₽)
  • Интернет-магазин + CRM (99 000 ₽)
  • Продление лицензии
  • Сравнить редакции
CRM
  • Битрикс24
Контакты
Ещё
    Сайт программиста 1С Битрикс
    Сайт программиста
    1C Битрикс
    О себе
    Услуги
    Портфолио
    Готовые сайты
    1С Битрикс
    CRM
    Контакты
    Сайт программиста 1С Битрикс
    Сайт программиста
    1C Битрикс
    • Главная
    • О себе
    • Услуги
      • Назад
      • Услуги
      • Перевод сайта на https
      • Создание сайтов
      • Интеграция сайта с 1С
      • Выгрузка товаров в Яндекс.Маркет
      • Композитный сайт
      • Внутренняя оптимизация сайта
      • Доработка сайтов
      • Импорт каталога из файла поставщика
      • Перенос сайта на 1С Битрикс
      • Парсинг контента
      • Установка готового сайта
      • Купить лицензию 1С Битрикс
      • Битрикс 24
      • Настройка служб доставки
      • Интеграция с соцсетями
      • Заказ на Маркете
      • Сопровождение сайтов на 1С Битрикс
      • Поиск и удаление вирусов
      • Настройка платежных систем
      • Выгрузка товаров на Hotline
    • Портфолио
    • Готовые сайты
      • Назад
      • Готовые сайты
      • Недвижимость
      • Медицина
      • Ресторанный бизнес
      • Автомобили и автозапчасти
      • Бухгалтерские и юридические услуги
      • Государство
      • Детские товары
      • Красота и здоровье
      • Мебель, интерьер, декор
      • Образование
      • Одежда и обувь
      • Подарки и сувениры
      • Продукты питания
      • Спорт, туризм и отдых
      • Строительство, ремонт, инструменты
      • Товары для животных
      • ТСЖ, ЖСК
      • Украшения, аксессуары, подарки
      • Электроника и бытовая техника
      • Универсальные
      • Разное
    • 1С Битрикс
      • Назад
      • 1С Битрикс
      • Старт (6 200 ₽)
      • Стандарт (17 900 ₽)
      • Малый бизнес (40 900 ₽)
      • Бизнес (83 900 ₽)
      • Интернет-магазин + CRM (99 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 простой бизнес

    Поделиться:
    Назад к списку
    • Услуги
    • Услуги
    • Блог
    • Видеоуроки
    • Скидки на 1C Битрикс
    • Новости интернета
    • Сниппеты

    Аудит сайта

    © 2010-2023 Сайт битрикс программиста Семена Голикова.

    Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.
    - карта сайта
    Главное
    Информация
    Помощь
    • О себе
    • Услуги
    • Готовые сайты
    • Портфолио
    • Купить лицензию 1С Битрикс
    • Битрикс24
    • Контакты
    • Акции
    • Видеоуроки
    • Блог
    • Новости интернета
    • Про интеграцию с 1С
    • Внутренняя оптимизация сайта
    • Сниппеты
    • Хостинг для битрикс
    • Партнерам
    • Отзывы
    • Техподдержка
    +7 (904) 589-06-04
    - позвонить в WhatsApp
    Социальные сети:
    - карта сайта © 2010-2023 Сайт битрикс программиста Семена Голикова.
    Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.