Your IP : 3.21.247.95


Current Path : /home/bitrix/ext_www/ballu.in.ua/import/
Upload File :
Current File : /home/bitrix/ext_www/ballu.in.ua/import/.integration.functions.php

<?

function getCategoriesWithSortedCharacteristics(&$catalog)
{
    $result = array();
    foreach ($catalog['data'] as $string => $item) {
        $key = $item['ИдентификаторВБазе'];
        foreach ($item['ХарактеристикиНоменклатурыГруппы'] as $kk => $value) {
            if ($value['Титул'] == 'true') {
                if (!isset($result[$key])) {
                    $result[$key] = array('Характеристика' => array());
                }
                $result[$key]['Характеристика'][$value['Характеристика']['Идентификатор'] ?: $value['Характеристика']['ИдентификаторВБазе']] = $value['НомерТитула'];
            }
        }
        if (isset($result[$key])) {
            asort($result[$key]['Характеристика']);
            $result[$key]['строка'] = $string;
            $result[$key]['название'] = $item['ПолноеНаименование'];

        }
    }
    return $result;
}

function getCategoriesWithSortedCharacteristicsOnIBlock(&$result)
{
    $rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => 18));

    while($arSection = $rsResult -> GetNext()) {
        if (isset($result[$arSection['XML_ID']])){
            $result[$arSection['XML_ID']]['ID']=$arSection['ID'];
        }
    }
    $arFilter = Array("IBLOCK_ID" => 16, 'ACTIVE' => 'Y');
    $arSelect = ['ID', 'XML_ID'];
    $categories = array();
    $res = \CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
    while ($arElement = $res->Fetch()) {
        $categories[$arElement['XML_ID']] = $arElement['ID'];
    }

    foreach ($result as $key => $item) {
        $result[$key]['UF_ORDER_PARAMETERS'] = array();
        foreach ($item['Характеристика'] as $k => $i) {
            $result[$key]['UF_ORDER_PARAMETERS'][$i] = $categories[$k];
        }
    }
    return $result;
}

function saveCategories($tempCategory)
{
    $CIBlockSection = new \CIBlockSection();
    foreach($tempCategory as $code => $prop){
        if ($prop['ID']){
            $CIBlockSection->Update( $prop['ID'], array('UF_ORDER_PARAMETERS' => $prop['UF_ORDER_PARAMETERS']) );
            echol(
                " done with UF_ORDER_PARAMETERS in " . $prop['название'] . "(" . $prop['ID'] . ") = "
                . json_encode($prop['UF_ORDER_PARAMETERS'])
            );
        }
    }

}

function getRest1($address, $data=[], $method="GET"){
	global $API_URL;
	global $API_ADDRESS;
    global $API_KEY;
	


	$service = $API_ADDRESS[$address];
	$url =  $API_URL.$service;
	//echo $url;
	$opts = array('http' =>
	    array(
	        'method'  => $method,
	        'header'  => "Authorization: ".$API_KEY,
	    )
	);
	if(!empty($data) && $method!="GET"){
		$opts['http']['content'] = http_build_query($data);
	}elseif(!empty($data) && $method=="GET"){
		$toSend = http_build_query($data);
		$url.="?".$toSend;
	}

	echol($opts);
	echol($url);
	
	$context  = stream_context_create($opts);
	$result = file_get_contents($url, false, $context);
// !!!! TBD write responce log

    if($result!==false) $responce = json_decode($result, true);
    else $responce = "error";
    return $responce;
}


function checkValForFile($val)
{
	//73ad50bb-e69a-11e5-b14a-ac162d7b6f40
	if(empty($val) || strlen($val)!=36)  return false;
	if(substr_count($val, "-")==4) return true;
	return false;
}


function arFormatPrices($arIn){
	foreach($arIn as $k=>$item){
		$out[$item["Goods_ID"]][$item["PriceBush_ID"]]["norm"] = $item["Price"];
		$out[$item["Goods_ID"]][$item["PriceBush_ID"]]["old"] = $item["PriceOLD"];
	}
	return $out;
}

function updatePricePack($id=0,$arPrice = false){
	if($id <= 0) return false;

	global $base_price;
	global $BASE_BUSH;
	global $priceConfig;

	if(empty($priceConfig)) $priceConfig = getPriceTypes();

	
	if(!empty($arPrice)){
		$boolResult = CPrice::DeleteByProduct($id);
		foreach($arPrice as $code => $price){
			
			addProductPrice($id, $priceConfig[$code], $price);
		}
		if(!empty($arPrice[$BASE_BUSH])){

			addProductPrice($id, "BASE", $arPrice[$BASE_BUSH]);
			addProductPrice($id, "DISCOUNT", $arPrice[$BASE_BUSH."_NODISCOUNT"]);
		}	
		//echo "\n$id ".count($arPrice)." prices";

	}
	return true;
}


function setBasePrice($id=0,$arPrice = false){
	if($id <= 0) return false;

	global $base_price;
	global $BASE_BUSH;
	global $priceConfig;

	
	if(!empty($arPrice)){
		echol($id." => ".$arPrice[$BASE_BUSH]);
		//echol($arPrice);
		checkCatalogable($id);
		$boolResult = CPrice::DeleteByProduct($id);
		addProductPrice($id, 1, $arPrice[$BASE_BUSH]);

	}
	return true;
}

function checkCatalogable($id){
	if(CCatalogProduct::GetByID($id)==false){
		$arFields = array(
			"ID" => $id,
			"CAN_BUY_ZERO" => "Y",						
			"QUANTITY_TRACE" => "N",
			"CAN_BUY_ZERO" => "Y",
			"NEGATIVE_AMOUNT_TRACE" => "N"
		);
		CCatalogProduct::Add($arFields);
	}
}

function addProductPrice($id, $code, $price){

	if($price<=0) return;

	$arFields = Array(
	    "PRODUCT_ID" => $id,
	    "CATALOG_GROUP_ID" => $code,
	    "PRICE" => $price,
	    "CURRENCY" => "RUB",
	);

	//echol($arFields);
	  CPrice::Add($arFields);
	//echo "\nprice Updated";
}

function startTimer($id="start"){
	global $arTimers;
	$time = microtime();
	$time = explode(' ', $time);
	$time = $time[1] + $time[0];
	$arTimers[$id] = $time;
	//echol($arTimers[$id]);

}

function stopTimer($id = "start"){
	global $arTimers;
	$time = microtime();
	$time = explode(' ', $time);
	$time = $time[1] + $time[0];
	$out = $arTimers["stopped"][$id] = $time - $arTimers[$id];
	return $out;
}

function outTimer($id="start")
{
	global $arTimers;
	return $arTimers["stopped"][$id];
}

function outTimers()
{
	global $arTimers;
	$artm = $arTimers["stopped"];
	echol($artm);
}

