/**
  * Установка активности поля в зависимости от набранных фильтров
  */
 protected function setState(&$arField)
 {
     $bNeedRestoreFields = $bNeedRestoreKFields = false;
     $fields_filter = isset($_REQUEST['fields_filter']) ? $_REQUEST['fields_filter'] : array();
     $k_fields_filter = isset($_REQUEST['k_fields_filter']) ? $_REQUEST['k_fields_filter'] : array();
     $field_name = $arField['name'];
     if (isset($fields_filter[$field_name])) {
         $bNeedRestoreFields = $fields_filter[$field_name];
         unset($_REQUEST['fields_filter'][$field_name]);
     }
     if (isset($k_fields_filter[$field_name])) {
         $bNeedRestoreKFields = $k_fields_filter[$field_name];
         unset($_REQUEST['k_fields_filter'][$field_name]);
     }
     $iFieldId = $arField['id'];
     switch ($arField['type']) {
         case "boolean":
             $sel = $this->getCurrentCountSelection();
             $sel->addPropertyFilterEqual($iFieldId, 1);
             $sqls = umiSelectionsParser::parseSelection($sel);
             $query_key = trim(str_replace(array("\n", "\r", "\t", " "), "", $sqls['count']));
             $count = 0;
             //Count of goods with this value, with selected filters but without filering on this field
             if ($query_key) {
                 $oCache = kFilters::getInstance($this->catalogId)->getCache();
                 //try load from cache
                 $count = $oCache->getQuery($query_key, $this->catalogId);
                 if (is_null($count)) {
                     $count = umiSelectionsParser::runSelectionCounts($sel);
                     //save to cache
                     $oCache->saveQuery($count, $query_key, $this->catalogId);
                 }
             }
             if ($count == 0) {
                 $arField['active'] = false;
             } else {
                 $arField['active'] = true;
             }
             break;
         case "option":
             $arValues = $arField['values'];
             foreach ($arValues as $i => $arValue) {
                 $sel = $this->getCurrentCountSelection();
                 $sel->addPropertyFilterEqual($iFieldId, $arValue['id']);
                 $sqls = umiSelectionsParser::parseSelection($sel);
                 $query_key = trim(str_replace(array("\n", "\r", "\t", " "), "", $sqls['count']));
                 $count = 0;
                 //Count of goods with this value, with selected filters but without filering on this field
                 if ($query_key) {
                     $oCache = kFilters::getInstance($this->catalogId)->getCache();
                     //try load from cache
                     $count = $oCache->getQuery($query_key, $this->catalogId);
                     if (is_null($count)) {
                         $count = umiSelectionsParser::runSelectionCounts($sel);
                         //save to cache
                         $oCache->saveQuery($count, $query_key, $this->catalogId);
                     }
                 }
                 if ($count == 0) {
                     $arField['values'][$i]['active'] = false;
                 } else {
                     $arField['values'][$i]['active'] = true;
                 }
             }
             break;
     }
     if ($bNeedRestoreFields !== false) {
         $_REQUEST['fields_filter'][$field_name] = $bNeedRestoreFields;
     }
     if ($bNeedRestoreKFields !== false) {
         $_REQUEST['k_fields_filter'][$field_name] = $bNeedRestoreKFields;
     }
 }