Документация для разработчиков
Темная тема

crm.contact.list

Возвращает список контактов по фильтру. Является реализацией списочного метода для контактов.

При выборке используйте маски:

  • "*" - для выборки всех полей (без пользовательских и множественных)
  • "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();						
				}
			}
		);		


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Эдуард Набиев
Пример с фильтром на 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;
    }
}
2
Никита Булгаков
Сообщение непромодерировано, возможны ошибки и неточности.
А как отфильтровать по множественным полям?
0
Дмитрий Кузьминич
Что бы добавить через 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'],
]);
3
Lev Shestopalov
Для фильтра по частичному совпадению поля контакта можно использовать процент:
Код
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-2020, «1С-Битрикс», 2020
Наверх