function _i($str){
//Родитель|SECTION_ID
//ИдентификаторВБазе|ID
//ПометкаУдаления|TO_DELETE
//Код|CODE
//Наименование|NAME
//ПолноеНаименование|FULL_NAME
//ВидКлассификатора|TYPE
	$trans = 
	[
"Родитель"=>"SECTION_ID",
"ИдентификаторВБазе"=>"ID",
"Идентификатор" => "ID2",
"ПометкаУдаления"=>"TO_DELETE",
"Код"=>"NSI_CODE",
"Наименование"=>"NAME",
"ПолноеНаименование"=>"FULL_NAME",
"НаименованиеПолное"=>"NAME_FULL",
"МеждународноеСокращение" => "INTERNATIONAL_SHORTNAME",
"ВидКлассификатора"=>"TYPE",
"ТипХарактеристики"=>"PROPERTY_GROUP",
"Описание"=>"DETAIL_TEXT",
"ТипЗначения"=>"VALUE_TYPE",
"ЕдиницаИзмерения"=>"MEASURE",
"МножественныйВыбор"=>"MULTIPLE",
"Порядок" => "SORT",
"Характеристики" => "PROPERTIES",
"ХарактеристикиНоменклатурыГруппы" => "ELEMENT_PROPERTIES",
"Характеристика" => "PROPERTY",
"Титул" => "TITUL",
"НомерТитула" =>"TITUL_SORT",

//товары
"ПредварительнаяКарточка" => "TEMPORARY_ELEMENT",
"ТипЗаказногоОборудования" => "PREORDER_TYPE",
"Значение" => "VALUE",
"ОсновнаяЕдиницаИзмерения" => "MAIN_MEASURE",
"Артикул" => "ARTIKUL",
"Марка" => "BRAND",
"БазоваяЕИ" => "BASE_MEASURE",
"ВидНоменклатуры" => "ELEMENT_TYPE",
"ПродажаЗапрещена" => "AVAILABLE_TO_BUY",
"ИспользоватьНаСайтах" => "WEB_ACTIVE",
"РегистрацияНаСайтах" => "SITE_AVAILABLE",
"СайтВладелец" => "SITE_ID",
"Отображать" => "SHOW",
"Категории" => "ELEMENT_CATEGORIES",
"СтранаПроисхождения" => "COUNTRY_ORIGIN",
"Категории" => "CATEGORIES",
"Категория" => "CATEGORY",
"КлассификацияДляСайтов" => "SECTION",
"Группа" => "GROUP",
"ТипЗаказногоОборудования" => "PREORDER_TYPE",

// характеристики
"ОбязательноеЗаполнение" => "REQUIRED_IN",
"ХарактеристикиФильтров" => "FILTER_CATS_XML",
"Диапазон" => "FILTER_N_CATS_XML",
"КодНаСайте" => "CODE",
	];
	$transrev = array_flip($trans);
	if(isset($trans[$str])) return $trans[$str];
		elseif(isset($transrev[$str])) return $transrev[$str];
	else return false;
}

function formatUnits($arIn){
	foreach($arIn as $el){

		
		$ar = [
			"NAME" => $el[ _i("NAME_FULL") ],
			"ACTIVE" => ($el[ _i("TO_DELETE") ]=="false"?"Y":"N"),
			"XML_ID" => $el["_id"],
			"NSI_CODE" => $el[ _i("NSI_CODE") ],
			"SHORT_NAME" => $el[ _i("NAME") ],
			"INTERNATIONAL_SHORTNAME" => $el[ _i("INTERNATIONAL_SHORTNAME") ],
			"MEASURE_XML" => $el[ _i("MEASURE") ][ _i("ID") ],
			"REST" => $el
		];
		$out[ $ar["XML_ID"] ]=$ar;
	
	}
	return ($out);
}




function formatElements($arIn, $Props){
	global $SITE_TYPE_XML_ID;
	foreach($arIn as $el){
		
		$ar = [
			"PROPERTY_NAME" => $el[ _i("NAME") ],
			"FULL_NAME" => $el[ _i("FULL_NAME") ],
			"TEMPORARY_ELEMENT" => $el[ _i("TEMPORARY_ELEMENT") ],
			"XML_ID" => $el["_id"],
			"NSI_CODE" => $el[ _i("NSI_CODE") ],
			"PREORDER" => ($el[ _i("PREORDER_TYPE") ]=="НеЗаказное")?"N":"Y",
			"ACTIVE" => ($el[ _i("TO_DELETE") ]=="false"?"Y":"N"),
			"AVAILABLE_TO_BUY" => ($el[ _i("AVAILABLE_TO_BUY") ]=="false"?"Y":"N"),
			"WEB_ACTIVE" => ($el[ _i("WEB_ACTIVE") ]=="true"?"Y":"N"),
			"ELEMENT_TYPE" => $el[ _i("ELEMENT_TYPE") ],
			"MEASURE" => $el[ _i("MEASURE") ][ _i("ID") ],
			"MAIN_MEASURE" => $el[ _i("MEASURE") ][ _i("ID") ],
			"BASE_MEASURE" => $el[ _i("BASE_MEASURE") ][ _i("ID") ],
			"BRAND" => $el[ _i("BRAND") ][ _i("ID") ],
			"ARTIKUL" => !is_array($el[ _i("ARTIKUL") ])?$el[ _i("ARTIKUL") ]:"",
			"COUNTRY_ORIGIN" => $el[ _i("COUNTRY_ORIGIN") ][ _i("ID") ],


			"REST" => $el
		];
		//unset($ar["REST"][_i("PROPERTIES")]);
		// обрабатываем мультипривязку к разделам-родителям
		if(!empty($el[_i("SECTION")][0])){
			//echo "here\n";
			foreach($el[_i("SECTION")] as $k=> $sec){
				if($sec[ _i("TYPE") ][ _i("ID") ] == $SITE_TYPE_XML_ID)
					$ar["SECTION"] = [
						"TYPE" => $el[ _i("SECTION") ][$k][ _i("TYPE") ][ _i("ID") ],
						"GROUP" => $el[ _i("SECTION") ][$k][ _i("GROUP") ][ _i("ID") ],
						];
			}
		}else{
			$ar["SECTION"] = [
				"TYPE" => $el[ _i("SECTION") ][ _i("TYPE") ][ _i("ID") ],
				"GROUP" => $el[ _i("SECTION") ][ _i("GROUP") ][ _i("ID") ],
				];
		}

		//обработка категорий
		if(is_array($el[_i("CATEGORIES")][1]))
			$cat = $el[_i("CATEGORIES")][count($el[_i("CATEGORIES")])-1][_i("CATEGORY")][_i("ID")];
		else $cat = $el[_i("CATEGORIES")][_i("CATEGORY")][_i("ID")];
		if(!empty($cat)) {
			//echol($cat);
			if($cat == "7270a0d0-8504-4fb8-babd-65eb489f0f2a")
				// новинка
				$ar["IS_NEW"]="Y";
			elseif($cat=="5034bd5e-9c71-4040-94ec-d8238fed3ec3" || $cat=="3a4f493b-7960-4d14-97c8-aab2e134c549") 
				// ликвидация или зачистка
				$ar["TO_KILL"]="Y";
			//else $ar["CATEG"] = $cat;
		}
		


		foreach($el[_i("PROPERTIES")] as $k=>$prop){
			if(is_array($prop[_i("VALUE")])){
				$val = $prop[_i("VALUE")][_i("ID")];
			}else $val = $prop[_i("VALUE")];
			$ar["PROPERTIES"][ $prop[_i("PROPERTY")][_i("ID")] ] = $val;
		}

		// РЕгистрация на сайтах
		foreach($el[_i("SITE_AVAILABLE")] as $k=>$prop){
			if(is_array($prop[_i("SITE_ID")])){
				
				$ar["SITE_AVAILABLE"][ $prop[_i("SITE_ID")][_i("ID")] ] = $prop[_i("SHOW")];
			}
			
		}

		if($el[_i("ELEMENT_TYPE")]!="Услуга")
			$out[$el["_id"]] = $ar;
//		$out["PROPERTIES"][ $ar["XML_ID"] ]=$ar;
//		$out["PROPERTIES"][ $ar["XML_ID"] ]["source"]=$el;
//		$pg = $el[_i("PROPERTY_GROUP")];
//		if(!empty($pg[_i("NAME")]))
//			$out["PROPERTY_TYPES"][ $pg[_i("ID")] ]["DATA"] = [
//				"NAME" => $pg[_i("NAME")],
//				"SORT" => $pg[_i("SORT")],
//				"CODE" => $pg[_i("CODE")],
//				"ID" => $pg[_i("ID")],
//				"ACTIVE" => ($pg[ _i("TO_DELETE") ]=="false"?"Y":"N"),
//			];
//		$out["PROPERTY_TYPES"][ $pg[_i("ID")] ]["LINK"][]=$el["_id"];
//		$out["VALUE_TYPES"][$el[ _i("VALUE_TYPE") ]]+=1;
	}
	//echol(count($arIn)." __=__ ".count($out));
	return ($out);
}


