function GetTO( $toProgramID, $chId ,$withWorks = false, $with_out_washing = false ){ global $ar_Debug; $time_start = microtime(1); $arTO = array(); $arOrderTO = array(); $arFilterTO = array( "IBLOCK_ID"=> IBLOCK_SK_CALC_WORKS_ID, "ACTIVE"=>"Y","PROPERTY_j_chassis" => $chId , "SECTION_ID"=>$toProgramID, "INCLUDE_SUBSECTIONS"=>"Y"); $arSelfieldsTO = array( "IBLOCK_ID", "ID", "NAME","PROPERTY_j_chassis","PROPERTY_j_type_to"); $arGroup = array("PROPERTY_j_type_to"); $ar_Debug [ __METHOD__][]= $arFilterTO; $cache = new CPHPCache(); $cache_time = 3600*-1; $cache_id = 'service_calc_'.implode("-",array( $toProgramID, $chId, (($with_out_washing === false)? "N":"Y") )); $cache_path = '/service/'; if( $cache->InitCache( $cache_time, $cache_id , $cache_path ) ){ $arTO = $cache->GetVars(); }elseif( $cache->StartDataCache() ){ $dbTOid = CIBlockElement::GetList ( $arOrderTO, $arFilterTO, $arGroup, false, $arSelfieldsTO ); $ar_Debug [ __METHOD__][]= $dbTOid->SelectedRowsCount(); $arTOid = array(); while( $obTO = $dbTOid -> GetNextElement() ) { $tmp = array(); $arWork = array(); $tmp = $obTO -> GetFields(); if ($withWorks) { $arWork = GetWorks ($toProgramID, $chId, $tmp["PROPERTY_J_TYPE_TO_VALUE"], $with_out_washing); $tmp["work"] = $arWork; } $arFilterTO = array ( "IBLOCK_ID"=> IBLOCK_SK_CALC_TO_TYPE_ID, "ACTIVE"=>"Y","ID" => $tmp["PROPERTY_J_TYPE_TO_VALUE"] ); $arSelfieldsTO = array ( "IBLOCK_ID", "ID", "NAME","PROPERTY_to_chassis","PROPERTY_to_mileage","PROPERTY_to_once","PROPERTY_to_once.XML_ID","SORT","PROPERTY_to_shift.XML_ID","PROPERTY_to_shift"); $dbTO = CIBlockElement::GetList ( array(), $arFilterTO, false, false, $arSelfieldsTO ); while( $obTO = $dbTO -> GetNextElement()){ $tmp3 = array(); $tmp3 = $obTO -> GetFields(); $tmp["PROPERTY_TO_MILEAGE_VALUE"]= $tmp3["PROPERTY_TO_MILEAGE_VALUE"]; $tmp["PROPERTY_TO_ONCE_VALUE"] = $tmp3["PROPERTY_TO_ONCE_VALUE"]; $tmp["PROPERTY_TO_ONCE_ENUM_ID"] = $tmp3["PROPERTY_TO_ONCE_ENUM_ID"]; $tmp["PROPERTY_TO_ONCE_XML_ID"] = $tmp3["PROPERTY_TO_ONCE_XML_ID"]; $tmp["PROPERTY_TO_SHIFT_VALUE"] = $tmp3["PROPERTY_TO_SHIFT_VALUE"]; $tmp["PROPERTY_TO_SHIFT_ENUM_ID"]= $tmp3["PROPERTY_TO_SHIFT_ENUM_ID"]; $tmp["PROPERTY_TO_SHIFT_XML_ID"] = $tmp3["PROPERTY_TO_SHIFT_XML_ID"]; $tmp["NAME"] = $tmp3["NAME"]; $tmp["SORT"] = $tmp3["SORT"]; $tmp["PROGRAM_TO_ID"] = $toProgramID; $arTO[ $tmp3["NAME"] ] = $tmp; } } usort ( $arTO, "SortByInnerSortField" ); $cache->EndDataCache( $arTO ); } $time_end = microtime(1); $time = $time_end - $time_start; global $ar_Debug; $ar_Debug["TIMES"][] = "GetTO время работы ". sprintf("%1.9f",$time) ." секунд\n"; return $arTO; }
function GetTO( $chId ,$withWorks = false) { $time_start = microtime(1); $arTO = array(); $arOrderTO = array(); $arFilterTO = array( "IBLOCK_ID"=> 10, "ACTIVE"=>"Y","PROPERTY_chassis" => $chId ); $arSelfieldsTO = array( "IBLOCK_ID", "ID", "NAME","PROPERTY_chassis","PROPERTY_type_to"); $arGroup = array("PROPERTY_type_to"); //$arGroup = false; $dbTOid = CIBlockElement::GetList ( $arOrderTO, $arFilterTO, $arGroup, false,$arSelfieldsTO ); // echo $dbTOid->SelectedRowsCOunt(); $arTOid = array(); while( $obTO = $dbTOid -> GetNextElement() ) { $tmp = array(); $arWork = array(); $tmp = $obTO -> GetFields(); //print_r( $tmp ); if ($withWorks) { // $arWork = GetWorks ($chId, $tmp["ID"]); $arWork = GetWorks ($chId, $tmp["PROPERTY_TYPE_TO_VALUE"]); //echo "GetWorks ($chId, ". $tmp["PROPERTY_TYPE_TO_VALUE"].");"; $tmp["work"] = $arWork; } $arFilterTO = array ( "IBLOCK_ID"=> 7, "ACTIVE"=>"Y","ID" => $tmp["PROPERTY_TYPE_TO_VALUE"] ); $arSelfieldsTO = array ( "IBLOCK_ID", "ID", "NAME","PROPERTY_chassis","PROPERTY_mileage","PROPERTY_once","PROPERTY_once.XML_ID"); $dbTO = CIBlockElement::GetList ( $arOrderTO, $arFilterTO, false, false, $arSelfieldsTO ); while( $obTO = $dbTO -> GetNextElement() ) { $tmp3 = array(); $tmp3 = $obTO -> GetFields(); $tmp["PROPERTY_MILEAGE_VALUE"] = $tmp3["PROPERTY_MILEAGE_VALUE"]; $tmp["PROPERTY_ONCE_VALUE"] = $tmp3["PROPERTY_ONCE_VALUE"]; $tmp["PROPERTY_ONCE_ENUM_ID"] = $tmp3["PROPERTY_ONCE_ENUM_ID"]; $tmp["NAME"] = $tmp3["NAME"]; $arTO[ $tmp3["NAME"] ] = $tmp; } } $time_end = microtime(1); $time = $time_end - $time_start; global $ar_Debug; $ar_Debug["TIMES"][] = "GetTO время работы ". sprintf("%1.9f",$time) ." секунд\n"; return $arTO; }