- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/helper.php
- Класс: Bitrix\Sender\Integration\Crm\Connectors\Helper
- Вызов: Helper::getFilterByEntity
static function getFilterByEntity(array $fields = array(), array $values = array(), array $entityTypeNames = array()) { $map = array(); foreach ($entityTypeNames as $entityTypeName) { $map[$entityTypeName] = array($entityTypeName); } $map['CLIENT'] = array(\CCrmOwnerType::CompanyName, \CCrmOwnerType::ContactName); $map[\CCrmOwnerType::CompanyName] = array(\CCrmOwnerType::CompanyName); $map[\CCrmOwnerType::ContactName] = array(\CCrmOwnerType::ContactName); $result = array(); foreach ($fields as $field) { if (!self::isFieldFilterable($field, $values)) { continue; } $id = $field['id']; foreach ($map as $prefix => $entityTypes) { $search = $prefix . '_'; if (mb_strpos($id, $search) !== 0) { continue; } foreach ($entityTypes as $entityTypeName) { $filterKey = "$entityTypeName.".mb_substr($id, mb_strlen($search)); if (!self::isFieldTypeFilter($field['type'])) { $filterKey = "=$filterKey"; } if ($field['multiple_uf'] ?? false) { $filterKey .= "_SINGLE"; } $field['sender_segment_filter'] = $filterKey; if (!isset($result[$entityTypeName])) { $result[$entityTypeName] = array(); } $result[$entityTypeName][] = $field; } break; } } self::$runtimeByEntity = []; foreach ($result as $entityTypeName => $fields) { $items = self::getFilterByFields($fields, $values, $entityTypeName); $result[$entityTypeName] = $items; } return $result; }