function formatProperty($arIn){
	foreach($arIn as $el){

		
		$ar = [
			"NAME" => $el[ _i("NAME") ],
			"XML_ID" => $el["_id"],
			"NSI_CODE" => $el[ _i("NSI_CODE") ],
			"CODE" => $el[ _i("CODE") ],
			"ACTIVE" => ($el[ _i("TO_DELETE") ]=="false"?"Y":"N"),
			"GROUP_XML_ID" => $el[ _i("PROPERTY_GROUP") ][ _i("ID") ],
			"GROUP_SORT" => $el[ _i("PROPERTY_GROUP")][ _i("SORT")],
			"GROUP_NAME" => $el[_i("PROPERTY_GROUP")][_i("NAME")],
			"GROUP_CODE" => $el[_i("PROPERTY_GROUP")][_i("NSI_CODE")],
			"GROUP_ACTIVE" => ($el[_i("PROPERTY_GROUP")][ _i("TO_DELETE") ]||empty($el[_i("PROPERTY_GROUP")][ _i("TO_DELETE") ])=="false"?"Y":"N"),
			"VALUE_TYPE" => $el[ _i("VALUE_TYPE") ],
			"MULTIPLE" => ($el[ _i("MULTIPLE") ]=="false"?"N":"Y"),
			"DETAIL_TEXT" => $el[ _i("DETAIL_TEXT") ],
			"MEASURE_XML" => $el[ _i("MEASURE") ][ _i("ID") ],
			"REST" => $el
		];
		$out["PROPERTIES"][ $ar["XML_ID"] ]=$ar;
		//$out["PROPERTIES"][ $ar["XML_ID"] ]["source"]=$el;
		$pg = $el[_i("PROPERTY_GROUP")];
		if(!empty($pg[_i("NAME")]))
			$out["PROPERTY_TYPES"][ $pg[_i("ID")] ]["DATA"] = [
				"NAME" => $pg[_i("NAME")],
				"SORT" => $pg[_i("SORT")],
				"NSI_CODE" => $pg[_i("NSI_CODE")],
				"XML_ID" => $pg[_i("ID")],
				"ACTIVE" => ($pg[ _i("TO_DELETE") ]=="false"?"Y":"N"),
			];
		$out["PROPERTY_TYPES"][ $pg[_i("ID")] ]["LINK"][]=$ar["NAME"];//$el["_id"];
		$out["VALUE_TYPES"][$el[ _i("VALUE_TYPE") ]]+=1;

		
	}
	return ($out);
}

function mergePropsWithCatalog($arIn){
	if(empty($arIn)) return false;
	foreach($arIn as $k=>$prop){
		if(empty($prop["FROM_CATALOG"])) continue;
		$mprop = $prop["FROM_CATALOG"];
		unset($arIn[$k]["FROM_CATALOG"]);
		foreach(["FILTER_CATS_XML","TILE_CATS_XML","FILTER_N_CATS_XML"] as $key){
			if(!empty($mprop[$key])) $arIn[$k][$key] = $mprop[$key];
		}		


		foreach(["XML_ID","NAME","MEASURE","ACTIVE","VALUE_TYPE","NSI_CODE","GROUP_XML_ID"] as $key){
			if(empty($prop[$key]) && !empty($mprop[$key])) $arIn[$k][$key] = $mprop[$key];;
		}
	}
	return $arIn;
}

function setPropertiesCode($arIn)
{
	foreach($arIn as $k=>$prop){
		if(!empty($prop["CODE"])){
			$prop["CODE"] = str_replace(".", "_", $prop["CODE"]);
			if (substr($prop["CODE"], 0, 2) == '3d') {
				$prop["CODE"] = 'prop_'.$prop["CODE"];
				$prop["FILE_TYPE"] = '';
			}
		}elseif(!empty($prop["NSI_CODE"])){
			if(!empty($prop["FILTER_CATS_XML"])) $prop["CODE"] = "filter_".$prop["NSI_CODE"];
			else $prop["CODE"] = "prop_".$prop["NSI_CODE"];
		}
		$arIn[$k] = $prop;
	}
	return $arIn;
}



