public function actionSearch()
 {
     $userQuery = mb_strtolower($_GET["query"]);
     $params = array("_is_main_" => 1);
     /**
      * Получаем доп. параметры
      */
     if (array_key_exists("params", $_GET)) {
         foreach ($_GET["params"] as $key => $value) {
             if ($key == "__task") {
                 $key = "_tasks_";
             }
             $params[$key] = $value;
         }
     }
     $result = array();
     /**
      * Выполняем поиск
      */
     $resultObj = CSolr::search($userQuery, $params);
     $docs = $resultObj->getDocuments();
     /**
      * В зависимости от класса модели берем данные только
      * из полей, которые описаны в метаданных модели
      */
     if (is_array($docs)) {
         foreach ($docs as $doc) {
             if (property_exists($doc, "_class_")) {
                 $class = $doc->_class_;
                 /**
                  * Получаем модель по наименованию
                  */
                 $model = CCoreObjectsManager::getCoreModel($class);
                 if (!is_null($model)) {
                     foreach ($model->fields->getItems() as $field) {
                         if (property_exists($doc, $field->field_name)) {
                             $fieldName = $field->field_name;
                             $fieldValue = mb_strtolower($doc->{$fieldName});
                             if (mb_strpos($fieldValue, $userQuery) !== false) {
                                 $result[] = array("field" => $fieldName, "value" => $doc->{$fieldName}, "class" => $doc->_class_, "label" => $doc->{$fieldName});
                             }
                         }
                     }
                 }
             }
         }
     }
     /**
      * Если определена задача, то попробуем поискать
      * и в связанных с ее моделями
      */
     if (array_key_exists("_tasks_", $params)) {
         foreach (CCoreObjectsManager::getModelsByTask($params["_tasks_"])->getItems() as $coreModel) {
             $newParams = array("_is_main_" => "0", "_parent_class_" => $coreModel->class_name);
             $docs = CSolr::search($userQuery, $newParams);
             if (is_array($docs)) {
                 foreach ($docs as $doc) {
                     if (property_exists($doc, "_class_")) {
                         $class = $doc->_class_;
                         /**
                          * Получаем модель по наименованию
                          */
                         $model = CCoreObjectsManager::getCoreModel($class);
                         if (!is_null($model)) {
                             foreach ($model->fields->getItems() as $field) {
                                 if (property_exists($doc, $field->field_name)) {
                                     $fieldName = $field->field_name;
                                     $fieldValue = strtolower($doc->{$fieldName});
                                     if (mb_strpos($fieldValue, $userQuery) !== false) {
                                         $result[] = array("field" => $doc->_parent_field_, "value" => $doc->_doc_id_, "class" => $doc->_parent_class_, "label" => $doc->{$fieldName});
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     echo json_encode($result);
 }