public function Add($fields) { $arAdd = $this->PrepareFiedls($fields); if (!$arAdd) { return false; } if ($arAdd['TYPE'] == self::TYPE_CLOUD) { $countQuery = new \Bitrix\Main\Entity\Query(VI\SipTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter(array('TYPE' => self::TYPE_CLOUD)); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); if ($totalCount['CNT'] >= 5) { $this->error = new CVoxImplantError(__METHOD__, 'MAX_CLOUD_PBX', GetMessage('VI_SIP_ADD_CLOUD_ERR', array("#NUMBER#" => 5))); return false; } } if (strlen($arAdd['PHONE_NAME']) > 0) { $orm = VI\ConfigTable::getList(array('filter' => array('=PHONE_NAME' => $arAdd['PHONE_NAME']))); if ($orm->fetch()) { $this->error = new CVoxImplantError(__METHOD__, 'TITLE_EXISTS', GetMessage('VI_SIP_TITLE_EXISTS')); return false; } } $melodyLang = 'EN'; if (LANGUAGE_ID == 'ru') { $melodyLang = 'RU'; } else { if (LANGUAGE_ID == 'de') { $melodyLang = 'DE'; } else { if (LANGUAGE_ID == 'ua') { $melodyLang = 'UA'; } } } $result = VI\ConfigTable::add(array('PORTAL_MODE' => 'SIP', 'SEARCH_ID' => $arAdd['SEARCH_ID'], 'PHONE_NAME' => trim($arAdd['PHONE_NAME']), 'MELODY_LANG' => $melodyLang)); if (!$result) { $this->error = new CVoxImplantError(__METHOD__, 'TITLE_EXISTS', GetMessage('VI_SIP_TITLE_EXISTS')); return false; } $configId = $result->getId(); $userId = $GLOBALS['USER']->GetId(); if ($userId > 0) { VI\QueueTable::add(array('CONFIG_ID' => $configId, 'USER_ID' => $userId, 'STATUS' => 'OFFLINE')); } if (CVoxImplantConfig::GetPortalNumber() == CVoxImplantConfig::LINK_BASE_NUMBER) { CVoxImplantConfig::SetPortalNumber($arAdd['SEARCH_ID']); } unset($arAdd['SEARCH_ID']); unset($arAdd['PHONE_NAME']); $arAdd['CONFIG_ID'] = $configId; VI\SipTable::add($arAdd); return $configId; }
protected function processActionCalculate() { if (!$this->checkRequiredPostParams(array('objectId'))) { $this->sendJsonErrorResponse(); } /** @var Folder $folder */ $folder = Folder::loadById((int) $this->request->getPost('objectId'), array('STORAGE')); if (!$folder) { $this->errorCollection->addOne(new Error(Loc::getMessage('DISK_TRASHCAN_ERROR_COULD_NOT_FIND_OBJECT'), self::ERROR_COULD_NOT_FIND_OBJECT)); $this->sendJsonErrorResponse(); } $securityContext = $folder->getStorage()->getCurrentUserSecurityContext(); if (!$folder->canRead($securityContext)) { $this->sendJsonAccessDeniedResponse(); } $countQuery = new Bitrix\Main\Entity\Query(FolderTable::getEntity()); $totalCount = $countQuery->setFilter(array('PATH_CHILD.PARENT_ID' => $folder->getId(), '!PATH_CHILD.OBJECT_ID' => $folder->getId(), '!=DELETED_TYPE' => ObjectTable::DELETED_TYPE_NONE, '=RIGHTS_CHECK' => true))->registerRuntimeField('RIGHTS_CHECK', new ExpressionField('RIGHTS_CHECK', 'CASE WHEN ' . $securityContext->getSqlExpressionForList('%1$s', '%2$s') . ' THEN 1 ELSE 0 END', array('ID', 'CREATED_BY')))->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)'))->setLimit(null)->setOffset(null)->exec()->fetch(); $this->sendJsonSuccessResponse(array('countItems' => $totalCount['CNT'])); }
$runtimeFields['SOURCE'] = array('data_type' => 'Bitrix\\Sale\\TradingPlatform\\OrderTable', 'reference' => array('ref.ORDER_ID' => 'this.ID'), 'join_type' => 'left'); $arSelectFields["SOURCE_NAME"] = 'SOURCE.TRADING_PLATFORM.NAME'; if ($searchIndex = array_search('SOURCE_NAME', $arSelectFields)) { unset($arSelectFields[$searchIndex]); } } $getListParams = array('order' => $arFilterOrder, 'filter' => $arFilterTmp, 'group' => $arGroupByTmp, 'select' => $arSelectFields, 'runtime' => $runtimeFields); if ($usePageNavigation) { $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } $totalPages = 0; if ($usePageNavigation) { $countQuery = new \Bitrix\Main\Entity\Query(\Bitrix\Sale\Internals\OrderTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($getListParams['filter']); foreach ($runtimeFields as $key => $field) { $countQuery->registerRuntimeField($key, $field); } $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); unset($countQuery); $totalCount = (int) $totalCount['CNT']; if ($totalCount > 0) { $totalPages = ceil($totalCount / $navyParams['SIZEN']); if ($navyParams['PAGEN'] > $totalPages) { $navyParams['PAGEN'] = $totalPages; } $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } else { $navyParams['PAGEN'] = 1;
FOR EACH ROW BEGIN IF :NEW.ID IS NULL THEN SELECT SQ_B_SALE_BASKET_PROPS.NEXTVAL INTO :NEW.ID FROM dual; END IF; END;'); } } } if (empty($error)) { $message = Loc::getMessage('SALE_CONVERTER_AJAX_STEP_FINAL'); $type = 'OK'; if (\Bitrix\Main\ModuleManager::isModuleInstalled('catalog') && \Bitrix\Main\Config\Option::get('sale', 'basket_discount_converted')) { $countQuery = new \Bitrix\Main\Entity\Query(\Bitrix\Sale\Internals\OrderTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter(array('ORDER_DISCOUNT_DATA.ID' => null)); $totalCount = $countQuery->setLimit(1)->setOffset(null)->exec()->fetch(); unset($countQuery); if ((int) $totalCount['CNT'] > 0) { $adminNotify = false; $adminNotifyIterator = CAdminNotify::GetList(array(), array('MODULE_ID' => 'sale', 'TAG' => 'BASKET_DISCOUNT_CONVERTED')); if (!$adminNotifyIterator) { $adminNotify = $adminNotifyIterator->Fetch(); } unset($adminNotifyIterator); if (empty($adminNotify)) { $langMess = array(); $langList = array(); $languageIterator = \Bitrix\Main\Localization\LanguageTable::getList(array('select' => array('ID'), 'filter' => array('=ACTIVE' => 'Y'))); while ($oneLanguage = $languageIterator->fetch()) { $langList[] = $oneLanguage['ID'];
function getNumberCabinet($idCabinet, $relativePath) { $numberCabinet = ''; $obCache = new CPHPCache(); $cache_id = SITE_ID . '|tickets|numbersCabinets|' . $idCabinet; $cache_path = '/' . SITE_ID . $relativePath; if ($obCache->StartDataCache(36000, $cache_id, $cache_path)) { $rsCabinetData = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('NAME' => 'Cabinet'))); if ($arCabinetData = $rsCabinetData->fetch()) { $EntityCabinet = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($arCabinetData); $QueryCabinet = new \Bitrix\Main\Entity\Query($EntityCabinet); $QueryCabinet->setSelect(array('UF_NUMBER')); $QueryCabinet->setFilter(array('ID' => $idCabinet)); $resultCabinet = $QueryCabinet->exec(); $resultCabinet = new CDBResult($resultCabinet); $rowCabinet = $resultCabinet->Fetch(); $numberCabinet = $rowCabinet['UF_NUMBER']; } $obCache->EndDataCache(array("numberCabinet" => $numberCabinet)); } else { $arVars = $obCache->GetVars(); $numberCabinet = $arVars["numberCabinet"]; } return $numberCabinet; }
$navyParams = CDBResult::GetNavParams(CAdminResult::GetNavSize($tableId)); if ($navyParams['SHOW_ALL']) { $usePageNavigation = false; } else { $navyParams['PAGEN'] = (int) $navyParams['PAGEN']; $navyParams['SIZEN'] = (int) $navyParams['SIZEN']; } if ($usePageNavigation) { $params['limit'] = $navyParams['SIZEN']; $params['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } $totalPages = 0; if ($usePageNavigation) { $countQuery = new \Bitrix\Main\Entity\Query(PaymentTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($params['filter']); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); unset($countQuery); $totalCount = (int) $totalCount['CNT']; if ($totalCount > 0) { $totalPages = ceil($totalCount / $navyParams['SIZEN']); if ($navyParams['PAGEN'] > $totalPages) { $navyParams['PAGEN'] = $totalPages; } $params['limit'] = $navyParams['SIZEN']; $params['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } else { $navyParams['PAGEN'] = 1; $params['limit'] = $navyParams['SIZEN']; $params['offset'] = 0; }
private static function getSelectedTypeIds($type, $siteId) { static $index; // this function is called hell number of times outside, so a little cache is provided if ($index == null) { $index = array(); } if (!isset($index[$type][$siteId])) { $result = array(); $class = self::CONN_ENTITY_NAME . 'Table'; $index[$type][$siteId] = array(); // check if link even used if (!$class::checkLinkUsageAny($siteId)) { $index[$type][$siteId] = array(''); } else { $types = \CSaleLocation::getTypes(); $query = new \Bitrix\Main\Entity\Query(self::LOCATION_ENTITY_NAME); $query->registerRuntimeField('L', array('data_type' => self::LOCATION_ENTITY_NAME, 'reference' => array('=ref.TYPE_ID' => array('?', $types[$type]), '>=ref.LEFT_MARGIN' => 'this.LEFT_MARGIN', '<=ref.RIGHT_MARGIN' => 'this.RIGHT_MARGIN'), 'join_type' => 'inner')); $query->setSelect(array('ID__' => 'L.ID')); // get all connection points of interested types (if any) $sql = $class::getConnectedLocationsQuery($siteId, array('select' => array('ID')), array('GET_LINKED_THROUGH_GROUPS' => true)); if ($sql) { $query->setFilter(array('@ID' => new \Bitrix\Main\DB\SqlExpression($sql))); } $res = $query->exec(); while ($item = $res->fetch()) { $index[$type][$siteId][] = $item['ID__']; } $res = Location\LocationTable::getList(array('filter' => array('TYPE_ID' => $types[$type]), 'runtime' => array('CNT' => array('data_type' => 'integer', 'expression' => array('COUNT(*)'))), 'select' => array('CNT')))->fetch(); if ($res['CNT'] == count($index[$type][$siteId])) { $index[$type][$siteId][] = ''; } } } return $index[$type][$siteId]; }
public static function QueuedGetList($params) { $query = new \Bitrix\Main\Entity\Query(Bitrix\Voximplant\QueueTable::getEntity()); $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN %s > ' . CVoxImplantUser::GetLastActivityDateAgo() . ' THEN \'Y\' ELSE \'N\' END', array('USER.LAST_ACTIVITY_DATE'))); if (isset($params['select'])) { $query->setSelect($params['select']); } else { $query->addSelect('ID')->addSelect('IS_ONLINE_CUSTOM'); } if (isset($params['filter'])) { $query->setFilter($params['filter']); } if (isset($params['order'])) { $query->setOrder($params['order']); } return $query->exec(); }
protected static function getRuntimeFieldMixinsCheckRights($parameters) { $result = false; $parameters['USER_ID'] = Assert::expectIntegerPositive($parameters['USER_ID'], '$parameters[USER_ID]'); $rf = $parameters['REF_FIELD']; if (!\CTasksTools::IsAdmin($userId) && !\CTasksTools::IsPortalB24Admin($userId)) { list($conditions, $expression) = \CTasks::getPermissionFilterConditions($parameters, array('USE_PLACEHOLDERS' => true)); $conditions = "(case when (" . implode(' OR ', $conditions) . ") then '1' else '0' end)"; array_unshift($expression, $conditions); $query = new \Bitrix\Main\Entity\Query('Bitrix\\Tasks\\Task'); $query->registerRuntimeField('F', array('data_type' => 'string', 'expression' => $expression)); $query->setFilter(array('=F' => '1')); $query->setSelect(array('TASK_ID' => 'ID')); $result = new Entity\ReferenceField($parameters['NAME'], \Bitrix\Main\Entity\Base::getInstanceByQuery($query), array('=this.' . ((string) $rf != '' ? $rf : 'ID') => 'ref.TASK_ID'), array('join_type' => 'inner')); } return $result; }
/** * Perform reading main data from database, no cache is used * @return void */ protected function obtainDataOrders() { $select = array('ID', 'LID', 'PERSON_TYPE_ID', 'PAYED', 'DATE_PAYED', 'EMP_PAYED_ID', 'CANCELED', 'DATE_CANCELED', 'EMP_CANCELED_ID', 'REASON_CANCELED', 'MARKED', 'DATE_MARKED', 'EMP_MARKED_ID', 'REASON_MARKED', 'STATUS_ID', 'DATE_STATUS', 'PAY_VOUCHER_NUM', 'PAY_VOUCHER_DATE', 'EMP_STATUS_ID', 'PRICE_DELIVERY', 'ALLOW_DELIVERY', 'DATE_ALLOW_DELIVERY', 'EMP_ALLOW_DELIVERY_ID', 'DEDUCTED', 'DATE_DEDUCTED', 'EMP_DEDUCTED_ID', 'REASON_UNDO_DEDUCTED', 'RESERVED', 'PRICE', 'CURRENCY', 'DISCOUNT_VALUE', 'SUM_PAID', 'USER_ID', 'PAY_SYSTEM_ID', 'DELIVERY_ID', 'DATE_INSERT', 'DATE_UPDATE', 'USER_DESCRIPTION', 'ADDITIONAL_INFO', 'COMMENTS', 'TAX_VALUE', 'STAT_GID', 'RECURRING_ID', 'RECOUNT_FLAG', 'DELIVERY_DOC_NUM', 'DELIVERY_DOC_DATE', 'STORE_ID', 'ORDER_TOPIC', 'RESPONSIBLE_ID', 'DATE_PAY_BEFORE', 'DATE_BILL', 'ACCOUNT_NUMBER', 'TRACKING_NUMBER', 'XML_ID'); $usePageNavigation = true; $navyParams = array(); $navyParams = \CDBResult::GetNavParams(); if ($navyParams['SHOW_ALL']) { $usePageNavigation = false; } else { $navyParams['PAGEN'] = (int) $navyParams['PAGEN']; $navyParams['SIZEN'] = (int) $navyParams['SIZEN']; } if (isset($this->arParams["ORDERS_PER_PAGE"]) && intval($this->arParams["ORDERS_PER_PAGE"]) > 0) { $navyParams['SIZEN'] = $this->arParams["ORDERS_PER_PAGE"]; } if (isset($_REQUEST['show_all']) && $_REQUEST['show_all'] == "Y") { $usePageNavigation = false; } $getListParams = array('order' => array($this->sortBy => $this->sortOrder), 'filter' => $this->filter, 'select' => $select); if ($usePageNavigation) { $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } $totalPages = 0; if ($usePageNavigation) { $countQuery = new \Bitrix\Main\Entity\Query(\Bitrix\Sale\Internals\OrderTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($getListParams['filter']); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); unset($countQuery); $totalCount = (int) $totalCount['CNT']; if ($totalCount > 0) { $totalPages = ceil($totalCount / $navyParams['SIZEN']); if ($navyParams['PAGEN'] > $totalPages) { $navyParams['PAGEN'] = $totalPages; } $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } else { $navyParams['PAGEN'] = 1; $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = 0; } } $this->dbQueryResult['ORDERS'] = new \CDBResult(\Bitrix\Sale\Internals\OrderTable::getList($getListParams)); if ($usePageNavigation) { $this->dbQueryResult['ORDERS']->NavStart($getListParams['limit'], $navyParams['SHOW_ALL'], $navyParams['PAGEN']); $this->dbQueryResult['ORDERS']->NavRecordCount = $totalCount; $this->dbQueryResult['ORDERS']->NavPageCount = $totalPages; $this->dbQueryResult['ORDERS']->NavPageNomer = $navyParams['PAGEN']; } else { $this->dbQueryResult['ORDERS']->NavStart($this->arParams["ORDERS_PER_PAGE"], false); } if (empty($this->dbQueryResult['ORDERS'])) { return; } while ($arOrder = $this->dbQueryResult['ORDERS']->GetNext()) { $arOBasket = array(); $dbBasket = CSaleBasket::GetList(array('NAME' => 'asc'), array("ORDER_ID" => $arOrder["ID"]), false, false, array('*')); while ($arBasket = $dbBasket->Fetch()) { if (CSaleBasketHelper::isSetItem($arBasket)) { continue; } $arOBasket[$arBasket['ID']] = $arBasket; } $arOShipment = array(); $dbShipment = \Bitrix\Sale\Internals\ShipmentTable::getList(array('select' => array('DELIVERY_NAME', 'SYSTEM', 'DELIVERY_ID'), 'filter' => array('ORDER_ID' => $arOrder['ID']))); while ($arShipment = $dbShipment->fetch()) { if ($arShipment['SYSTEM'] == 'Y') { continue; } $arOShipment[] = $arShipment; } $dbPayment = \Bitrix\Sale\Internals\PaymentTable::getList(array('select' => array('PAY_SYSTEM_NAME', 'PAY_SYSTEM_ID'), 'filter' => array('ORDER_ID' => $arOrder['ID']))); $arOPayment = array(); while ($arPayment = $dbPayment->fetch()) { $arOPayment[] = $arPayment; } $this->dbResult['ORDERS'][] = array("ORDER" => $arOrder, "BASKET_ITEMS" => $arOBasket, "SHIPMENT" => $arOShipment, "PAYMENT" => $arOPayment); } }
} $filterByCode = ''; if (isset($_GET['CODE']) && preg_match('#^[[:alnum:]\\-]+$#D', $_GET['CODE'])) { $filterByCode = $_GET['CODE']; $filter["CALL_FAILED_CODE"] = $filterByCode; } $parametrs = array('order' => array('CALL_START_DATE' => 'DESC'), 'filter' => $filter, 'select' => array('*')); if (!$_GET['SHOWALL_1']) { $parametrs['limit'] = $limit; $parametrs['offset'] = ($page - 1) * $limit; } $data = VI\StatisticTable::getList($parametrs); $result = new CDBResult($data); $countQuery = new Bitrix\Main\Entity\Query(VI\StatisticTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($filter); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); $totalCount = intval($totalCount['CNT']); if (!$_GET['SHOWALL_1']) { $totalPage = ceil($totalCount / $limit); $result->NavStart($limit); } else { $totalPage = 1; $result->NavStart(); } $result->NavRecordCount = $totalCount; $result->NavPageCount = $totalPage; $result->NavPageNomer = $page; $arResult["NAV_OBJECT"] = $result; $arResult["ROWS_COUNT"] = $result->SelectedRowsCount(); $arResult["ELEMENTS_ROWS"] = array();
function GetListEx($arOrder = array(), $arFilter = array(), $arParams = array()) { global $DB; $arSearch = $arSearch1 = $arSearch2 = array(); $arSelect = array(); $arSqlSearch = array(); $strSqlSearch = ""; $arSqlOrder = array(); foreach ($arFilter as $key => $val) { if (strlen($val) <= 0) { continue; } $val = $DB->ForSql($val); $key_res = CEventType::GetFilterOperation($key); $key = strToUpper($key_res["FIELD"]); $strNegative = $key_res["NEGATIVE"]; $strOperation = $key_res["OPERATION"]; $strNOperation = $key_res["NOPERATION"]; $arOperationReplace = array('LIKE' => '=%', 'QUERY' => '', 'IN' => ''); switch ($key) { case "EVENT_NAME": case "TYPE_ID": if ($strOperation == "LIKE") { $val = "%" . $val . "%"; } $arSearch[] = array($strNOperation . 'EVENT_NAME' => $val); break; case "DESCRIPTION": case "NAME": if ($strOperation == "LIKE") { $val = "%" . $val . "%"; } $arSearch1[] = array($strNOperation . 'EVENT_MESSAGE_TYPE.' . $key => $val); $arSearch2[] = array($strNOperation . $key => $val); break; case "LID": $arSearch1[] = array($strNOperation . 'EVENT_MESSAGE_TYPE.' . $key => $val); $arSearch2[] = array($strNOperation . $key => $val); break; case "ID": $val = intVal($val); $arSearch1[] = array($strNOperation . 'EVENT_MESSAGE_TYPE.' . $key => $val); $arSearch2[] = array($strNOperation . $key => $val); break; case "MESSAGE_ID": $val = intVal($val); $arSearch1[] = array($strNOperation . "ID" => $val); $arSearch2[] = array($strNOperation . 'EVENT_MESSAGE.ID' => $val); break; } } if (is_array($arOrder)) { foreach ($arOrder as $by => $order) { $by = strtoupper($by); $order = strtoupper($order); $order = $order != "DESC" ? "ASC" : "DESC"; if ($by == "EVENT_NAME" || $by == "ID") { $arSqlOrder["EVENT_NAME"] = "EVENT_NAME1 " . $order; } } } if (empty($arSqlOrder)) { $arSqlOrder["EVENT_NAME"] = "EVENT_NAME1 ASC"; } $strSqlOrder = " ORDER BY " . implode(", ", $arSqlOrder); $arSearch['!EVENT_NAME'] = null; $arQuerySelect = array('ID1' => 'EVENT_NAME', 'EVENT_NAME1' => 'EVENT_NAME'); $query1 = new \Bitrix\Main\Entity\Query(Mail\Internal\EventMessageTable::getEntity()); $query1->setSelect($arQuerySelect); $query1->setFilter(array_merge($arSearch, $arSearch1)); $query1->registerRuntimeField('EVENT_MESSAGE_TYPE', array('data_type' => 'Bitrix\\Main\\Mail\\Internal\\EventType', 'reference' => array('=this.EVENT_NAME' => 'ref.EVENT_NAME'))); $query2 = new \Bitrix\Main\Entity\Query(Mail\Internal\EventTypeTable::getEntity()); $query2->setSelect($arQuerySelect); $query2->setFilter(array_merge($arSearch, $arSearch2)); $query2->registerRuntimeField('EVENT_MESSAGE', array('data_type' => 'Bitrix\\Main\\Mail\\Internal\\EventMessage', 'reference' => array('=this.EVENT_NAME' => 'ref.EVENT_NAME'))); $connection = \Bitrix\Main\Application::getConnection(); $strSql = $query1->getQuery() . " UNION " . $query2->getQuery() . " " . $strSqlOrder; $db_res = $connection->query($strSql); $db_res->addFetchDataModifier(array('CEventType', 'GetListExFetchDataModifier')); $db_res = new _CEventTypeResult($db_res, $arParams); return $db_res; }