// -------------------------------- CATALOG----------------------------
function formatCatalog($arIn, $searchType=false){
	$out =[];
	
	foreach($arIn as $el){
		//echol( $el[ _i("ID") ] );
		$xmlid = $el[ _i("ID") ];
		$ar = [
			"NAME" => $el[ _i("NAME") ],
			"ACTIVE" => (($el[ _i("TO_DELETE") ]=="false")?"Y":"N"),
			"SECTION_ID" => $el[ _i("SECTION_ID") ][ _i("ID") ],
			"TYPE" => $el[ _i("TYPE") ][ _i("ID") ],
			"NSI_CODE" => $el[ _i("NSI_CODE") ],
			"REST" => $el
		];
		//echol($ar);
		//unset($ar["REST"]);
		if($searchType!=false) {
			if( $ar["TYPE"] != $searchType ){
				continue;
			}
			else {
				$par = $ar["SECTION_ID"];
				$out["PARENTS"][(empty($par)?"root":$par)][]=$xmlid;
				
				//echol($xmlid." -> ".$ar["NSI_CODE"]." == ".$ar["SECTION_ID"]);

				//if($xmlid == "5a9a4410-5149-459c-a974-e8b3f1f6c5f0") echol($el);
				//if(empty($par)) echol($el);
			}
		}
		
		foreach($el[_i("ELEMENT_PROPERTIES")] as $k => $prop){




			if(!empty($prop[_i("PROPERTY")][_i("ID2")]))
				$idp = $prop[_i("PROPERTY")][_i("ID2")];
			else $idp = $prop[_i("PROPERTY")][_i("ID")];


			$arProp = [
				"XML_ID" => $idp,
				"NAME" => $prop[_i("NAME")],
				"MEASURE_XML" => $prop[_i("PROPERTY")][_i("MEASURE")][_i("ID")],
				"ACTIVE" => (($prop[_i("PROPERTY")][ _i("TO_DELETE") ]=="false")?"Y":"N"),
				"VALUE_TYPE" => $prop[_i("PROPERTY")][_i("VALUE_TYPE")],
				"NSI_CODE" => $prop[_i("PROPERTY")][_i("NSI_CODE")],
				"GROUP_XML_ID" => $prop[_i("PROPERTY")][_i("PROPERTY_GROUP")][_i("ID")],
				//"REST" => $prop
				];
			if(empty($out["PROPERTIES"][$idp])) $out["PROPERTIES"][$idp] = $arProp;

			if(!empty($prop[_i("TITUL")]) && $prop[_i("TITUL")]=="true") 
				$out["PROPERTIES"][$idp]["TILE_CATS_XML"][$xmlid]= $prop[_i("TITUL_SORT")];

			if(!empty($prop[_i("REQUIRED_IN")]) && $prop[_i("REQUIRED_IN")]=="true") $out["PROPERTIES"][$idp]["REQUIRED_IN"][]=$xmlid;
			if(!empty($prop[_i("FILTER_N_CATS_XML")]) && $prop[_i("FILTER_N_CATS_XML")]=="true") $out["PROPERTIES"][$idp]["FILTER_N_CATS_XML"][$xmlid]+=1;
			if(!empty($prop[_i("FILTER_CATS_XML")]) && $prop[_i("FILTER_CATS_XML")]=="true") $out["PROPERTIES"][$idp]["FILTER_CATS_XML"][$xmlid]+=1;

			/*$ar["EL_PROPS"][]=[
				"XML_ID" => $idp,
				"NAME" => $prop[_i("NAME")],
				"TITUL" => $prop[_i("TITUL")],
				"TITUL_SORT" => $prop[_i("TITUL_SORT")],

				];*/
			//if(empty($idp)) echol($prop);
			//else echol($prop);
		}
		foreach($el[_i("PROPERTIES")] as $k => $prop){
			//if(!empty($prop[_i("NAME")]))
			$ar["PROPS"][]= $prop[_i("PROPERTY")][_i("ID")];
			//крупногабарит
			if(
				$prop[_i("PROPERTY")][_i("ID")] =="2cbcf88a-ab09-11e6-be4f-ac162d7b6f40"
				&& $prop[_i("VALUE")] == "Да"
			) 
				$ar["KGT"]="1";
			else $ar["KGT"]="0";
				
			$out["GROUP_PROPERTIES"][$prop[_i("PROPERTY")][_i("ID")]]+=1;
		}
		if(is_array($ar)){
				$out["TYPES"][$ar["TYPE"]] +=1;
				$out["BY_XML"][ $xmlid ] = $ar;
		}
	}
	return $out;
}

function findLevel($arParents){
	$arIn = [
		"DATA" => $arParents,
		"LEVELS" => [ 1 => $arParents["root"]]
	];
	//echol("123");
	$depth=0;
	do{
		$depth++;
		$children = $arIn["LEVELS"][$depth];
		foreach($children as $child){
			if(!empty($arIn["DATA"][$child]))
				foreach($arIn["DATA"][$child] as $ch2) $arIn["LEVELS"][$depth+1][]=$ch2;
		}

	}while(!empty($arIn["LEVELS"][$depth]));
	return $arIn["LEVELS"];
}

function LoadSections($arData, $arLevels){
	global $IBLOCK;
	global $bs;
	global $UNSET_PARENT_ON_UPDATE;
	$arSections = getSectionList($IBLOCK, "all", "Y", false);
	foreach($arSections as $k=>$secAr){
		if($secAr["XML_ID"]!="")
			$Sections[$secAr["XML_ID"]] = $secAr["ID"];
	}
	//echol($Sections);
	//echol($arLevels);
	unset ($Sections[""]);
	$arparams = [
		"max_len" => 200,
		"change_case" => "U",
		"replace_space" => "_",
		"replace_other" => "",
		"delete_repeat_replace" => true
	];


	foreach($arLevels as $depth => $sections){
		//echol ("here");
		foreach($sections as $section)
			
			if(!empty($arData[$section])) {
			// сделаем загрузку
				$id = $section;
				$sec = $arData[$id];

				$arFields = formatSectionForLoad($sec, $Sections[$sec["SECTION_ID"]]);
				echol($id."___".$sec["SECTION_ID"]." +++ ".$Sections[$sec["SECTION_ID"]]);
				$arFields["XML_ID"] = $id;
				$arFields["EXTERNAL_ID"] = $id;
				if(empty($Sections[$id])) {
					// add
					$arFields["CODE"] = Cutil::translit($arFields["NAME"],"ru",$arParams);
					$ID = $bs->Add($arFields);
					$Sections[$id] = $ID;
	  				$res = ($ID>0);
	  				echol("added $ID");
				}
				else {
					//UPDATE 
					$ID = $Sections[$id];
					echol($arFields);
					if($UNSET_PARENT_ON_UPDATE == true) unset($arFields["IBLOCK_SECTION_ID"]);
					// костыль на zzz для home-comfort
					if(
						$arFields["XML_ID"]=="dc419151-5c4b-4ddc-9b88-62b0761599fa" ||
						$arFields["XML_ID"]=="e5d64653-253e-4193-bbbe-fcbd5d79ab36"
						) $arFields["ACTIVE"]="N";
					$res = $bs->Update($ID, $arFields);
					echol("updated $ID");
					$Sections[$id] = $ID;
				}
				
				if(!$res)
	  				echo $bs->LAST_ERROR;

			}
	}
	CIBlockSection::ReSort($IBLOCK);
}

function formatSectionForLoad($arSec, $SECTION_ID)
{
	global $IBLOCK;
	//echol($arSec);

	//$bs = new CIBlockSection;

	if(empty($SECTION_ID)) $SECTION_ID = "false";
	$arFields = Array(
	  "ACTIVE" => $arSec["ACTIVE"],
	  "IBLOCK_SECTION_ID" =>  $SECTION_ID,
	  "IBLOCK_ID" => $IBLOCK,
	  "NAME" => $arSec["NAME"],
	  "UF_NSI_CODE" => $arSec["NSI_CODE"]
	  );

	//if($SECTION_ID=="false")echol($arFields);
	
	return $arFields;

}
// -------------------------- /CATALOG ------------------------------



function leaveActiveElements($arIn, $arSearch)
{
	global $SITE_TO_SHOW_XML_ID;
	$activeEls = array_keys($arSearch);
	foreach($arIn as $k => $el){
		if(is_set($arSearch[$k])){
			$out["TO_UPDATE"][$k]=$el;
		}elseif($el["SITE_AVAILABLE"][$SITE_TO_SHOW_XML_ID]=="true"){
			$out["TO_ADD"][$k]=$el;
		}else{
			$out["LOST"][$k]="true";
		}
	}
	return $out;
}


function echopart($arIn, $limit=10, $offset=0){
	
	$cnt = count($arIn);
	$keys = array_keys($arIn);
	for($i=0; ($i<$limit+$offset && $i<$cnt); $i++){
		if(!empty($keys[$i])&& $i>$offset){
			$out[$keys[$i]] = $arIn[$keys[$i]];
		}
		if($i>($limit+$offset)) break;
	}
	echol($out);
}

function CheckCanBuy($arIn)
{
	foreach($arIn as $k => $el){
		if($el["WEB_ACTIVE"]=="Y" && $el["ACTIVE"]=="Y" && $el["AVAILABLE_TO_BUY"]=="Y"){
			$el["GLOBAL_AVAILABLE"]="Y";
		}else { 
			$el["GLOBAL_AVAILABLE"]="N";
			//echol($el);
		}
		$arIn[$k]=$el;
	}
	return $arIn;
}

function countActive($arIn){
	foreach($arIn as $k=>$el){
		foreach(["ACTIVE","AVAILABLE_TO_BUY","WEB_ACTIVE","GLOBAL_AVAILABLE"] as $key){
			if($el[$key]=="Y") $arOut[$key]+=1;
			elseif($el[$key]=="N") $arOut["NOT_".$key]+=1;
				elseif(empty($el[$key])) $arOut["EMPTY_".$key] +=1;
		}
	}
	return $arOut;
}

function mergeProductSection($arIn,$arSections)
{
	foreach($arIn as $k=>$el){
		if(!empty($el["SECTION"]["GROUP"]))
			$el["SECTION"]["PARENT"] = $arSections["BY_XML"][$el["SECTION"]["GROUP"]];
		$out[$k] = $el;
	}
	return $out;
}

function checkSections($arIn){
	foreach($arIn as $k=>$el){
		if(empty($el["SECTION"])){ 
			$arOut["EMPTY_SECTIONS"]+=1;
			$arOut["skip"][]=$k;
		}
		elseif(empty($el["SECTION"]["GROUP"])) {
			$arOut["EMPTY_GROUPS"]+=1;
			$arOut["EMPTY_GROUP"][$el["NSI_CODE"]]+=1;
			$arOut["skip"][]=$k;
		}
		elseif(empty($el["SECTION"]["PARENT"])){
			$arOut["EMPTY_PARENT"]+=1;			
			$arOut["NOT_FOUND"][]=$el["SECTION"]["GROUP"];	
			$arOut["skip"][]=$k;
		} 
	}
	return $arOut;
}

function mergeElementProps($arEls, $arProps){
	foreach($arEls as $el){
		foreach($el["PROPERTIES"] as $pid => $pval){
			if(empty($arProps["PROPERTIES"][$pid])) $out["LOST"][$pid] = $pval;
			elseif(!empty($pval)){
				$pr = $arProps["PROPERTIES"][$pid];
				$out[$pid]["DATA"] = $pr;
				$out[$pid]["VALUES"][$pval] += 1;
				if($pr["VALUE_TYPE"]=="Файл") {
					
				}
			}
		}
	}
	//echopart($arProps["PROPERTIES"]);
	//	 [2c3526d5-637f-11e5-b5fc-ac162d7b6f40] => Array
	//       (
	//           [NAME] => 3D изображение_2
	//           [XML_ID] => 2c3526d5-637f-11e5-b5fc-ac162d7b6f40
	//           [NSI_CODE] => 00158
	//           [ACTIVE] => Y
	//           [PROPERTY_GROUP] => ee550ddb-6379-11e5-b5fc-ac162d7b6f40
	//           [VALUE_TYPE] => Файл
	//           [MULTIPLE] => N
	//           [DETAIL_TEXT] => Array
	//               (
	//               )

	//           [MEASURE] => 
	//           [source] => Array
	//               (
	//                   [_id] => 2c3526d5-637f-11e5-b5fc-ac162d7b6f40
	//                   [ПометкаУдаления] => false
	//                   [Код] => 00158
	//                   [Наименование] => 3D изображение_2
	//                   [ТипЗначения] => Файл
	//                   [Описание] => Array
	//                       (
	//                       )

	//                   [КодНаСайте] => 3d_2_ru.new
	//                   [МножественныйВыбор] => false
	//                   [ТипХарактеристики] => Array
	//                       (
	//                           [@xsi:type] => d5p1:ПередаваемаяЗапись
	//                           [ИдентификаторВБазе] => ee550ddb-6379-11e5-b5fc-ac162d7b6f40
	//                       )

	//               )

	//       )

	return $out;
}


