Техподдержка сайтов
+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

    d7 Импорт ZIP-кодов из csv-файла СДЭК в местоположения

    • Главная
    • ❶ Сниппеты
    • ❷ d7 Импорт ZIP-кодов из csv-файла СДЭК в местоположения
    Задача:

    Модуль службы доставки СДЕК для 1С Битрикс грузит местоположения без ZIP-кодов. В результате, для таких местоположений не работает Почта России. Поэтому берем csv-файл с сайта СДЕК, парсим его и устанавливаем индексы для местоположений.


    Решение:

    1. Берем все местоположения на сайте, у которых: - CODE начинается с "c_" - нет ZIP кода

    
    
    $parentID = 91; //идентификатор родительского раздела, например, Республика Адыгея (ID = 38)
    $csvParentName = 'Крым респ.';
    	
    $arLocations = array();		
     $res = \Bitrix\Sale\Location\LocationTable::getList(array(
        'filter' => array(
            //'CODE' => array('newly-created-location-code', 'c_'),
    		'PARENT_ID' => $parentID,
    		'NAME.LANGUAGE_ID' => 'ru'
        ),
        'select' => array(
    		'ID',
    		'CITY_ID',
    		'CODE',
    		'PARENT_ID',
                    'EXTERNAL.*',
                    'EXTERNAL.SERVICE.CODE',
    		'LNAME' => 'NAME.NAME'
        )
    ));
    $i = 0;
    $arParentID = array();
    while($item = $res->fetch())
    {
    	if((!strlen($item[SALE_LOCATION_LOCATION_EXTERNAL_XML_ID])>0
     || $item[SALE_LOCATION_LOCATION_EXTERNAL_XML_ID]==1
     || $item[SALE_LOCATION_LOCATION_EXTERNAL_XML_ID]=='000001')
     && preg_match("#c_#",$item[CODE]))
    	{
    		
    		if(strlen($arParentID[$item['PARENT_ID']])>0)
    		{ 
    			$arLocations[$i][ELEMENT] = $item;
    			$arLocations[$i][PARENT_NAME] = $arParentID[$item['PARENT_ID']];			
    		}
    		else
    		{	
    			$arParentLocation =\Bitrix\Sale\Location\LocationTable::getList(array(
    				'filter' => array(
    					'NAME.LANGUAGE_ID' => 'ru',
    					'ID' => $item['PARENT_ID']
    				),
    				'select' => array(
    					'ID',
    					'CITY_ID',
    					'CODE',
    					'PARENT_ID',
    					'EXTERNAL.*',
    					'EXTERNAL.SERVICE.CODE',
    					'LNAME' => 'NAME.NAME',
    				)
    			));
    			if($itemParentLocation = $arParentLocation->fetch())
    			{			
    				$arLocations[$i][ELEMENT] = $item;
    				$arLocations[$i][PARENT_NAME] = $itemParentLocation[LNAME];
    				$arParentID[$item['PARENT_ID']] = $itemParentLocation[LNAME];
    			}
    		}		
    		$i++;
        }		
    } 
    sort($arParentID);
    
    

    2. Парсим csv-файл и делаем update ZIP-кодов.
    Также, если встречаем дубли, удаляем их.
    Местоположения идентифицируем по наименованию и наименованию родительского местоположения.

    
     0)
    		{
    			if(strlen($data[7])>1 && $data[7]!=1 && $data[7]!='000001')
    			{
    				$arResult['ITEMS'][] = $data; 
    				//$arNames - содержит все совпадения по имени
    				$arNames = array();
    				foreach($arLocations as $k => $v)
    				{
    					if($data[2] == $v[ELEMENT][LNAME] && $data[3]==$csvParentName)
    					{					
    						$arNames[] = $v;
    					}
    				}
    					
    				if(count($arNames)>1)
    				{
    						for($del=1;$del0)
    							{						
    								$resDel = \Bitrix\Sale\Location\LocationTable::delete($arNames[$del][ELEMENT][ID]);
    							
    								if($resDel->isSuccess())
    								{
    									print('Deleted!');
    								}
    							}
    						}
    						
    				}
    				elseif(count($arNames)>0)
    				{
    					//Обновляем ZIP-коды
    						
    						$sp = preg_split("#,#",$data[7]);
    						
    						$dataUpdate = array(
    							"PARENT_ID" => $arNames[0][ELEMENT][PARENT_ID]		
    						);
    						foreach($sp as $ksp => $vsp)
    						{
    							$dataUpdate["EXTERNAL"]["n".$ksp] = array( 
    									"SERVICE_ID" => 1, // ID сервиса ZIP
    									"XML_ID" => $vsp // значение
    							);				
    							
    						}
    					
    						$resUpdate = \Bitrix\Sale\Location\LocationTable::update($arNames[0][ELEMENT][ID], $dataUpdate);
    						if($resUpdate->isSuccess())
    						{
    							print('Updated!');
    						}
    						else{
    							print('Error!');
    						}						
    				}	
    			
    			}
    		}
    		$i++;
        }
        fclose($handle); 
    	
    }	
    
    ?>
    

    Теги: d7, импорт, СДЭК

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

    Аудит сайта

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

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