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

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, импорт, СДЭК

17.05.2022

Поделиться:
Назад к списку
  • Услуги
  • Обновление сайтов на 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
        Спасибо за заявку!
        Мы свяжемся с Вами в ближайшее
        время и ответим на все вопросы.
        Заполните форму и отправьте
        заявку на консультацию!