function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "CPG.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "CPG.PRODUCT_ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "CPG.GROUP_ID", "TYPE" => "int"), "ACCESS_LENGTH" => array("FIELD" => "CPG.ACCESS_LENGTH", "TYPE" => "int"), "ACCESS_LENGTH_TYPE" => array("FIELD" => "CPG.ACCESS_LENGTH_TYPE", "TYPE" => "char"), "GROUP_ACTIVE" => array("FIELD" => "G.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_group G ON (CPG.GROUP_ID = G.ID)"), "GROUP_NAME" => array("FIELD" => "G.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_group G ON (CPG.GROUP_ID = G.ID)"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && empty($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_product2group CPG " . "\t" . $arSqls["FROM"] . " ";
         if (!empty($arSqls["WHERE"])) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_product2group CPG " . "\t" . $arSqls["FROM"] . " ";
     if (!empty($arSqls["WHERE"])) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_product2group CPG " . "\t" . $arSqls["FROM"] . " ";
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
 static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "DE.ID", "TYPE" => "int"), "DOC_ID" => array("FIELD" => "DE.DOC_ID", "TYPE" => "int"), "STORE_FROM" => array("FIELD" => "DE.STORE_FROM", "TYPE" => "int"), "STORE_TO" => array("FIELD" => "DE.STORE_TO", "TYPE" => "int"), "ELEMENT_ID" => array("FIELD" => "DE.ELEMENT_ID", "TYPE" => "int"), "AMOUNT" => array("FIELD" => "DE.AMOUNT", "TYPE" => "double"), "PURCHASING_PRICE" => array("FIELD" => "DE.PURCHASING_PRICE", "TYPE" => "double"), "IS_MULTIPLY_BARCODE" => array("FIELD" => "CP.BARCODE_MULTI", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_product CP ON (DE.ELEMENT_ID = CP.ID)"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_docs_element DE " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_docs_element DE " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_docs_element DE " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
 static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "CP.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "CP.PRODUCT_ID", "TYPE" => "int"), "STORE_ID" => array("FIELD" => "CP.STORE_ID", "TYPE" => "int"), "AMOUNT" => array("FIELD" => "CP.AMOUNT", "TYPE" => "double"), "STORE_NAME" => array("FIELD" => "CS.TITLE", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_ADDR" => array("FIELD" => "CS.ADDRESS", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_DESCR" => array("FIELD" => "CS.DESCRIPTION", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_GPS_N" => array("FIELD" => "CS.GPS_N", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_GPS_S" => array("FIELD" => "CS.GPS_S", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_IMAGE" => array("FIELD" => "CS.IMAGE_ID", "TYPE" => "int", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_LOCATION" => array("FIELD" => "CS.LOCATION_ID", "TYPE" => "int", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_store_product CP " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_store_product CP " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_store_product CP " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #4
0
 function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     // for old execution style
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if ('' != $arOrder && '' != $arFilter) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         $arFilter = array();
         $arGroupBy = false;
     }
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "NAME", "PERCENTAGE");
     }
     $arFields = array("ID" => array("FIELD" => "E.ID", "TYPE" => "int"), "NAME" => array("FIELD" => "E.NAME", "TYPE" => "string"), "PERCENTAGE" => array("FIELD" => "E.PERCENTAGE", "TYPE" => "double"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_extra E " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_extra E " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_extra E " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #5
0
 static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "DOC_TYPE", "SITE_ID", "CONTRACTOR_ID", "CURRENCY", "STATUS", "DATE_DOCUMENT", "TOTAL", "DATE_STATUS", "COMMENTARY");
     }
     $arFields = array("ID" => array("FIELD" => "CD.ID", "TYPE" => "int"), "DOC_TYPE" => array("FIELD" => "CD.DOC_TYPE", "TYPE" => "char"), "SITE_ID" => array("FIELD" => "CD.SITE_ID", "TYPE" => "string"), "CURRENCY" => array("FIELD" => "CD.CURRENCY", "TYPE" => "string"), "CONTRACTOR_ID" => array("FIELD" => "CD.CONTRACTOR_ID", "TYPE" => "int"), "DATE_CREATE" => array("FIELD" => "CD.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CD.DATE_MODIFY", "TYPE" => "datetime"), "DATE_DOCUMENT" => array("FIELD" => "CD.DATE_DOCUMENT", "TYPE" => "datetime"), "DATE_STATUS" => array("FIELD" => "CD.DATE_STATUS", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "CD.CREATED_BY", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CD.MODIFIED_BY", "TYPE" => "int"), "STATUS_BY" => array("FIELD" => "CD.STATUS_BY", "TYPE" => "int"), "STATUS" => array("FIELD" => "CD.STATUS", "TYPE" => "string"), "TOTAL" => array("FIELD" => "CD.TOTAL", "TYPE" => "double"), "COMMENTARY" => array("FIELD" => "CD.COMMENTARY", "TYPE" => "string"), "PRODUCTS_ID" => array("FIELD" => "DE.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_DOC_ID" => array("FIELD" => "DE.DOC_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_STORE_FROM" => array("FIELD" => "DE.STORE_FROM", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_STORE_TO" => array("FIELD" => "DE.STORE_TO", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_ELEMENT_ID" => array("FIELD" => "DE.ELEMENT_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_AMOUNT" => array("FIELD" => "DE.AMOUNT", "TYPE" => "double", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_PURCHASING_PRICE" => array("FIELD" => "DE.PURCHASING_PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_store_docs CD " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_store_docs CD " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_store_docs CD " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #6
0
 protected function __GetDiscountID($arFilter)
 {
     global $DB;
     $arResult = array();
     $boolRest = array_key_exists('RESTRICTIONS', $arFilter);
     $arFields = array("DISCOUNT_ID" => array("FIELD" => "DC.DISCOUNT_ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "DC.ACTIVE", "TYPE" => "char"), "USER_GROUP_ID" => array("FIELD" => "DC.USER_GROUP_ID", "TYPE" => "int"), "PRICE_TYPE_ID" => array("FIELD" => "DC.PRICE_TYPE_ID", "TYPE" => "int"));
     if (!isset($arFilter['USER_GROUP_ID'])) {
         $arFilter['USER_GROUP_ID'] = array();
     } elseif (!is_array($arFilter['USER_GROUP_ID'])) {
         $arFilter['USER_GROUP_ID'] = array($arFilter['USER_GROUP_ID']);
     }
     if (!empty($arFilter['USER_GROUP_ID'])) {
         $arFilter['USER_GROUP_ID'][] = -1;
     } else {
         unset($arFilter['USER_GROUP_ID']);
     }
     if (!isset($arFilter['PRICE_TYPE_ID'])) {
         $arFilter['PRICE_TYPE_ID'] = array();
     } elseif (!is_array($arFilter['PRICE_TYPE_ID'])) {
         $arFilter['PRICE_TYPE_ID'] = array($arFilter['PRICE_TYPE_ID']);
     }
     if (!empty($arFilter['PRICE_TYPE_ID'])) {
         $arFilter['PRICE_TYPE_ID'][] = -1;
     } else {
         unset($arFilter['PRICE_TYPE_ID']);
     }
     $active = 'Y';
     if (array_key_exists('ACTIVE', $arFilter)) {
         if ($arFilter['ACTIVE'] === null) {
             $active = '';
         } elseif ($arFilter['ACTIVE'] == 'Y' || $arFilter['ACTIVE'] == 'N') {
             $active = $arFilter['ACTIVE'];
         }
         unset($arFilter['ACTIVE']);
     }
     if ($active != '') {
         $arFilter['ACTIVE'] = $active;
     }
     if (array_key_exists('DISCOUNT_ID', $arFilter)) {
         unset($arFilter['DISCOUNT_ID']);
     }
     $arSelectFields = array('DISCOUNT_ID');
     if ($boolRest) {
         $arSelectFields[] = 'USER_GROUP_ID';
         $arSelectFields[] = 'PRICE_TYPE_ID';
         unset($arFilter['RESTRICTIONS']);
     }
     $arSqls = CCatalog::PrepareSql($arFields, array(), $arFilter, false, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arSqls["WHERE"])) {
         $arSqls["WHERE"] = "1=1";
     }
     $strQuery = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_discount_cond DC WHERE " . $arSqls["WHERE"];
     $arDiscountID = array();
     $rsDiscounts = $DB->Query($strQuery, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     if ($boolRest) {
         $arRestrictions = array();
         while ($arDiscount = $rsDiscounts->Fetch()) {
             $arDiscount['DISCOUNT_ID'] = intval($arDiscount['DISCOUNT_ID']);
             $arDiscountID[$arDiscount['DISCOUNT_ID']] = true;
             if (!array_key_exists($arDiscount['DISCOUNT_ID'], $arRestrictions)) {
                 $arRestrictions[$arDiscount['DISCOUNT_ID']] = array('USER_GROUP' => array(), 'PRICE_TYPE' => array());
             }
             $arDiscount['USER_GROUP_ID'] = intval($arDiscount['USER_GROUP_ID']);
             $arDiscount['PRICE_TYPE_ID'] = intval($arDiscount['PRICE_TYPE_ID']);
             $arRestrictions[$arDiscount['DISCOUNT_ID']]['USER_GROUP'][$arDiscount['USER_GROUP_ID']] = true;
             $arRestrictions[$arDiscount['DISCOUNT_ID']]['PRICE_TYPE'][$arDiscount['PRICE_TYPE_ID']] = true;
         }
         if (!empty($arDiscountID)) {
             $arDiscountID = array_keys($arDiscountID);
             foreach ($arRestrictions as $intKey => $arOneRestrictions) {
                 if (array_key_exists(-1, $arOneRestrictions['USER_GROUP'])) {
                     $arOneRestrictions['USER_GROUP'] = array();
                 }
                 if (array_key_exists(-1, $arOneRestrictions['PRICE_TYPE'])) {
                     $arOneRestrictions['PRICE_TYPE'] = array();
                 }
                 $arRestrictions[$intKey] = $arOneRestrictions;
             }
         }
         $arResult = array('DISCOUNTS' => $arDiscountID, 'RESTRICTIONS' => $arRestrictions);
     } else {
         while ($arDiscount = $rsDiscounts->Fetch()) {
             $arDiscount['DISCOUNT_ID'] = intval($arDiscount['DISCOUNT_ID']);
             $arDiscountID[$arDiscount['DISCOUNT_ID']] = true;
         }
         if (!empty($arDiscountID)) {
             $arResult = array_keys($arDiscountID);
         }
     }
     return $arResult;
 }
Example #7
0
 /**
  * <p>Метод выбирает купоны, соответствующие условиям.</p>
  *
  *
  *
  *
  * @param array $arOrder = array() Массив вида array(by1=&gt;order1[, by2=&gt;order2 [, ..]]), где by - поле для сортировки,
  * может принимать значения: <ul> <li> <b>ID</b> - код (ID) купона;</li> <li>
  * <b>DISCOUNT_ID</b> - код (ID) скидки;</li> <li> <b>ACTIVE</b> - активность купона;</li> <li>
  * <b>ONE_TIME</b> - флаг однократного использования купона;</li> <li> <b>COUPON</b> -
  * код купона;</li> <li> <b>DATE_APPLY</b> - дата применения купона;</li> </ul> поле order
  * - направление сортировки, может принимать значения: <ul> <li> <b>asc</b> -
  * по возрастанию;</li> <li> <b>desc</b> - по убыванию.</li> </ul> Необязательный.
  * По умолчанию купоны не сортируются.
  *
  *
  *
  * @param array $arFilter = array() Массив параметров, по которым строится фильтр выборки. Имеет вид:
  * <pre class="syntax">array( "[модификатор1][оператор1]название_поля1" =&gt;
  * "значение1", "[модификатор2][оператор2]название_поля2" =&gt; "значение2",
  * . . . )</pre> Удовлетворяющие фильтру записи возвращаются в
  * результате, а записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b>!</b> - отрицание;</li> <li> <b>+</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li> <b>&lt;=</b> -
  * значение поля меньше или равно передаваемой в фильтр величины;</li>
  * <li> <b>&lt;</b> - значение поля строго меньше передаваемой в фильтр
  * величины;</li> <li> <b>@</b> - оператор может использоваться для
  * целочисленных и вещественных данных при передаче набора
  * значений (массива). В этом случае при генерации sql-запроса будет
  * использован sql-оператор <b>IN</b>, дающий компактную форму записи;</li>
  * <li> <b>~</b> - значение поля проверяется на соответствие
  * передаваемому в фильтр шаблону;</li> <li> <b>%</b> - значение поля
  * проверяется на соответствие передаваемой в фильтр строке в
  * соответствии с языком запросов.</li> </ul> "название поля" может
  * принимать значения: <ul> <li> <b>ID</b> - код (ID) купона (число);</li> <li>
  * <b>DISCOUNT_ID</b> - код (ID) скидки (число);</li> <li> <b>ACTIVE</b> - фильтр по
  * активности (Y|N); передача пустого значения ("ACTIVE"=&gt;"") выводит
  * купоны без учета их состояния (строка);</li> <li> <b>ONE_TIME</b> - флаг
  * однократного использования купона (Y|N); передача пустого значения
  * ("ONE_TIME"=&gt;"") выводит купоны без учета их типа (строка);</li> <li> <b>COUPON</b>
  * - код купона (маска);</li> <li> <b>DATE_APPLY</b> - дата применения купона
  * (дата);</li> <li> <b>DESCRIPTION</b> - комментарий (маска);</li> </ul> Значения
  * фильтра - одиночное значение или массив значений.<br>
  * Необязательное. По умолчанию купоны не фильтруются.
  *
  *
  *
  * @param mixed $arGroupBy = false Массив полей для группировки купонов. имеет вид: <pre
  * class="syntax">array("название_поля1", "название_поля2", . . .)</pre> В качестве
  * "название_поля<i>N</i>" может стоять любое поле каталога. <br><br> Если
  * массив пустой, то функция вернет число записей, удовлетворяющих
  * фильтру. <br> Значение по умолчанию - <i>false</i> - означает, что
  * результат группироваться не будет.
  *
  *
  *
  * @param mixed $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
  * ограничено сверху значением этого ключа;</li> <li>любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Необязательный. По умолчанию false - купоны не
  * ограничиваются.
  *
  *
  *
  * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены методом. Можно
  * указать следующие поля <i>ID</i>, <i>DISCOUNT_ID</i>, <i>ACTIVE</i>, <i>ONE_TIME</i>, <i>COUPON</i>,
  * <i>DATE_APPLY</i>, <i>DISCOUNT_NAME</i> и <i>DESCRIPTION</i>.<br> Если в массиве присутствует
  * значение "*", то будут возвращены все доступные поля.<br>
  * Необязательный. По умолчанию выводятся все поля.
  *
  *
  *
  * @return CDBResult <p>Метод возвращает объект класса CDBResult.</p>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * if (CModule::IncludeModule("catalog"))
  * { 
  *    $arFilter = array('COUPON' =&gt; 'CP-R8RFW-5YGGPZJ'); 
  *    $dbCoupon = CCatalogDiscountCoupon::GetList (array(), $arFilter); 
  *    if($arCoupon = $dbCoupon-&gt;Fetch()) 
  *    { 
  *        echo "&lt;pre&gt;"; 
  *        print_r($arCoupon); 
  *        echo "&lt;/pre&gt;"; 
  *    } 
  *    else
  *    { 
  *        echo "купона нет"; 
  *    } 
  * }
  * </pre>
  *
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li><a href="http://dev.1c-bitrix.ru/api_help/catalog/fields.php">Структура таблицы</a></li> <li><a
  * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/getbyid.php">CCatalogDiscountCoupon::GetByID</a></li>
  * </ul> </ht
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/getlist.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "CD.ID", "TYPE" => "int"), "DISCOUNT_ID" => array("FIELD" => "CD.DISCOUNT_ID", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "CD.ACTIVE", "TYPE" => "char"), "ONE_TIME" => array("FIELD" => "CD.ONE_TIME", "TYPE" => "char"), "COUPON" => array("FIELD" => "CD.COUPON", "TYPE" => "string"), "DATE_APPLY" => array("FIELD" => "CD.DATE_APPLY", "TYPE" => "datetime"), "DISCOUNT_NAME" => array("FIELD" => "CDD.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_catalog_discount CDD ON (CD.DISCOUNT_ID = CDD.ID)"), "DESCRIPTION" => array("FIELD" => "CD.DESCRIPTION", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "CD.TIMESTAMP_X", "TYPE" => "datetime"), "MODIFIED_BY" => array("FIELD" => "CD.MODIFIED_BY", "TYPE" => "int"), "DATE_CREATE" => array("FIELD" => "CD.DATE_CREATE", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "CD.CREATED_BY", "TYPE" => "int"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_discount_coupon CD " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_discount_coupon CD " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_discount_coupon CD " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
 static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "DOC_ELEMENT_ID", "BARCODE");
     }
     $arFields = array("ID" => array("FIELD" => "DB.ID", "TYPE" => "int"), "DOC_ELEMENT_ID" => array("FIELD" => "DB.DOC_ELEMENT_ID", "TYPE" => "int"), "BARCODE" => array("FIELD" => "DB.BARCODE", "TYPE" => "string"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_docs_barcode DB " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_docs_barcode DB " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_docs_barcode DB " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #9
0
 static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "CODE", "MEASURE_TITLE", "SYMBOL_RUS", "SYMBOL_INTL", "SYMBOL_LETTER_INTL", "IS_DEFAULT");
     } elseif (is_array($arSelectFields)) {
         if (!in_array('*', $arSelectFields)) {
             $selectCodes = array_fill_keys($arSelectFields, true);
             if (!isset($selectCodes['CODE'])) {
                 $arSelectFields[] = 'CODE';
             }
             if ((isset($selectCodes['MEASURE_TITLE']) || isset($selectCodes['SYMBOL_RUS'])) && !isset($selectCodes['SYMBOL_INTL'])) {
                 $arSelectFields[] = 'SYMBOL_INTL';
             }
             unset($selectCodes);
         }
     }
     $arFields = array("ID" => array("FIELD" => "CM.ID", "TYPE" => "int"), "CODE" => array("FIELD" => "CM.CODE", "TYPE" => "int"), "MEASURE_TITLE" => array("FIELD" => "CM.MEASURE_TITLE", "TYPE" => "string"), "SYMBOL_RUS" => array("FIELD" => "CM.SYMBOL_RUS", "TYPE" => "string"), "SYMBOL_INTL" => array("FIELD" => "CM.SYMBOL_INTL", "TYPE" => "string"), "SYMBOL_LETTER_INTL" => array("FIELD" => "CM.SYMBOL_LETTER_INTL", "TYPE" => "string"), "IS_DEFAULT" => array("FIELD" => "CM.IS_DEFAULT", "TYPE" => "char"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_measure CM " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_measure CM " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_measure CM " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     $dbMeasure = new CCatalogMeasureResult($dbRes);
     return $dbMeasure;
 }
Example #10
0
 static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "ACTIVE", "TITLE", "PHONE", "SCHEDULE", "ADDRESS", "DESCRIPTION", "GPS_N", "GPS_S", "IMAGE_ID", "DATE_CREATE", "DATE_MODIFY", "USER_ID", "XML_ID", "SORT", "EMAIL", "ISSUING_CENTER", "SHIPPING_CENTER", "SITE_ID");
     }
     $keyForDelete = array_search("PRODUCT_AMOUNT", $arSelectFields);
     if (!isset($arFilter["PRODUCT_ID"]) && $keyForDelete !== false) {
         unset($arSelectFields[$keyForDelete]);
     }
     if ($keyForDelete == false) {
         $keyForDelete = array_search("ELEMENT_ID", $arSelectFields);
         if ($keyForDelete !== false) {
             unset($arSelectFields[$keyForDelete]);
         }
     }
     $productID = '(';
     if (is_array($arFilter["PRODUCT_ID"])) {
         foreach ($arFilter["PRODUCT_ID"] as $id) {
             $productID .= intval($id) . ',';
         }
         $productID = rtrim($productID, ',') . ')';
     } else {
         $productID .= intval($arFilter["PRODUCT_ID"]) . ')';
     }
     $arFields = array("ID" => array("FIELD" => "CS.ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "CS.ACTIVE", "TYPE" => "string"), "TITLE" => array("FIELD" => "CS.TITLE", "TYPE" => "string"), "PHONE" => array("FIELD" => "CS.PHONE", "TYPE" => "string"), "SCHEDULE" => array("FIELD" => "CS.SCHEDULE", "TYPE" => "string"), "ADDRESS" => array("FIELD" => "CS.ADDRESS", "TYPE" => "string"), "DESCRIPTION" => array("FIELD" => "CS.DESCRIPTION", "TYPE" => "string"), "GPS_N" => array("FIELD" => "CS.GPS_N", "TYPE" => "string"), "GPS_S" => array("FIELD" => "CS.GPS_S", "TYPE" => "string"), "IMAGE_ID" => array("FIELD" => "CS.IMAGE_ID", "TYPE" => "int"), "LOCATION_ID" => array("FIELD" => "CS.LOCATION_ID", "TYPE" => "int"), "DATE_CREATE" => array("FIELD" => "CS.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CS.DATE_MODIFY", "TYPE" => "datetime"), "USER_ID" => array("FIELD" => "CS.USER_ID", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CS.MODIFIED_BY", "TYPE" => "int"), "XML_ID" => array("FIELD" => "CS.XML_ID", "TYPE" => "string"), "SORT" => array("FIELD" => "CS.SORT", "TYPE" => "int"), "EMAIL" => array("FIELD" => "CS.EMAIL", "TYPE" => "string"), "ISSUING_CENTER" => array("FIELD" => "CS.ISSUING_CENTER", "TYPE" => "char"), "SHIPPING_CENTER" => array("FIELD" => "CS.SHIPPING_CENTER", "TYPE" => "char"), "SITE_ID" => array("FIELD" => "CS.SITE_ID", "TYPE" => "string"), "PRODUCT_AMOUNT" => array("FIELD" => "CP.AMOUNT", "TYPE" => "double", "FROM" => "LEFT JOIN b_catalog_store_product CP ON (CS.ID = CP.STORE_ID AND CP.PRODUCT_ID IN " . $productID . ")"), "ELEMENT_ID" => array("FIELD" => "CP.PRODUCT_ID", "TYPE" => "int"));
     $userField = new CUserTypeSQL();
     $userField->SetEntity("CAT_STORE", "CS.ID");
     $userField->SetSelect($arSelectFields);
     $userField->SetFilter($arFilter);
     $userField->SetOrder($arOrder);
     $strUfFilter = $userField->GetFilter();
     $strSqlUfFilter = strlen($strUfFilter) > 0 ? " (" . $strUfFilter . ") " : "";
     $strSqlUfOrder = "";
     foreach ($arOrder as $field => $by) {
         $field = $userField->GetOrder($field);
         if (empty($field)) {
             continue;
         }
         if (strlen($strSqlUfOrder) > 0) {
             $strSqlUfOrder .= ', ';
         }
         $strSqlUfOrder .= $field . " " . $by;
     }
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . $userField->GetSelect() . " FROM b_catalog_store CS " . $arSqls["FROM"] . " " . $userField->GetJoin("CS.ID");
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUfFilter) > 0) {
             $strSql .= " AND " . $strSqlUfFilter . " ";
         } elseif (strlen($arSqls["WHERE"]) == 0 && strlen($strSqlUfFilter) > 0) {
             $strSql .= " WHERE " . $strSqlUfFilter . " ";
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . $userField->GetSelect() . " FROM b_catalog_store CS " . $arSqls["FROM"] . " " . $userField->GetJoin("CS.ID");
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUfFilter) > 0) {
         $strSql .= " AND " . $strSqlUfFilter . " ";
     } elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUfFilter) > 0) {
         $strSql .= " WHERE " . $strSqlUfFilter . " ";
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     } elseif (strlen($arSqls["ORDERBY"]) <= 0 && strlen($strSqlUfOrder) > 0) {
         $strSql .= " ORDER BY " . $strSqlUfOrder;
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_store CS " . $arSqls["FROM"] . " " . $userField->GetJoin("CS.ID");
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUfFilter) > 0) {
             $strSql_tmp .= " AND " . $strSqlUfFilter . " ";
         } elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUfFilter) > 0) {
             $strSql_tmp .= " WHERE " . $strSqlUfFilter . " ";
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             } else {
                 $cnt = $dbRes->SelectedRowsCount();
             }
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #11
0
 function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     // For old-style execution
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         if (is_array($arGroupBy)) {
             $arFilter = $arGroupBy;
         } else {
             $arFilter = array();
         }
         $arGroupBy = false;
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "I.ID", "TYPE" => "int"), "IBLOCK_ID" => array("FIELD" => "CI.IBLOCK_ID", "TYPE" => "int"), "YANDEX_EXPORT" => array("FIELD" => "CI.YANDEX_EXPORT", "TYPE" => "char"), "SUBSCRIPTION" => array("FIELD" => "CI.SUBSCRIPTION", "TYPE" => "char"), "PRODUCT_IBLOCK_ID" => array("FIELD" => "CI.PRODUCT_IBLOCK_ID", "TYPE" => "int"), "SKU_PROPERTY_ID" => array("FIELD" => "CI.SKU_PROPERTY_ID", "TYPE" => "int"), "OFFERS_PROPERTY_ID" => array("FIELD" => "OFFERS.SKU_PROPERTY_ID", "TYPE" => "int"), "OFFERS_IBLOCK_ID" => array("FIELD" => "OFFERS.IBLOCK_ID", "TYPE" => "int"), "IBLOCK_TYPE_ID" => array("FIELD" => "I.IBLOCK_TYPE_ID", "TYPE" => "string"), "IBLOCK_ACTIVE" => array("FIELD" => "I.ACTIVE", "TYPE" => "char"), "LID" => array("FIELD" => "I.LID", "TYPE" => "string"), "NAME" => array("FIELD" => "I.NAME", "TYPE" => "string"));
     // <-- FIELDS
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_iblock CI\n\t\t\t\tINNER JOIN b_iblock I ON CI.IBLOCK_ID = I.ID\n\t\t\t\tLEFT JOIN b_catalog_iblock OFFERS ON CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID" . " " . $arSqls["FROM"] . " " . "WHERE 1=1 ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "AND " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_iblock CI\n\t\t\tINNER JOIN b_iblock I ON CI.IBLOCK_ID = I.ID\n\t\t\tLEFT JOIN b_catalog_iblock OFFERS ON CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID" . " " . $arSqls["FROM"] . " " . "WHERE 1=1 ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "AND " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_iblock CI\n\t\t\t\tINNER JOIN b_iblock I ON CI.IBLOCK_ID = I.ID\n\t\t\t\tLEFT JOIN b_catalog_iblock OFFERS ON CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID" . " " . $arSqls["FROM"] . " " . "WHERE 1=1 ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "AND " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
 static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "PRODUCT_ID", "STORE_ID", "BARCODE", "ORDER_ID");
     }
     $arFields = array("ID" => array("FIELD" => "CB.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "CB.PRODUCT_ID", "TYPE" => "int"), "STORE_ID" => array("FIELD" => "CB.STORE_ID", "TYPE" => "int"), "BARCODE" => array("FIELD" => "CB.BARCODE", "TYPE" => "string"), "ORDER_ID" => array("FIELD" => "CB.ORDER_ID", "TYPE" => "int"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_store_barcode CB " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_store_barcode CB " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_store_barcode CB " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #13
0
 protected function __GetDiscountID($arFilter)
 {
     global $DB;
     $arResult = array();
     $arFields = array("DISCOUNT_ID" => array("FIELD" => "DC.DISCOUNT_ID", "TYPE" => "int"), "USER_GROUP_ID" => array("FIELD" => "DC.USER_GROUP_ID", "TYPE" => "int"), "PRICE_TYPE_ID" => array("FIELD" => "DC.PRICE_TYPE_ID", "TYPE" => "int"));
     if (!isset($arFilter['USER_GROUP_ID'])) {
         $arFilter['USER_GROUP_ID'] = array();
     } elseif (!is_array($arFilter['USER_GROUP_ID'])) {
         $arFilter['USER_GROUP_ID'] = array($arFilter['USER_GROUP_ID']);
     }
     $arFilter['USER_GROUP_ID'][] = -1;
     if (!isset($arFilter['PRICE_TYPE_ID'])) {
         $arFilter['PRICE_TYPE_ID'] = array();
     } elseif (!is_array($arFilter['PRICE_TYPE_ID'])) {
         $arFilter['PRICE_TYPE_ID'] = array($arFilter['PRICE_TYPE_ID']);
     }
     $arFilter['PRICE_TYPE_ID'][] = -1;
     if (array_key_exists('DISCOUNT_ID', $arFilter)) {
         unset($arFilter['DISCOUNT_ID']);
     }
     $arSelectFields = array('DISCOUNT_ID');
     $arSqls = CCatalog::PrepareSql($arFields, array(), $arFilter, false, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     $strQuery = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_discount_cond DC WHERE " . $arSqls["WHERE"];
     $rsDiscounts = $DB->Query($strQuery, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     while ($arDiscount = $rsDiscounts->Fetch()) {
         $arResult[] = intval($arDiscount['DISCOUNT_ID']);
     }
     return $arResult;
 }
Example #14
0
 /**
  * @param array $arOrder
  * @param array $arFilter
  * @param bool|array $arGroupBy
  * @param bool|array $arNavStartParams
  * @param array $arSelectFields
  * @return bool|CDBResult
  */
 function GetListEx($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "PRODUCT_ID", "EXTRA_ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "TIMESTAMP_X", "QUANTITY_FROM", "QUANTITY_TO", "TMP_ID");
     }
     $arFields = array("ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "P.PRODUCT_ID", "TYPE" => "int"), "EXTRA_ID" => array("FIELD" => "P.EXTRA_ID", "TYPE" => "int"), "CATALOG_GROUP_ID" => array("FIELD" => "P.CATALOG_GROUP_ID", "TYPE" => "int"), "PRICE" => array("FIELD" => "P.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "P.CURRENCY", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "P.TIMESTAMP_X", "TYPE" => "datetime"), "QUANTITY_FROM" => array("FIELD" => "P.QUANTITY_FROM", "TYPE" => "int"), "QUANTITY_TO" => array("FIELD" => "P.QUANTITY_TO", "TYPE" => "int"), "TMP_ID" => array("FIELD" => "P.TMP_ID", "TYPE" => "string"), "PRICE_BASE_RATE" => array("FIELD" => "P.PRICE*CC.CURRENT_BASE_RATE", "TYPE" => "double", "FROM" => "LEFT JOIN b_catalog_currency CC ON (P.CURRENCY = CC.CURRENCY)"), "PRODUCT_QUANTITY" => array("FIELD" => "CP.QUANTITY", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "PRODUCT_QUANTITY_TRACE" => array("FIELD" => "IF (CP.QUANTITY_TRACE = 'D', '" . $DB->ForSql((string) Option::get('catalog', 'default_quantity_trace', 'N')) . "', CP.QUANTITY_TRACE)", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "PRODUCT_CAN_BUY_ZERO" => array("FIELD" => "IF (CP.CAN_BUY_ZERO = 'D', '" . $DB->ForSql((string) Option::get('catalog', 'default_can_buy_zero', 'N')) . "', CP.CAN_BUY_ZERO)", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "PRODUCT_NEGATIVE_AMOUNT_TRACE" => array("FIELD" => "IF (CP.NEGATIVE_AMOUNT_TRACE = 'D', '" . $DB->ForSql((string) Option::get('catalog', 'allow_negative_amount', 'N')) . "', CP.NEGATIVE_AMOUNT_TRACE)", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "PRODUCT_WEIGHT" => array("FIELD" => "CP.WEIGHT", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "ELEMENT_IBLOCK_ID" => array("FIELD" => "IE.IBLOCK_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock_element IE ON (P.PRODUCT_ID = IE.ID)"), "ELEMENT_NAME" => array("FIELD" => "IE.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element IE ON (P.PRODUCT_ID = IE.ID)"), "CATALOG_GROUP_CODE" => array("FIELD" => "CG.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_catalog_group CG ON (P.CATALOG_GROUP_ID = CG.ID)"), "CATALOG_GROUP_BASE" => array("FIELD" => "CG.BASE", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_group CG ON (P.CATALOG_GROUP_ID = CG.ID)"), "CATALOG_GROUP_SORT" => array("FIELD" => "CG.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_group CG ON (P.CATALOG_GROUP_ID = CG.ID)"), "CATALOG_GROUP_NAME" => array("FIELD" => "CGL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_catalog_group_lang CGL ON (P.CATALOG_GROUP_ID = CGL.CATALOG_GROUP_ID AND CGL.LANG = '" . LANGUAGE_ID . "')"), "GROUP_GROUP_ID" => array("FIELD" => "CGG.GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_group2group CGG ON (P.CATALOG_GROUP_ID = CGG.CATALOG_GROUP_ID)"), "GROUP_BUY" => array("FIELD" => "CGG.BUY", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_group2group CGG ON (P.CATALOG_GROUP_ID = CGG.CATALOG_GROUP_ID)"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_price P " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_price P " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && isset($arNavStartParams['nTopCount'])) {
         $intTopCount = (int) $arNavStartParams["nTopCount"];
     }
     if ($boolNavStartParams && $intTopCount <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_price P " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && $intTopCount > 0) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #15
0
 public static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "PRODUCT_ID", "RATIO");
     }
     $arFields = array("ID" => array("FIELD" => "MR.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "MR.PRODUCT_ID", "TYPE" => "int"), "RATIO" => array("FIELD" => "MR.RATIO", "TYPE" => "double"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "select " . $arSqls["SELECT"] . " from b_catalog_measure_ratio MR " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " where " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " group by " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "select " . $arSqls["SELECT"] . " from b_catalog_measure_ratio MR " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " where " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " group by " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " order by " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && isset($arNavStartParams['nTopCount'])) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "select COUNT('x') as CNT FROM b_catalog_measure_ratio MR " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " where " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " group by " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " limit " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #16
0
 public function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelect = array())
 {
     global $DB;
     $arFields = array('ID' => array('FIELD' => 'CPS.ID', 'TYPE' => 'int'), 'TYPE' => array('FIELD' => 'CPS.TYPE', 'TYPE' => 'int'), 'SET_ID' => array('FIELD' => 'CPS.SET_ID', 'TYPE' => 'int'), 'ACTIVE' => array('FIELD' => 'CPS.ACTIVE', 'TYPE' => 'char'), 'OWNER_ID' => array('FIELD' => 'CPS.OWNER_ID', 'TYPE' => 'int'), 'ITEM_ID' => array('FIELD' => 'CPS.ITEM_ID', 'TYPE' => 'int'), 'QUANTITY' => array('FIELD' => 'CPS.QUANTITY', 'TYPE' => 'double'), 'MEASURE' => array('FIELD' => 'CPS.MEASURE', 'TYPE' => 'int'), 'DISCOUNT_PERCENT' => array('FIELD' => 'CPS.DISCOUNT_PERCENT', 'TYPE' => 'double'), 'SORT' => array('FIELD' => 'CPS.SORT', 'TYPE' => 'int'), 'CREATED_BY' => array('FIELD' => 'CPS.CREATED_BY', 'TYPE' => 'int'), 'DATE_CREATE' => array('FIELD' => 'CPS.DATE_CREATE', 'TYPE' => 'datetime'), 'MODIFIED_BY' => array('FIELD' => 'CPS.MODIFIED_BY', 'TYPE' => 'int'), 'TIMESTAMP_X' => array('FIELD' => 'CPS.TIMESTAMP_X', 'TYPE' => 'datetime'), 'XML_ID' => array('FIELD' => 'CPS.XML_ID', 'TYPE' => 'string'));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelect);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "select " . $arSqls["SELECT"] . " from b_catalog_product_sets CPS " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " where " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " group by " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "select " . $arSqls["SELECT"] . " from b_catalog_product_sets CPS " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " where " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " group by " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " order by " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && isset($arNavStartParams['nTopCount'])) {
         $intTopCount = (int) $arNavStartParams["nTopCount"];
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "select COUNT('x') as CNT from b_catalog_product_sets CPS " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " where " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " group by " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " limit " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__);
     }
     return $dbRes;
 }
Example #17
0
 public static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "PERSON_TYPE", "PERSON_NAME", "PERSON_LASTNAME", "PERSON_MIDDLENAME", "EMAIL", "PHONE", "POST_INDEX", "COUNTRY", "CITY", "COMPANY", "ADDRESS", "INN", "KPP");
     }
     $arFields = array("ID" => array("FIELD" => "CC.ID", "TYPE" => "int"), "PERSON_TYPE" => array("FIELD" => "CC.PERSON_TYPE", "TYPE" => "char"), "PERSON_NAME" => array("FIELD" => "CC.PERSON_NAME", "TYPE" => "string"), "PERSON_LASTNAME" => array("FIELD" => "CC.PERSON_LASTNAME", "TYPE" => "string"), "PERSON_MIDDLENAME" => array("FIELD" => "CC.PERSON_MIDDLENAME", "TYPE" => "string"), "EMAIL" => array("FIELD" => "CC.EMAIL", "TYPE" => "string"), "PHONE" => array("FIELD" => "CC.PHONE", "TYPE" => "string"), "POST_INDEX" => array("FIELD" => "CC.POST_INDEX", "TYPE" => "string"), "COUNTRY" => array("FIELD" => "CC.COUNTRY", "TYPE" => "string"), "CITY" => array("FIELD" => "CC.CITY", "TYPE" => "string"), "COMPANY" => array("FIELD" => "CC.COMPANY", "TYPE" => "string"), "ADDRESS" => array("FIELD" => "CC.ADDRESS", "TYPE" => "string"), "INN" => array("FIELD" => "CC.INN", "TYPE" => "string"), "KPP" => array("FIELD" => "CC.KPP", "TYPE" => "string"), "DATE_CREATE" => array("FIELD" => "CC.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CC.DATE_MODIFY", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "CC.CREATED_BY", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CC.MODIFIED_BY", "TYPE" => "int"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_contractor CC " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_contractor CC " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_contractor CC " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #18
0
 public function GetUserInfoByDiscount($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "DSU.ID", "TYPE" => "int"), "DISCOUNT_ID" => array("FIELD" => "DSU.DISCOUNT_ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "DSU.USER_ID", "TYPE" => "int"), "ACTIVE_FROM" => array("FIELD" => "DSU.ACTIVE_FROM", "TYPE" => "datetime"), "ACTIVE_TO" => array("FIELD" => "DSU.ACTIVE_TO", "TYPE" => "datetime"), "RANGE_FROM" => array("FIELD" => "DSU.RANGE_FROM", "TYPE" => "double"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && empty($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_disc_save_user DSU " . "\t" . $arSqls["FROM"] . " ";
         if (!empty($arSqls["WHERE"])) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_disc_save_user DSU " . "\t" . $arSqls["FROM"] . " ";
     if (!empty($arSqls["WHERE"])) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_disc_save_user DSU " . "\t" . $arSqls["FROM"] . " ";
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #19
0
 public static function GetListEx($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array('ID', 'TIMESTAMP_X', 'ACTIVE', 'C_SORT', 'NAME', 'RATE');
     }
     $arFields = array('ID' => array("FIELD" => "CV.ID", "TYPE" => "int"), 'TIMESTAMP_X' => array("FIELD" => "CV.TIMESTAMP_X", "TYPE" => "datetime"), 'ACTIVE' => array("FIELD" => "CV.ACTIVE", "TYPE" => "char"), 'C_SORT' => array("FIELD" => "CV.C_SORT", "TYPE" => "int"), 'SORT' => array("FIELD" => "CV.C_SORT", "TYPE" => "int"), 'NAME' => array("FIELD" => "CV.NAME", "TYPE" => "string"), 'RATE' => array("FIELD" => "CV.RATE", "TYPE" => "double"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_vat CV " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_vat CV " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_vat CV " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #20
0
 function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = (string) $arOrder;
         $arFilter = (string) $arFilter;
         $arOrder = $arOrder != '' && $arFilter != '' ? array($arOrder => $arFilter) : array();
         $arFilter = is_array($arGroupBy) ? $arGroupBy : array();
         $arGroupBy = false;
     }
     $defaultQuantityTrace = (string) Option::get('catalog', 'default_quantity_trace') == 'Y' ? 'Y' : 'N';
     $defaultCanBuyZero = (string) Option::get('catalog', 'default_can_buy_zero') == 'Y' ? 'Y' : 'N';
     $defaultNegativeAmount = (string) Option::get('catalog', 'allow_negative_amount') == 'Y' ? 'Y' : 'N';
     $defaultSubscribe = (string) Option::get('catalog', 'default_subscribe') == 'N' ? 'N' : 'Y';
     $arFields = array("ID" => array("FIELD" => "CP.ID", "TYPE" => "int"), "QUANTITY" => array("FIELD" => "CP.QUANTITY", "TYPE" => "double"), "QUANTITY_RESERVED" => array("FIELD" => "CP.QUANTITY_RESERVED", "TYPE" => "double"), "QUANTITY_TRACE_ORIG" => array("FIELD" => "CP.QUANTITY_TRACE", "TYPE" => "char"), "CAN_BUY_ZERO_ORIG" => array("FIELD" => "CP.CAN_BUY_ZERO", "TYPE" => "char"), "NEGATIVE_AMOUNT_TRACE_ORIG" => array("FIELD" => "CP.NEGATIVE_AMOUNT_TRACE", "TYPE" => "char"), "QUANTITY_TRACE" => array("FIELD" => "IF (CP.QUANTITY_TRACE = 'D', '" . $defaultQuantityTrace . "', CP.QUANTITY_TRACE)", "TYPE" => "char"), "CAN_BUY_ZERO" => array("FIELD" => "IF (CP.CAN_BUY_ZERO = 'D', '" . $defaultCanBuyZero . "', CP.CAN_BUY_ZERO)", "TYPE" => "char"), "NEGATIVE_AMOUNT_TRACE" => array("FIELD" => "IF (CP.NEGATIVE_AMOUNT_TRACE = 'D', '" . $defaultNegativeAmount . "', CP.NEGATIVE_AMOUNT_TRACE)", "TYPE" => "char"), "SUBSCRIBE_ORIG" => array("FIELD" => "CP.SUBSCRIBE", "TYPE" => "char"), "SUBSCRIBE" => array("FIELD" => "IF (CP.SUBSCRIBE = 'D', '" . $defaultSubscribe . "', CP.SUBSCRIBE)", "TYPE" => "char"), "AVAILABLE" => array("FIELD" => "IF (\n\t\t\t\tCP.QUANTITY <= 0 AND\n\t\t\t\tIF (CP.QUANTITY_TRACE = 'D', '" . $defaultQuantityTrace . "', CP.QUANTITY_TRACE) = 'Y' AND\n\t\t\t\tIF (CP.CAN_BUY_ZERO = 'D', '" . $defaultCanBuyZero . "', CP.CAN_BUY_ZERO) = 'N',\n\t\t\t\t'N', 'Y'\n\t\t\t)", "TYPE" => "char"), "WEIGHT" => array("FIELD" => "CP.WEIGHT", "TYPE" => "double"), "WIDTH" => array("FIELD" => "CP.WIDTH", "TYPE" => "double"), "LENGTH" => array("FIELD" => "CP.LENGTH", "TYPE" => "double"), "HEIGHT" => array("FIELD" => "CP.HEIGHT", "TYPE" => "double"), "TIMESTAMP_X" => array("FIELD" => "CP.TIMESTAMP_X", "TYPE" => "datetime"), "PRICE_TYPE" => array("FIELD" => "CP.PRICE_TYPE", "TYPE" => "char"), "RECUR_SCHEME_TYPE" => array("FIELD" => "CP.RECUR_SCHEME_TYPE", "TYPE" => "char"), "RECUR_SCHEME_LENGTH" => array("FIELD" => "CP.RECUR_SCHEME_LENGTH", "TYPE" => "int"), "TRIAL_PRICE_ID" => array("FIELD" => "CP.TRIAL_PRICE_ID", "TYPE" => "int"), "WITHOUT_ORDER" => array("FIELD" => "CP.WITHOUT_ORDER", "TYPE" => "char"), "SELECT_BEST_PRICE" => array("FIELD" => "CP.SELECT_BEST_PRICE", "TYPE" => "char"), "VAT_ID" => array("FIELD" => "CP.VAT_ID", "TYPE" => "int"), "VAT_INCLUDED" => array("FIELD" => "CP.VAT_INCLUDED", "TYPE" => "char"), "TMP_ID" => array("FIELD" => "CP.TMP_ID", "TYPE" => "char"), "PURCHASING_PRICE" => array("FIELD" => "CP.PURCHASING_PRICE", "TYPE" => "double"), "PURCHASING_CURRENCY" => array("FIELD" => "CP.PURCHASING_CURRENCY", "TYPE" => "string"), "BARCODE_MULTI" => array("FIELD" => "CP.BARCODE_MULTI", "TYPE" => "char"), "MEASURE" => array("FIELD" => "CP.MEASURE", "TYPE" => "int"), "TYPE" => array("FIELD" => "CP.TYPE", "TYPE" => "int"), "ELEMENT_IBLOCK_ID" => array("FIELD" => "I.IBLOCK_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"), "ELEMENT_XML_ID" => array("FIELD" => "I.XML_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"), "ELEMENT_NAME" => array("FIELD" => "I.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_product CP " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_product CP " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_product CP " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #21
0
 /**
  * <p>Функция возвращает результат выборки записей из таблицы складов в соответствии со своими параметрами.</p>
  *
  *
  *
  *
  * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле, а в качестве
  * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
  * возрастанию) и "<i>DESC</i>" (по убыванию). <br><br> Если массив сортировки
  * имеет несколько элементов, то результирующий набор сортируется
  * последовательно по каждому элементу (т.е. сначала сортируется по
  * первому элементу, потом результат сортируется по второму и т.д.). 
  * <br><br> Значение по умолчанию - пустой массив array() - означает, что
  * результат отсортирован не будет.
  *
  *
  *
  * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи. Массив имеет
  * вид: <pre class="syntax">array( "[модификатор1][оператор1]название_поля1" =&gt;
  * "значение1", "[модификатор2][оператор2]название_поля2" =&gt; "значение2",
  * . . . )</pre> Удовлетворяющие фильтру записи возвращаются в
  * результате, а записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются. <br><br> Допустимыми являются следующие
  * модификаторы: <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и
  * пустая строка так же удовлетворяют условиям фильтра.</li> </ul>
  * Допустимыми являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение
  * поля больше или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b>
  * - значение поля строго больше передаваемой в фильтр величины;</li>
  * <li> <b>&lt;=</b> - значение поля меньше или равно передаваемой в фильтр
  * величины;</li> <li> <b>&lt;</b> - значение поля строго меньше передаваемой
  * в фильтр величины;</li> <li> <b>@</b> - оператор может использоваться для
  * целочисленных и вещественных данных при передаче набора
  * значений (массива). В этом случае при генерации sql-запроса будет
  * использован sql-оператор <b>IN</b>, дающий компактную форму записи;</li>
  * <li> <b>~</b> - значение поля проверяется на соответствие
  * передаваемому в фильтр шаблону;</li> <li> <b>%</b> - значение поля
  * проверяется на соответствие передаваемой в фильтр строке в
  * соответствии с языком запросов.</li> </ul> В качестве "название_поляX"
  * может стоять любое поле. <br><br> Пример фильтра: <pre class="syntax">array("ACTIVE"
  * =&gt; "Y")</pre> Этот фильтр означает "выбрать все записи, в которых
  * значение в поле ACTIVE (флаг "Активность склада") равно Y". <br><br>
  * Значение по умолчанию - пустой массив array() - означает, что
  * результат отфильтрован не будет.
  *
  *
  *
  * @param array $arGroupBy = false Массив полей, по которым группируются записи. Массив имеет вид: <pre
  * class="syntax">array("название_поля1", "название_поля2", . . .)</pre> В качестве
  * "название_поля<i>N</i>" может стоять любое поле. <br><br> Если массив
  * пустой, то функция вернет число записей, удовлетворяющих фильтру.
  * <br><br> Значение по умолчанию - <i>false</i> - означает, что результат
  * группироваться не будет.
  *
  *
  *
  * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
  * ограничено сверху значением этого ключа;</li> <li>любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  *
  *
  * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные поля.
  * <br><br> Значение по умолчанию - пустой массив array() - означает, что
  * будут возвращены все поля основной таблицы запроса.
  *
  *
  *
  * @return mixed <p>Возвращает объект класса <a
  * href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a>, содержащий
  * коллекцию ассоциативных массивов с ключами.</p><br><br>
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogstore/getlist.php
  * @author Bitrix
  */
 static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "ACTIVE", "TITLE", "PHONE", "SCHEDULE", "ADDRESS", "DESCRIPTION", "GPS_N", "GPS_S", "IMAGE_ID", "DATE_CREATE", "DATE_MODIFY", "USER_ID", "XML_ID");
     }
     if (!isset($arFilter["PRODUCT_ID"]) && isset($arSelectFields["PRODUCT_AMOUNT"])) {
         unset($arSelectFields["PRODUCT_AMOUNT"]);
     }
     $productID = intval($arFilter["PRODUCT_ID"]);
     $arFields = array("ID" => array("FIELD" => "CS.ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "CS.ACTIVE", "TYPE" => "string"), "TITLE" => array("FIELD" => "CS.TITLE", "TYPE" => "string"), "PHONE" => array("FIELD" => "CS.PHONE", "TYPE" => "string"), "SCHEDULE" => array("FIELD" => "CS.SCHEDULE", "TYPE" => "string"), "ADDRESS" => array("FIELD" => "CS.ADDRESS", "TYPE" => "string"), "DESCRIPTION" => array("FIELD" => "CS.DESCRIPTION", "TYPE" => "string"), "GPS_N" => array("FIELD" => "CS.GPS_N", "TYPE" => "string"), "GPS_S" => array("FIELD" => "CS.GPS_S", "TYPE" => "string"), "IMAGE_ID" => array("FIELD" => "CS.IMAGE_ID", "TYPE" => "int"), "LOCATION_ID" => array("FIELD" => "CS.LOCATION_ID", "TYPE" => "int"), "DATE_CREATE" => array("FIELD" => "CS.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CS.DATE_MODIFY", "TYPE" => "datetime"), "USER_ID" => array("FIELD" => "CS.USER_ID", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CS.MODIFIED_BY", "TYPE" => "int"), "XML_ID" => array("FIELD" => "CS.XML_ID", "TYPE" => "string"), 'PRODUCT_AMOUNT' => array("FIELD" => "CP.AMOUNT", "TYPE" => "double", "FROM" => "LEFT JOIN b_catalog_store_product CP ON (CS.ID = CP.STORE_ID AND CP.PRODUCT_ID={$productID})"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_store CS " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_store CS " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_store CS " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #22
0
 function GetLangList($arFilter = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "CGL.ID", "TYPE" => "int"), "CATALOG_GROUP_ID" => array("FIELD" => "CGL.CATALOG_GROUP_ID", "TYPE" => "int"), "LID" => array("FIELD" => "CGL.LANG", "TYPE" => "string"), "LANG" => array("FIELD" => "CGL.LANG", "TYPE" => "string"), "NAME" => array("FIELD" => "CGL.NAME", "TYPE" => "string"));
     $arSqls = CCatalog::PrepareSql($arFields, array(), $arFilter, false, false);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_group_lang CGL " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     return $dbRes;
 }
Example #23
0
	/**
	 * <p>Функция возвращает результат выборки записей из каталога в соответствии со своими параметрами.</p>
	 *
	 *
	 *
	 *
	 * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
	 * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
	 * "направление_сортировки1", "название_поля2" =&gt;
	 * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
	 * может стоять любое поле каталога, а в качестве
	 * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
	 * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
	 * имеет несколько элементов, то результирующий набор сортируется
	 * последовательно по каждому элементу (т.е. сначала сортируется по
	 * первому элементу, потом результат сортируется по второму и
	 * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает,
	 * что результат отсортирован не будет.
	 *
	 *
	 *
	 * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи каталога.
	 * Массив имеет вид: <pre class="syntax">array(
	 * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
	 * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
	 * Удовлетворяющие фильтру записи возвращаются в результате, а
	 * записи, которые не удовлетворяют условиям фильтра,
	 * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
	 * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
	 * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
	 * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
	 * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
	 * поля строго больше передаваемой в фильтр величины;</li> <li> <b>&lt;=</b> -
	 * значение поля меньше или равно передаваемой в фильтр величины;</li>
	 * <li> <b>&lt;</b> - значение поля строго меньше передаваемой в фильтр
	 * величины;</li> <li> <b>@</b> - оператор может использоваться для
	 * целочисленных и вещественных данных при передаче набора
	 * значений (массива). В этом случае при генерации sql-запроса будет
	 * использован sql-оператор <b>IN</b>, дающий компактную форму записи;</li>
	 * <li> <b>~</b> - значение поля проверяется на соответствие
	 * передаваемому в фильтр шаблону;</li> <li> <b>%</b> - значение поля
	 * проверяется на соответствие передаваемой в фильтр строке в
	 * соответствии с языком запросов.</li> </ul> В качестве "название_поляX"
	 * может стоять любое поле каталога.<br><br> Пример фильтра: <pre
	 * class="syntax">array("SUBSCRIPTION" =&gt; "Y")</pre> Этот фильтр означает "выбрать все
	 * записи, в которых значение в поле SUBSCRIPTION (флаг "Продажа контента")
	 * равно Y".<br><br> Значение по умолчанию - пустой массив array() - означает,
	 * что результат отфильтрован не будет.
	 *
	 *
	 *
	 * @param array $arGroupBy = false Массив полей, по которым группируются записи каталога. Массив
	 * имеет вид: <pre class="syntax">array("название_поля1", "название_поля2", . . .)</pre> В
	 * качестве "название_поля<i>N</i>" может стоять любое поле каталога. <br>
	 * Если массив пустой, то функция вернет число записей,
	 * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> -
	 * означает, что результат группироваться не будет.
	 *
	 *
	 *
	 * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
	 * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
	 * ограничено сверху значением этого ключа;</li> <li> любой ключ,
	 * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
	 * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
	 * параметров выборки нет.
	 *
	 *
	 *
	 * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
	 * указать только те поля, которые необходимы. Если в массиве
	 * присутствует значение "*", то будут возвращены все доступные
	 * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
	 * что будут возвращены все поля основной таблицы запроса.
	 *
	 *
	 *
	 * @return CDBResult <p>Возвращает объект класса CDBResult, содержащий коллекцию
	 * ассоциативных массивов с ключами:</p><table class="tnormal" width="100%"> <tr> <th
	 * width="15%">Ключ</th> <th>Описание</th> </tr> <tr> <td>ID</td> <td>Код каталога.
	 * Совпадает с кодом информационного блока.</td> </tr> <tr> <td>IBLOCK_ID</td>
	 * <td>Код информационного блока.</td> </tr> <tr> <td>IBLOCK_TYPE_ID</td> <td>Тип
	 * информационного блока.</td> </tr> <tr> <td>SUBSCRIPTION</td> <td>Флаг "Продажа
	 * контента".</td> </tr> <tr> <td>NAME</td> <td>Название информационного блока.</td>
	 * </tr> <tr> <td>YANDEX_EXPORT</td> <td>флаг "экспортировать в Яндекс.Товары"</td> </tr>
	 * </table><p>Если в качестве параметра arGroupBy передается пустой массив,
	 * то функция вернет число записей, удовлетворяющих фильтру.</p><br><br>
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalog/ccatalog__getlist.d4805440.php
	 * @author Bitrix
	 */
	public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
	{
		global $DB;

		// For old-style execution
		if (!is_array($arOrder) && !is_array($arFilter))
		{
			$arOrder = strval($arOrder);
			$arFilter = strval($arFilter);
			if ('' != $arOrder && '' != $arFilter)
				$arOrder = array($arOrder => $arFilter);
			else
				$arOrder = array();
			if (is_array($arGroupBy))
				$arFilter = $arGroupBy;
			else
				$arFilter = array();
			$arGroupBy = false;
		}

		$arFields = array(
			"IBLOCK_ID" => array("FIELD" => "CI.IBLOCK_ID", "TYPE" => "int"),
			"YANDEX_EXPORT" => array("FIELD" => "CI.YANDEX_EXPORT", "TYPE" => "char"),
			"SUBSCRIPTION" => array("FIELD" => "CI.SUBSCRIPTION", "TYPE" => "char"),
			"VAT_ID" => array("FIELD" => "CI.VAT_ID", "TYPE" => "int"),
			"PRODUCT_IBLOCK_ID" => array("FIELD" => "CI.PRODUCT_IBLOCK_ID", "TYPE" => "int"),
			"SKU_PROPERTY_ID" => array("FIELD" => "CI.SKU_PROPERTY_ID", "TYPE" => "int"),
			"OFFERS_PROPERTY_ID" => array("FIELD" => "OFFERS.SKU_PROPERTY_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_catalog_iblock OFFERS ON (CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID)"),
			"OFFERS_IBLOCK_ID" => array("FIELD" => "OFFERS.IBLOCK_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_catalog_iblock OFFERS ON (CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID)"),
			"ID" => array("FIELD" => "I.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)"),
			"IBLOCK_TYPE_ID" => array("FIELD" => "I.IBLOCK_TYPE_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)"),
			"IBLOCK_ACTIVE" => array("FIELD" => "I.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)"),
			"LID" => array("FIELD" => "I.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)"),
			"NAME" => array("FIELD" => "I.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)")
		);

		$arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);

		$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);

		if (empty($arGroupBy) && is_array($arGroupBy))
		{
			$strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_iblock CI ".$arSqls["FROM"];
			if (!empty($arSqls["WHERE"]))
				$strSql .= " WHERE ".$arSqls["WHERE"];
			if (!empty($arSqls["GROUPBY"]))
				$strSql .= " GROUP BY ".$arSqls["GROUPBY"];

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			if ($arRes = $dbRes->Fetch())
				return $arRes["CNT"];
			else
				return False;
		}

		$strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_iblock CI ".$arSqls["FROM"];
		if (!empty($arSqls["WHERE"]))
			$strSql .= " WHERE ".$arSqls["WHERE"];
		if (!empty($arSqls["GROUPBY"]))
			$strSql .= " GROUP BY ".$arSqls["GROUPBY"];
		if (!empty($arSqls["ORDERBY"]))
			$strSql .= " ORDER BY ".$arSqls["ORDERBY"];

		$intTopCount = 0;
		$boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams));
		if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams))
		{
			$intTopCount = intval($arNavStartParams["nTopCount"]);
		}
		if ($boolNavStartParams && 0 >= $intTopCount)
		{
			$strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_iblock CI ".$arSqls["FROM"];
			if (!empty($arSqls["WHERE"]))
				$strSql_tmp .= " WHERE ".$arSqls["WHERE"];
			if (!empty($arSqls["GROUPBY"]))
				$strSql_tmp .= " GROUP BY ".$arSqls["GROUPBY"];

			$dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			$cnt = 0;
			if (empty($arSqls["GROUPBY"]))
			{
				if ($arRes = $dbRes->Fetch())
					$cnt = $arRes["CNT"];
			}
			else
			{
				$cnt = $dbRes->SelectedRowsCount();
			}

			$dbRes = new CDBResult();

			$dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
		}
		else
		{
			if ($boolNavStartParams && 0 < $intTopCount)
			{
				$strSql .= " LIMIT ".$intTopCount;
			}
			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
		}

		return $dbRes;
	}
Example #24
0
	/**
	 * <p>Функция возвращает результат выборки записей товаров в соответствии со своими параметрами. </p>
	 *
	 *
	 *
	 *
	 * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
	 * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
	 * "направление_сортировки1", "название_поля2" =&gt;
	 * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
	 * может стоять любое поле товара, а в качестве
	 * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
	 * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
	 * имеет несколько элементов, то результирующий набор сортируется
	 * последовательно по каждому элементу (т.е. сначала сортируется по
	 * первому элементу, потом результат сортируется по второму и
	 * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает,
	 * что результат отсортирован не будет.
	 *
	 *
	 *
	 * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи товара.
	 * Массив имеет вид: <pre class="syntax">array(
	 * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
	 * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
	 * Удовлетворяющие фильтру записи возвращаются в результате, а
	 * записи, которые не удовлетворяют условиям фильтра,
	 * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
	 * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
	 * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
	 * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
	 * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
	 * поля строго больше передаваемой в фильтр величины;</li> <li><b> -
	 * значение поля меньше или равно передаваемой в фильтр
	 * величины;</b></li> <li><b> - значение поля строго меньше передаваемой в
	 * фильтр величины;</b></li> <li> <b>@</b> - значение поля находится в
	 * передаваемом в фильтр разделенном запятой списке значений;</li> <li>
	 * <b>~</b> - значение поля проверяется на соответствие передаваемому в
	 * фильтр шаблону;</li> <li> <b>%</b> - значение поля проверяется на
	 * соответствие передаваемой в фильтр строке в соответствии с
	 * языком запросов.</li> </ul> В качестве "название_поляX" может стоять
	 * любое поле товара.<br><br> Пример фильтра: <pre class="syntax">array("SUBSCRIPTION" =&gt;
	 * "Y")</pre> Этот фильтр означает "выбрать все записи, в которых
	 * значение в поле SUBSCRIPTION (флаг "Продажа контента") равно Y".<br><br>
	 * Значение по умолчанию - пустой массив array() - означает, что
	 * результат отфильтрован не будет.
	 *
	 *
	 *
	 * @param array $arGroupBy = false Массив полей, по которым группируются записи типов товара. Массив
	 * имеет вид: <pre class="syntax">array("название_поля1", "название_поля2", . . .)</pre> В
	 * качестве "название_поля<i>N</i>" может стоять любое поле типов
	 * товара. <br><br> Если массив пустой, то функция вернет число записей,
	 * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> -
	 * означает, что результат группироваться не будет.
	 *
	 *
	 *
	 * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
	 * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
	 * ограничено сверху значением этого ключа;</li> <li> любой ключ,
	 * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
	 * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
	 * параметров выборки нет.
	 *
	 *
	 *
	 * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
	 * указать только те поля, которые необходимы. Если в массиве
	 * присутствует значение "*", то будут возвращены все доступные
	 * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
	 * что будут возвращены все поля основной таблицы запроса.
	 *
	 *
	 *
	 * @return CDBResult <p>Объект класса CDBResult, содержащий записи в виде ассоциативных
	 * массивов параметров товара с ключами</p><table class="tnormal" width="100%"> <tr> <th
	 * width="15%">Ключ</th> <th>Описание</th> </tr> <tr> <td>ID</td> <td>Код товара.</td> </tr> <tr>
	 * <td>QUANTITY</td> <td>Количество на складе.</td> </tr> <tr> <td>QUANTITY_TRACE</td> <td>Флаг
	 * (Y/N/D - значение берется из настроек модуля) "уменьшать количество
	 * при оформлении заказа"</td> </tr> <tr> <td>WEIGHT</td> <td>Вес единицы товара.</td>
	 * </tr> <tr> <td>PRICE_TYPE</td> <td>Тип цены (S - одноразовый платеж, R - регулярные
	 * платежи, T - пробная подписка)</td> </tr> <tr> <td>RECUR_SCHEME_TYPE</td> <td>Тип
	 * периода подписки ("H" - час, "D" - сутки, "W" - неделя, "M" - месяц, "Q" -
	 * квартал, "S" - полугодие, "Y" - год)</td> </tr> <tr> <td>RECUR_SCHEME_LENGTH</td> <td>Длина
	 * периода подписки.</td> </tr> <tr> <td>TRIAL_PRICE_ID</td> <td>Код товара, для
	 * которого данный товар является пробным.</td> </tr> <tr> <td>WITHOUT_ORDER</td>
	 * <td>Флаг "Продление подписки без оформления заказа"</td> </tr> <tr>
	 * <td>VAT_ID</td> <td>Идентификатор ставки НДС.</td> </tr> <tr> <td>VAT_INCLUDED</td>
	 * <td>Признак включённости НДС в цену (Y/N).</td> </tr> <tr> <td>PURCHASING_PRICE</td>
	 * <td>Величина закупочной цены.</td> </tr> <tr> <td>PURCHASING_CURRENCY</td> <td>Валюта
	 * закупочной цены.</td> </tr> <tr> <td>CAN_BUY_ZERO</td> <td>Флаг (Y/N/D - значение
	 * берется из настроек модуля) "разрешить покупку при отсутствии
	 * товара".</td> </tr> <tr> <td>NEGATIVE_AMOUNT_TRACE</td> <td>Флаг (Y/N/D - значение берется из
	 * настроек модуля) "разрешить отрицательное количество товара".</td>
	 * </tr> </table><a name="examples"></a>
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * &lt;?
	 * // Выведем коды 10 товаров с самым большим количеством на складе
	 * // из тех, количество которых при заказе должно уменьшаться
	 * $ind = 0;
	 * $db_res = CCatalogProduct::GetList(
	 *         array("QUANTITY" =&gt; "DESC"),
	 *         array("QUANTITY_TRACE" =&gt; "Y"),
	 *         false,
	 *         array("nTopCount" =&gt; 10)
	 *     );
	 * while (($ar_res = $db_res-&gt;Fetch()) &amp;&amp; ($ind &lt; 10))
	 * {
	 *     echo $ar_res["ID"].", ";
	 *     $ind++;
	 * }
	 * ?&gt;
	 * </pre>
	 *
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproduct/ccatalogproduct__getlist.971a2b70.php
	 * @author Bitrix
	 */
	public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
	{
		global $DB;

		if (!is_array($arOrder) && !is_array($arFilter))
		{
			$arOrder = strval($arOrder);
			$arFilter = strval($arFilter);
			if ('' != $arOrder && '' != $arFilter)
				$arOrder = array($arOrder => $arFilter);
			else
				$arOrder = array();
			if (is_array($arGroupBy))
				$arFilter = $arGroupBy;
			else
				$arFilter = array();
			$arGroupBy = false;
		}

		$arFields = array(
			"ID" => array("FIELD" => "CP.ID", "TYPE" => "int"),
			"QUANTITY" => array("FIELD" => "CP.QUANTITY", "TYPE" => "double"),
			"QUANTITY_RESERVED" => array("FIELD" => "CP.QUANTITY_RESERVED", "TYPE" => "double"),
			"QUANTITY_TRACE_ORIG" => array("FIELD" => "CP.QUANTITY_TRACE", "TYPE" => "char"),
			"CAN_BUY_ZERO_ORIG" => array("FIELD" => "CP.CAN_BUY_ZERO", "TYPE" => "char"),
			"NEGATIVE_AMOUNT_TRACE_ORIG" => array("FIELD" => "CP.NEGATIVE_AMOUNT_TRACE", "TYPE" => "char"),
			"QUANTITY_TRACE" => array("FIELD" => "IF (CP.QUANTITY_TRACE = 'D', '".$DB->ForSql(COption::GetOptionString('catalog','default_quantity_trace','N'))."', CP.QUANTITY_TRACE)", "TYPE" => "char"),
			"CAN_BUY_ZERO" => array("FIELD" => "IF (CP.CAN_BUY_ZERO = 'D', '".$DB->ForSql(COption::GetOptionString('catalog','default_can_buy_zero','N'))."', CP.CAN_BUY_ZERO)", "TYPE" => "char"),
			"NEGATIVE_AMOUNT_TRACE" => array("FIELD" => "IF (CP.NEGATIVE_AMOUNT_TRACE = 'D', '".$DB->ForSql(COption::GetOptionString('catalog','allow_negative_amount','N'))."', CP.NEGATIVE_AMOUNT_TRACE)", "TYPE" => "char"),
			"WEIGHT" => array("FIELD" => "CP.WEIGHT", "TYPE" => "double"),
			"TIMESTAMP_X" => array("FIELD" => "CP.TIMESTAMP_X", "TYPE" => "datetime"),
			"PRICE_TYPE" => array("FIELD" => "CP.PRICE_TYPE", "TYPE" => "char"),
			"RECUR_SCHEME_TYPE" => array("FIELD" => "CP.RECUR_SCHEME_TYPE", "TYPE" => "char"),
			"RECUR_SCHEME_LENGTH" => array("FIELD" => "CP.RECUR_SCHEME_LENGTH", "TYPE" => "int"),
			"TRIAL_PRICE_ID" => array("FIELD" => "CP.TRIAL_PRICE_ID", "TYPE" => "int"),
			"WITHOUT_ORDER" => array("FIELD" => "CP.WITHOUT_ORDER", "TYPE" => "char"),
			"SELECT_BEST_PRICE" => array("FIELD" => "CP.SELECT_BEST_PRICE", "TYPE" => "char"),
			"VAT_ID" => array("FIELD" => "CP.VAT_ID", "TYPE" => "int"),
			"VAT_INCLUDED" => array("FIELD" => "CP.VAT_INCLUDED", "TYPE" => "char"),
			"TMP_ID" => array("FIELD" => "CP.TMP_ID", "TYPE" => "char"),
			"PURCHASING_PRICE" => array("FIELD" => "CP.PURCHASING_PRICE", "TYPE" => "double"),
			"PURCHASING_CURRENCY" => array("FIELD" => "CP.PURCHASING_CURRENCY", "TYPE" => "string"),
			"BARCODE_MULTI" => array("FIELD" => "CP.BARCODE_MULTI", "TYPE" => "char"),
			"ELEMENT_IBLOCK_ID" => array("FIELD" => "I.IBLOCK_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"),
			"ELEMENT_XML_ID" => array("FIELD" => "I.XML_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"),
			"ELEMENT_NAME" => array("FIELD" => "I.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)")
		);

		$arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);

		$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);

		if (empty($arGroupBy) && is_array($arGroupBy))
		{
			$strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_product CP ".$arSqls["FROM"];
			if (!empty($arSqls["WHERE"]))
				$strSql .= " WHERE ".$arSqls["WHERE"];
			if (!empty($arSqls["GROUPBY"]))
				$strSql .= " GROUP BY ".$arSqls["GROUPBY"];

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			if ($arRes = $dbRes->Fetch())
				return $arRes["CNT"];
			else
				return false;
		}

		$strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_product CP ".$arSqls["FROM"];
		if (!empty($arSqls["WHERE"]))
			$strSql .= " WHERE ".$arSqls["WHERE"];
		if (!empty($arSqls["GROUPBY"]))
			$strSql .= " GROUP BY ".$arSqls["GROUPBY"];
		if (!empty($arSqls["ORDERBY"]))
			$strSql .= " ORDER BY ".$arSqls["ORDERBY"];

		$intTopCount = 0;
		$boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams));
		if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams))
		{
			$intTopCount = intval($arNavStartParams["nTopCount"]);
		}
		if ($boolNavStartParams && 0 >= $intTopCount)
		{
			$strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_product CP ".$arSqls["FROM"];
			if (!empty($arSqls["WHERE"]))
				$strSql_tmp .= " WHERE ".$arSqls["WHERE"];
			if (!empty($arSqls["GROUPBY"]))
				$strSql_tmp .= " GROUP BY ".$arSqls["GROUPBY"];

			$dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			$cnt = 0;
			if (empty($arSqls["GROUPBY"]))
			{
				if ($arRes = $dbRes->Fetch())
					$cnt = $arRes["CNT"];
			}
			else
			{
				$cnt = $dbRes->SelectedRowsCount();
			}

			$dbRes = new CDBResult();

			$dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
		}
		else
		{
			if ($boolNavStartParams && 0 < $intTopCount)
			{
				$strSql .= " LIMIT ".$intTopCount;
			}
			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
		}

		return $dbRes;
	}
