| Функция поиска по полям сделки, смарт-процессов, списков возвращает массив айдишников |
SearchInEntyties($arParams); |
$arParams = [ "TYPE" => "deal", // "smart", "list" "ID" => 2, //для deal id воронки (необ.), для смарт-процесса - ид типа (обязат.), для списка - ид списка (обязат.) "FIELDS" => ["NAME","UF_PROP"], //массив полей, по которым ищем "SEARCH_TEXT" => "stroka", //строка по которой ищем "SHOW_EXCEPTION" => "Y", // вывод ошибок для отладки, необ ]; |
формат даты
для сделок 16.08.2023 00:00:00, где дата БЕЗ времени время 00:00:00 указывать
для списка 2024-05-27 21:49:00
примеры $arParams
сделка
$arParams = [ "TYPE" => "deal", "ID" => 0, // ид воронки (необ.) "FIELDS" => ["TITLE","UF_CRM_DEAL_3804018097336"], //массив полей "SEARCH_TEXT" => "00Н1-000264", //строка по которой ищем "SHOW_EXCEPTION" => "Y", //необ, вывод ошибок ]; |
$arParams = [ "TYPE" => "smart", "ID" => 146, // ид типа (обязат.) "FIELDS" => ["TITLE","UF_CRM_3_1709319908868"], //массив полей "SEARCH_TEXT" => "КС-2 ИП Иванов И.И.", //строка по которой ищем ]; |
$arParams = [ "TYPE" => "list", "ID" => 5, // ид списка (обязат.) "FIELDS" => ["PROPERTY_82"], //массив полей "SEARCH_TEXT" => "2024-05-27 21:49:00", //строка по которой ищем ]; |
сама функция, размещаем в init.php
function SearchInEntyties($arParams){
$result = [];
if(isset($arParams["TYPE"]) && !empty($arParams["FIELDS"]) && is_array($arParams["FIELDS"]) && isset($arParams["SEARCH_TEXT"])){
try {
//смарт-процессы и сделки
if(
(
(($arParams["TYPE"]=="smart") && !empty($arParams["ID"]) && (intval($arParams["ID"])==$arParams["ID"])) || ($arParams["TYPE"]=="deal")
) && CModule::IncludeModule("crm")
){
if($arParams["TYPE"]=="smart"){
$factory = Bitrix\Crm\Service\Container::getInstance()->getFactory($arParams["ID"]);
}
else{
$factory = Bitrix\Crm\Service\Container::getInstance()->getFactory(\CCrmOwnerType::Deal);
}
if(!empty($factory)){
if(count($arParams["FIELDS"])==1){
if(($arParams["TYPE"]=="deal") && !empty($arParams["ID"]) && (intval($arParams["ID"])==$arParams["ID"])) {
$arFilterBase = [
"CATEGORY_ID" => $arParams["ID"]
];
}
else{
$arFilterBase = [];
}
foreach ($arParams["FIELDS"] as $field) {
$arFilterBase[$field] = $arParams["SEARCH_TEXT"];
}
}
else{
$arFilter = [
"LOGIC"=>"OR"
];
foreach ($arParams["FIELDS"] as $field) {
$arFilter[] = [
$field => $arParams["SEARCH_TEXT"]
];
}
if(($arParams["TYPE"]=="deal") && !empty($arParams["ID"]) && (intval($arParams["ID"])==$arParams["ID"])){
$arFilterBase = [
"CATEGORY_ID" => $arParams["ID"]
];
$arFilterBase[] = $arFilter;
}
else{
$arFilterBase = $arFilter;
}
}
$items = $factory->getItems([
"filter" => $arFilterBase,
"select" => ["ID"],
]);
foreach($items as $item){
$result[] = $item->getId();
}
}
}
elseif(($arParams["TYPE"]=="list") && !empty($arParams["ID"]) && (intval($arParams["ID"])==$arParams["ID"]) && CModule::IncludeModule("iblock")){ //списки
$arFilterBase = [
"IBLOCK_ID"=>$arParams["ID"],
];
if(count($arParams["FIELDS"])==1){
foreach ($arParams["FIELDS"] as $field) {
$arFilterBase[$field] = $arParams["SEARCH_TEXT"];
}
}
else{
$arFilter = [
"LOGIC"=>"OR"
];
foreach ($arParams["FIELDS"] as $field) {
$arFilter[] = [
$field => $arParams["SEARCH_TEXT"]
];
}
$arFilterBase[] = $arFilter;
}
$arSelect = ["ID","IBLOCK_ID"];
$res = CIBlockElement::GetList(["id"=>"asc"], $arFilterBase, false, ["nPageSize"=>3000,"iNumPage"=>1], $arSelect);
while($arItem = $res->Fetch()){
$result[] = $arItem["ID"];
}
}
}
catch (Exception $e) {
if(!empty($arParams["SHOW_EXCEPTION"]) && ($arParams["SHOW_EXCEPTION"]=="Y")){
echo $e->getMessage();
}
}
}
return $result;
} |