function preparePropsLoad($arIn){
	
	global $PROPS_GROUPER_IBLOCK_ID;
	global $PROPERTIES_IBLOCK_ID;
	global $IBLOCK;
	global $MEASURES_IBLOCK;

	//get Config
	$arList = getPropsList();
	foreach($arList as $pr){
		if($pr["XML_ID"]!=""){
			$out[$pr["XML_ID"]] = $pr;
		}
	}
	$arList = $out;
	$arKeys = array_keys($arList);

	$arIBList = allElements( $PROPERTIES_IBLOCK_ID, array("ID","NAME","XML_ID","PROPERTY_TILE_CATS_XML","PROPERTY_FILTER_CATS_XML","PROPERTY_FILTER_N_CATS_XML","PROPERTY_MEASURE_XML"), "XML_ID");
	$arIBList = cleanTilda($arIBList);
	$ibkeys = array_keys($arIBList);
	//echol($arIBList);



	// получить подсказки // !!! сначала должен быть загружен список единиц измерения в инфоблок $MEASURES_IBLOCK
	$arIBUnits = allElements( $MEASURES_IBLOCK, array("ID","NAME","XML_ID", "ACTIVE","PROPERTY_SHORT_NAME"), "XML_ID");
	//echol($arIBUnits);


	$arIBGroups = allElements( $PROPS_GROUPER_IBLOCK_ID, array("ID","NAME","XML_ID"), "XML_ID");


	foreach($arIn as $id => $prop){

		if(!empty($prop["GROUP_XML_ID"])) $Groups[$prop["GROUP_XML_ID"]] = parseGroupInfo($prop, $Groups[$prop["GROUP_XML_ID"]]);
		$Groups[$prop["GROUP_XML_ID"]]["IBLOCK_ID"] = $PROPS_GROUPER_IBLOCK_ID;
		if(!empty($arIBGroups[$prop["GROUP_XML_ID"]])) $Groups[$prop["GROUP_XML_ID"]]["ID"] = $arIBGroups[$prop["GROUP_XML_ID"]]["ID"];
		//echol($prop);

		// Готовим к загрузке в инфоблок со связями
		$outIblock = [
			"NAME" => $prop["NAME"],
			"XML_ID" => $prop["XML_ID"],
			"CODE" => $prop["CODE"],
			"ACTIVE" => $prop["ACTIVE"],
			"IBLOCK_ID" => $PROPERTIES_IBLOCK_ID,
			"PROPERTY_VALUES" => ["MEASURE_XML" => $prop["MEASURE_XML"] ]
		];
	//	if(!empty($prop["TILE_CATS_XML"])) {
	//		$outIblock["PROPERTY_VALUES"]["TILE_CATS_XML"] = $prop["TILE_CATS_XML"];
	//		$outIblock["PROPERTY_VALUES"]["TILE"] = "Y";
	//	}

		if(!empty($prop["TILE_CATS_XML"]) && ($prop["TILE_CATS_XML"] != "false"))
			foreach($prop["TILE_CATS_XML"] as $val => $c)
				$outIblock["PROPERTY_VALUES"]["TILE_CATS_XML"][] = $val;
		else
            $outIblock["PROPERTY_VALUES"]["TILE_CATS_XML"] = array();

		if(!empty($prop["FILTER_CATS_XML"])) 
			foreach($prop["FILTER_CATS_XML"] as $val => $c)
				$outIblock["PROPERTY_VALUES"]["FILTER_CATS_XML"][] = $val;
        else
            $outIblock["PROPERTY_VALUES"]["FILTER_CATS_XML"] = array();

		if(!empty($prop["FILTER_N_CATS_XML"])) 
			foreach($prop["FILTER_N_CATS_XML"] as $val => $c)
				$outIblock["PROPERTY_VALUES"]["FILTER_N_CATS_XML"][] = $val;
        else
            $outIblock["PROPERTY_VALUES"]["FILTER_N_CATS_XML"] = array();

        /*if($prop["XML_ID"]=="fcb88ca0-6103-11e5-b5fc-ac162d7b6f40"){

            echol($outIblock);
        }*/

		// Поля для свойсва
		$arFields = Array(
			"NAME" => $prop["NAME"],
			"ACTIVE" => $prop["ACTIVE"],
			"SORT" => ($prop["SORT"]>0)? $prop["SORT"]:100,
			"CODE" => $prop["CODE"],
			"XML_ID" => $id,
			//"HINT" => $param['edinicaIzmereniya']['Наименование'],
			"COL_COUNT" => "50",
			"FILTRABLE" => "Y",
			"PROPERTY_TYPE" => "S",
			"DISPLAY_TYPE"=>"F",
			"USER_TYPE" => "",
			"IBLOCK_ID" => $IBLOCK,
			"HINT" => $arIBUnits[ $prop["MEASURE_XML"] ]["PROPERTY_SHORT_NAME_VALUE"],
		);

		

		$arFields2="";
		// Проверяем тип свойства
		if(!empty($prop["FILTER_CATS_XML"])){
			$arFields['SMART_FILTER']="Y";
			
			/*if (!empty($prop["FILTER_N_CATS_XML"])) {
				$prop['DISPLAY_TYPE']='A';
				$prop['PROPERTY_TYPE']='N';
			}*/
		}else{
			$arFields['SMART_FILTER']="N";
		}
		//echol($prop["VALUE_TYPE"]);


		if ($prop['VALUE_TYPE'] == 'Число') {
				$arFields2=$arFields;
				$arFields2['CODE'].='_n';
				$arFields2['XML_ID'].='-n';
				$arFields2['DISPLAY_TYPE']='A';
				$arFields2['PROPERTY_TYPE']='N';
		}

		if($prop["VALUE_TYPE"]=="Файл"){
			$arFields["PROPERTY_TYPE"]="F";
			$arFields["PROPERTY_TYPE"] = 'F';
			$arFields["FILE_TYPE"] = '';
			$arFields["FILTRABLE"] = 'N';
		} 

								
		// Проверим наличие свойства в инфоблоке свойств
		if(in_array($id, $ibkeys)){
			$cnt3++;
			$outIblock["ID"] = $arIBList[$id]["ID"];
			$arOut["IBLOCK"]["TO_UPDATE"][]=$outIblock;
		}else{
			$cnt4++;
			$arOut["IBLOCK"]["TO_ADD"][]=$outIblock;
		}

		// Проверяем наличие свойства в инфоблоке товаров
		if(in_array($id, $arKeys)){
			$arFields["ID"] = $arList[$id]["ID"];
			$arOut["PROPERTIES"]["TO_UPDATE"][]=$arFields;
			$cnt++;
		}else{
			$arOut["PROPERTIES"]["TO_ADD"][]=$arFields;
			$cnt2++;
		}

		if(in_array($id."-n", $arKeys)&& !empty($arFields2)){
			$arFields2["ID"] = $arList[$id."-n"]["ID"];
			$arOut["PROPERTIES"]["TO_UPDATE"][]=$arFields2;
			$cnt5++;
		}elseif(!empty($arFields2)){
			$arOut["PROPERTIES"]["TO_ADD"][]=$arFields2;
			$cnt6++;
		}
	}
	$arOut["GROUPS"] = $Groups;
	echol("===$cnt==$cnt2=---$cnt3--$cnt4---$cnt5....$cnt6..");
	//echol($arOut);
	return $arOut;
}