Example #25
0
 public static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "PERSON_TYPE", "PERSON_NAME", "PERSON_LASTNAME", "PERSON_MIDDLENAME", "EMAIL", "PHONE", "POST_INDEX", "COUNTRY", "CITY", "COMPANY", "ADDRESS", "INN", "KPP");
     }
     $arFields = array("ID" => array("FIELD" => "CC.ID", "TYPE" => "int"), "PERSON_TYPE" => array("FIELD" => "CC.PERSON_TYPE", "TYPE" => "char"), "PERSON_NAME" => array("FIELD" => "CC.PERSON_NAME", "TYPE" => "string"), "PERSON_LASTNAME" => array("FIELD" => "CC.PERSON_LASTNAME", "TYPE" => "string"), "PERSON_MIDDLENAME" => array("FIELD" => "CC.PERSON_MIDDLENAME", "TYPE" => "string"), "EMAIL" => array("FIELD" => "CC.EMAIL", "TYPE" => "string"), "PHONE" => array("FIELD" => "CC.PHONE", "TYPE" => "string"), "POST_INDEX" => array("FIELD" => "CC.POST_INDEX", "TYPE" => "string"), "COUNTRY" => array("FIELD" => "CC.COUNTRY", "TYPE" => "string"), "CITY" => array("FIELD" => "CC.CITY", "TYPE" => "string"), "COMPANY" => array("FIELD" => "IF (CC.PERSON_NAME IS NOT NULL, if(CC.PERSON_TYPE = " . CONTRACTOR_INDIVIDUAL . ", CC.PERSON_NAME, CONCAT(CC.COMPANY,' (',CC.PERSON_NAME,')')), CC.COMPANY)", "TYPE" => "string"), "ADDRESS" => array("FIELD" => "CC.ADDRESS", "TYPE" => "string"), "INN" => array("FIELD" => "CC.INN", "TYPE" => "string"), "KPP" => array("FIELD" => "CC.KPP", "TYPE" => "string"), "DATE_CREATE" => array("FIELD" => "CC.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CC.DATE_MODIFY", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "CC.CREATED_BY", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CC.MODIFIED_BY", "TYPE" => "int"));
     $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_contractor CC " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_contractor CC " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_contractor CC " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }