2018  

Выгрузка веса товара из 1С для торговых предложений

Задача: Выгрузить вес товаров из 1С для торговых предложений. По умолчанию, вес в 1С есть только у Номенклатуры.

Решение: На стороне 1С  для предложений добавляем новое свойство — Вес,гр. На сайте делаем новое свойство Вес,гр- VES_GR
И пишем и пишем обработчик который вставляем в init.php

Наверняка, кому то пригодиться эта информация:

Сам обработчик:

AddEventHandler("catalog", "OnCompleteCatalogImport1C", "upDateWiegth");
{
	function upDateWiegth() 
	{ 
		if (CModule::IncludeModule("catalog") && CModule::IncludeModule("iblock")) 
		{
			$arSelect = Array("ID", "IBLOCK_ID", "PROPERTY_VES_GR"); 	//получаем вес товара из свойства 
			
			//запрос всех товаро
			$db_res = CCatalogProduct::GetList(
				array("ID"=>"ASC"),
				array(),
				false, 
				false, 	//array('nTopCount' => 1000),
				array('ID','ELEMENT_IBLOCK_ID')
			); 
			while ($ar_res = $db_res->Fetch()) 
			{
				//запрос доп. информации по каждому товару, определяем вес
				$arFilter = Array(
					"ID"=>$ar_res["ID"],
					"IBLOCK_ID"=>$ar_res["ELEMENT_IBLOCK_ID"],
				); 
				
				$res = CIBlockElement::GetList(Array(), $arFilter, false, array('nTopCount' => 1), $arSelect); 
				if ($ob = $res->GetNextElement()) 
				{ 
					$arFields = $ob->GetFields(); 
					
					//если вес присутствует
					if ($arFields['PROPERTY_VES_GR_VALUE']) 
					{ 
						$wightResult = $arFields['PROPERTY_VES_GR_VALUE']*1000; 
						
						$ar_load = array(
							"WEIGHT" => $wightResult,
						);
						
						//изменяем вес - значение берется из свойства с кодом VES_GR
						if (CCatalogProduct::Update($ar_res["ID"], $ar_load) == true) 
						{ 
							echo "Вес товара ".$ar_res["ID"]." обновлен"; 
						} 
						else 
						{ 
							echo "Произошла ошибка при обновление веса товара"; 
						}
					}
				}

			}
		}
	}
}

После чего, мы делаем выгрузку и получаем вот какие значения:

Поделиться
Отправить