function parseGroupInfo($prop, $out)
{
	global $PROPS_GROUPER_IBLOCK_ID;

	$id = $prop["GROUP_XML_ID"];

	if(!empty($prop["GROUP_NAME"])) $out["NAME"] = $prop["GROUP_NAME"];
	if(!empty($prop["GROUP_XML_ID"])) $out["XML_ID"] = $prop["GROUP_XML_ID"];
	if(!empty($prop["GROUP_SORT"])) $out["SORT"] = $prop["GROUP_SORT"];
	if(!empty($prop["GROUP_ACTIVE"])&& !empty($prop["GROUP_NAME"])) $out["ACTIVE"] = $prop["GROUP_ACTIVE"];

	$out["IBLOCK_ID"] = $PROPS_GROUPER_IBLOCK_ID;

	$out["PROPERTY_VALUES"]["PROPS"][]=$prop["XML_ID"];
	//if(!empty($prop["GROUP_NAME"])) $out[$id]["NAME"] = $prop["GROUP_NAME"];


//	$out[$prop["GROUP_XML_ID"]] = [
//		"XML_ID" => $prop["GROUP_XML_ID"],
//		"NAME" => $prop["GROUP_NAME"],
//		"SORT" => $prop["GROUP_SORT"],
//		"UF_CAT_CODE" => $prop["GROUP_CODE"],
//		"ACTIVE" => $prop["GROUP_ACTIVE"]
//	];

	return $out;
}


/*//////////////////////////

$times=array(
							'start'=>date('Y-m-d H:i:s'),
							'stop'=>'');
						$errors=array();
						$counts=array(
							'Added'=>0,
							'Added_n'=>0,
							'Updated'=>0,
							'Updated_n'=>0,
							'Deleted'=>0,
							'Error'=>0,
							'Error_n'=>0
							);
						$data=CParser::GetDataFromTable($parser_id."_".$_REQUEST['get'],array(),array());
						//CParser::AddDataTable('items_har',array('XML_ID','CODE'));
						$arParams=array();
						while ($arParam=$data->GetNext()) {
							foreach ($arParam as $k => $v) {
								if(isJSON($arParam['~'.$k])){
									$arParam[$k]=json_decode($arParam['~'.$k],true);
								}

							}
							$arParams[]=$arParam;
						}
						$filter_arr=array('103a479e-6104-11e5-b5fc-ac162d7b6f40');

						CModule::IncludeModule('iblock');
						$arFilter = Array("IBLOCK_ID"=>$arConfig['CATALOG_PROPS_ID']);
						$arSelect = Array("ID", "NAME", "CODE", "XML_ID");
						$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);  
						while($arFields = $res->Fetch()) {  
							$made_els[$arFields['XML_ID']] = $arFields['ID'];
							$made_els_left[$arFields['XML_ID']] = $arFields['ID'];
							$made_els_codes[$arFields['CODE']] = $arFields['ID'];
						}
						$prop_list = [];
						$properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("IBLOCK_ID"=>$arConfig['CATALOG_IBLOCK_ID']));
						while ($prop_fields = $properties->GetNext()) {
							if ($prop_fields["SORT"] < 100) {
								continue;
							}
							$prop_list[$prop_fields['CODE']] = $prop_fields;
						}
						$SORT=100;
						
						foreach ($arParams as $key => $param) {
							$param['КодНаСайте'] = preg_replace('/[\.\s\t]/ui', '_', $param['КодНаСайте']);
			
							if ($param['КодНаСайте'] == '') {
								if($param['ХарактеристикиФильтров']==1||in_array($param['Идентификатор'],$filter_arr)){
									$param['КодНаСайте'] = 'filter_'.$param['Код'];
								}else{
									$param['КодНаСайте'] = 'prop_'.$param['Код'];
								}
							}
							$param['КодНаСайте'] = preg_replace('/[\s\t\.]+/ui', '', $param['КодНаСайте']);
							
							$arFields = Array(
								"NAME" => $param['~Наименование'],
								"ACTIVE" => $param['ПометкаУдаления'] == 0 ? "Y" : "N",
								"SORT" => $SORT,
								"CODE" => $param['КодНаСайте'],
								"XML_ID" => $param['Идентификатор'],
								"HINT" => $param['edinicaIzmereniya']['Наименование'],
								"COL_COUNT" => "50",
								"FILTRABLE" => "Y",
								"PROPERTY_TYPE" => "S",
								"DISPLAY_TYPE"=>"F",
								"USER_TYPE" => "",
								"IBLOCK_ID" => $arConfig['CATALOG_IBLOCK_ID'],
							);
							$arFields2=false;
							$arLoadProductArray = Array(
								"NAME" => $param['~Наименование'],
								"ACTIVE" => $param['ПометкаУдаления'] == 0 ? "Y" : "N",
								"SORT" => $param['НомерТитула'],
								"CODE" => $param['КодНаСайте'],
								"XML_ID" => $param['Идентификатор'],
								"IBLOCK_ID" => $arConfig['CATALOG_PROPS_ID'],
							);
							if ($param['ТипЗначения'] == 'Изображения') {
								$arFields["PROPERTY_TYPE"] = 'F';
								$arFields["FILE_TYPE"] = 'jpg, gif, bmp, png, jpeg';
								$arFields["FILTRABLE"] = 'N';
							} elseif ($param['ТипЗначения'] == 'Файл') {
								$arFields["PROPERTY_TYPE"] = 'F';
								$arFields["FILE_TYPE"] = '';
								$arFields["FILTRABLE"] = 'N';
							} elseif ($param['КодНаСайте'] == 'seo_title' || $param['КодНаСайте'] == 'seo_key' || $param['КодНаСайте'] == 'seo_descr') {
								$arFields["ROW_COUNT"] = '3';
							}else{
								
							}

							if($param['ХарактеристикиФильтров']==1||in_array($param['Идентификатор'],$filter_arr)){
								$arFields['SMART_FILTER']="Y";
								if ($param['ТипЗначения'] == 'Число') {
									$arFields2=$arFields;
									$arFields2['CODE'].='_n';
									$arFields2['XML_ID'].='-n';
									$arFields2['DISPLAY_TYPE']='A';
									$arFields2['PROPERTY_TYPE']='N';
								}
								/*if ($param['Диапазон'] == 1) {
									$arFields['DISPLAY_TYPE']='A';
									$arFields['PROPERTY_TYPE']='N';
								}*//*
							}else{
								$arFields['SMART_FILTER']="N";
							}
							if (substr($arFields["CODE"], 0, 2) == '3d') {
								$arFields["CODE"] = 'prop_'.$arFields["CODE"];
								$arFields["FILE_TYPE"] = '';
							}
							

							$elp = new CIBlockProperty;
							$el = new CIBlockElement;
							
							if (!isset($prop_list[$arFields["CODE"]])) {
								if($PRODUCT_ID = $elp->Add($arFields)) {
									$counts['Added']++;
								} else {
									$counts['Error']++;
									$errors[]="Error prop add: ".$elp->LAST_ERROR;
								}
							} else {
								if($elp->Update($prop_list[$arFields["CODE"]]['ID'], $arFields)){
									$counts['Updated']++;
								}else{
									$counts['Error']++;
									$errors[]="Error prop update: ".$elp->LAST_ERROR;
								}
								
							}
							if(is_array($arFields2)){
								$elp = new CIBlockProperty;
								if (!isset($prop_list[$arFields2["CODE"]])) {
									if($PRODUCT_ID = $elp->Add($arFields2)) {
										$counts['Added_n']++;
									} else {
										$counts['Error_n']++;
										$errors[]="Error prop add: ".$elp->LAST_ERROR;
									}
								} else {
									if($elp->Update($prop_list[$arFields2["CODE"]]['ID'], $arFields2)){
										$counts['Updated_n']++;
									}else{
										$counts['Error_n']++;
										$errors[]="Error prop update: ".$elp->LAST_ERROR;
									}
									
								}
							}
							if (!isset($made_els[$param['Идентификатор']])) {
								if($PRODUCT_ID = $el->Add($arLoadProductArray, false, false, false)) {
									$made_els[$arLoadProductArray['CODE']] = $PRODUCT_ID;
									$made_els_codes[$param['Идентификатор']] = $PRODUCT_ID;
								} else {
									$counts['Error']++;
									$errors[]=$el->LAST_ERROR;									
								}

							}else{
								if($el->Update($made_els_left[$param['Идентификатор']], $arLoadProductArray)){

								} else {
									$counts['Error']++;
									$errors[]=$el->LAST_ERROR;									
								}
								unset($made_els_left[$param['Идентификатор']]);
							}
							if($param['Титул']==1){
								CIBlockElement::SetPropertyValuesEx($made_els[$param['Идентификатор']],$arConfig['CATALOG_PROPS_ID'],array('TILE'=>100));
							}else{
								CIBlockElement::SetPropertyValuesEx($made_els[$param['Идентификатор']],$arConfig['CATALOG_PROPS_ID'],array('TILE'=>false));
							}
							unset($prop_list[$arFields["CODE"]]);
							if(is_array($arFields2)){
								unset($prop_list[$arFields2["CODE"]]);
							}
							$SORT += 1;
						}
						foreach($made_els_left as $key=>$left_good_id){
							CIBlockElement::Delete($left_good_id);
							
						}
						//p($prop_list);
						foreach ($prop_list as $k => $v) {
							CIBlockProperty::Delete($v['ID']);
							$counts['Deleted']++;
						}
						
						$times['stop']=date('Y-m-d H:i:s');
						p($counts);
						p($errors);
						p($times);
						CParser::AddLog($params_parser_id,'PropertiesImport',array('MESSAGE'=>'Импорт свойств','DATA'=>json_encode(array('times'=>$times,'counts'=>$counts,'errors'=>$errors))));
						if($counts['Added']>0||$counts['Deleted']>0||$counts['Added_n']>0){
							$times=array(
							'start'=>date('Y-m-d H:i:s'),
							'stop'=>'');
							$errors=array();
							$counts=array();
							$index = \Bitrix\Iblock\PropertyIndex\Manager::createIndexer($arConfig['CATALOG_IBLOCK_ID']);
							$index->startIndex();
							$index->continueIndex(0); // создание без ограничения по времени
							$index->endIndex();
							$times['stop']=date('Y-m-d H:i:s');
							CParser::AddLog($params_parser_id,'IndexRecreateImport',array('MESSAGE'=>'Пересоздание фасетного индекса','DATA'=>json_encode(array('times'=>$times,'counts'=>$counts,'errors'=>$errors))));		
						}
						break;*/


