Возвращает список контактов по фильтру. Является реализацией списочного метода для контактов.
При выборке используйте маски:
- "*" - для выборки всех полей (без пользовательских и множественных)
- "UF_*"- для выборки всех пользовательских полей (без множественных)
Маски для выборки множественных полей нет. Для выборки множественных полей укажите нужные в списке выбора ("PHONE", "EMAIL" и так далее).
Для получения списка компаний, привязанных к контакту используйте метод crm.contact.company.items.get.
Внимание! Поля: телефон, почта, сайт, мессенджеры - множественные. По ним фильтры работают только на точное совпадение.
Параметры
Cм. описание списочных методов.
Пример
BX24.callMethod(
"crm.contact.list",
{
order: { "DATE_CREATE": "ASC" },
filter: { "TYPE_ID": "CLIENT" },
select: [ "ID", "NAME", "LAST_NAME", "TYPE_ID", "SOURCE_ID" ]
},
function(result)
{
if(result.error())
console.error(result.error());
else
{
console.dir(result.data());
if(result.more())
result.next();
}
}
);
//Поиск контакта по телефону
BX24.callMethod(
"crm.contact.list",
{
filter: { "PHONE": "555888" },
select: [ "ID", "NAME", "LAST_NAME" ]
},
function(result)
{
if(result.error())
console.error(result.error());
else
{
console.dir(result.data());
if(result.more())
result.next();
}
}
);
1
Эдуард Набиев
26.04.2020 10:42:18
|
Пример с фильтром на Java, фильтрация по пользовательскому полю - при этом Битрикс вернет контакт в "неполном" виде, поэтому нужные вам поля, указывайте в запросе: Пример на Java: 1. Метод сервиса, отвечающего за подачу запроса: Код |
---|
public String getContactByUF_CRM_1575385113(String myField) {//UF_CRM_1575385113 - пользовательское поле в Битрикс24
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("FILTER[UF_CRM_1575385113]", myField);
paramsMap.add("SELECT[]", "ID");
paramsMap.add("SELECT[]", "NAME");
paramsMap.add("SELECT[]", "LAST_NAME");
paramsMap.add("SELECT[]", "TYPE_ID");
paramsMap.add("SELECT[]", "COMMENTS");
paramsMap.add("SELECT[]", "EMAIL");
paramsMap.add("SELECT[]", "UF_CRM_1575385113");
String response = null;
try {
response = callApiGet("crm.contact.list", paramsMap);
logger.debug("UF_CRM_1575385113 {}", response);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return response; // возвращаем ответ Битрикс
} |
2. Десериализация ответа Битрикс: Код |
---|
public List<BitrixContactDto> deserializeContacts(String contactJsonString) {
List<BitrixContactDto> contacts = new ArrayList<>();
if (contactJsonString != null) {
ArrayNode arrayNode = null;
try {
arrayNode = (ArrayNode) objectMapper.readTree(contactJsonString).get("result");
} catch (IOException e) {
e.printStackTrace();
}
if (arrayNode != null) {
arrayNode.forEach(jsonNode -> contacts.add(deserializeBitrixContactDto(jsonNode)));
}
}
return contacts;
} |
3. Метод заполнения сущности BitrixContactDto: Код |
---|
private BitrixContactDto deserializeBitrixContactDto(JsonNode data) {
BitrixContactDto bitrixContactDto = new BitrixContactDto();
bitrixContactDto.setId(data.get("ID").asLong());
bitrixContactDto.setName(data.get("NAME").asText());
bitrixContactDto.setLastName(data.get("LAST_NAME").asText());
bitrixContactDto.setTypeId(data.get("TYPE_ID").asText());
bitrixContactDto.setComments(data.get("COMMENTS").asText());
if (data.get("EMAIL") != null) {
Set<String> emails = data.get("EMAIL").findValuesAsText("VALUE")
.stream().map(currentEmail -> currentEmail.toLowerCase()).collect(Collectors.toSet());
bitrixContactDto.setEmail(emails);
}
return bitrixContactDto;
} |
4. Объект BitrixContactDto: Код |
---|
public class BitrixContactDto { private Long id;
private String name;
private String lastName;
private String typeId;
private String comments;
private Set<String> email;
public BitrixContactDto() {}
public BitrixContactDto(Long id, String name, String lastName, String typeId, String comments) {
this.id = id;
this.name = name;
this.lastName = lastName;
this.typeId = typeId;
this.comments = comments;
}
} |
|
|
3
Никита Булгаков
21.09.2019 07:43:11
Сообщение непромодерировано, возможны ошибки и неточности.
|
А как отфильтровать по множественным полям?
|
|
0
Дмитрий Кузьминич
04.04.2017 16:33:22
|
Что бы добавить через PHP Лид с E-Mail , телефоном. Формат массива должен быть : Код |
---|
$name = 'TEST';
$email = 'test@test.ru';
$phone = '+375295957940';
$message = 'Тест лида!';
Call::Set('crm.lead.add', [
'fields' => [
'TITLE' => $name,
'NAME' => $name,
'EMAIL' => [['VALUE' => $email, 'VALUE_TYPE' => 'WORK']],
'PHONE' => [['VALUE' => $phone, 'VALUE_TYPE' => 'WORK']],
'STATUS_ID' => 'NEW',
'SOURCE_ID' => 'WEB',
'ASSIGNED_BY_ID' => '10',
'COMMENTS' => $message,
],
'params' => ['REGISTER_SONET_EVENT' => 'Y'],
]); |
|
|
4
Lev Shestopalov
08.08.2013 12:55:27
|
Для фильтра по частичному совпадению поля контакта можно использовать процент: Код |
---|
BX24.callMethod(
"crm.contact.list",
{
order: { "DATE_CREATE": "ASC" },
filter: { "%NAME": 'Ив' },
select: [ "ID", "NAME", "LAST_NAME", "TYPE_ID", "SOURCE_ID" ]
},
function(result)
{
console.log(result.data());
}
; |
|
|
© «Битрикс»,
2001-2021,
«1С-Битрикс», 2021
Наверх
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.