function MakeLoadReady($arIn){
	global $el;
	global $GLOBALTEST;
	global $SILENTPROPS;
	global $IBLOCK;

	
	foreach($arIn as $k => $arLoad){
		
		if(!empty($arLoad["DETAIL_TEXT"]))
			$arLoad["DETAIL_TEXT_TYPE"] = "html";
 		
 		//$res = UpdateProduct($ELID, $arLoad, true);
		if(!empty($arLoad["NAME"])){
			if(!empty($arLoad["ID"])) {
				$ELID = $arLoad["ID"];
				unset($arLoad["ID"]);
				echo "\nto update $ELID";
				if($SILENTPROPS != true) { echo " with \n "; echol($arLoad); }
				
				if($GLOBALTEST != true){
					$res = UpdateProduct($ELID, $arLoad, true);
					checkCatalogable($ELID);
				}
			}
			elseif($GLOBALTEST == true){
				echo "\nTo add element";
					if($SILENTPROPS != true) { echo " with \n "; echol($arLoad); }
			}
			else {

				if( $ELID = $el->Add($arLoad, false, true, true) ){
					checkCatalogable($ELID);
					echo "\nAdded $ELID";
					if($SILENTPROPS != true) { echo " with \n "; echol($arLoad); }
				}
				else echo "Error: ".$el->LAST_ERROR;
			}
				
		}
	}
	//CIBlockSection::ReSort($IBLOCK);

}



function MakeLoadReadyProps($arIn){
	global $ibp;
	global $GLOBALTEST;
	global $SILENTPROPS;
	global $IBLOCK;

	foreach($arIn as $code => $prop){

		if(!empty($prop["ID"])){
			// Обновляем существующее свойство
			$PropID = $id = $prop["ID"];
			unset($prop["ID"]);
			//echol($arUp);
			$res = $ibp->Update($id, $prop);
		}elseif(!empty($prop)){
			$PropID = $ibp->Add($prop);				
		}
		echol(" done with $PropID = ".$prop["NAME"]);
	}

}

function setStoreProduct($id, $store, $amount, $arStore)
{
	global $SILENTPROPS;
	$arFields = Array(
		"PRODUCT_ID" => $id,
		"STORE_ID" => $store,
		"AMOUNT" => $amount
	);		
	if(!empty($arStore[$id])) {
		$loadid = $arStore[$id];
		$ID = CCatalogStoreProduct::Update($loadid, $arFields);
		if($SILENTPROPS != "true") echol("upd $loadid ");
	}
	else {
		$ID = CCatalogStoreProduct::Add($arFields);
		if($SILENTPROPS != "true") echol("added $ID ");
	}

	return $ID;
}
function getElementStores($id,$store_id=""){
	$arFilter =  array('PRODUCT_ID' =>$id);
	if(!empty($store_id)) $arFilter["STORE_ID"] = $store_id;
	$rsStore = CCatalogStoreProduct::GetList(array(), $arFilter, false, false, array()); 
	while ($arStore = $rsStore->Fetch()){   
		$out[]=$arStore;
	}
	return $out;
}
?>