Имя: Пароль:
1C
 
Работа с bitrix rest api
0 Nyarlathotep
 
30.01.19
14:39
Всем привет!

Никто не работал случайно с Битрикс rest api? Нужно из 1с http запросом получить список сделок из Битрикс 24. Использую вот этот метод - https://dev.1c-bitrix.ru/rest_help/crm/cdeals/crm_deal_list.php. Нужно получить список сделок с определенным значением поля "DATE_MODIFY". В их статье пример для их фреймворка на js, там все понятно. Но как задать этот фильтр, если я делаю прямой http запрос? В каком формате передать дату? Сделал вот так - "rest/crm.deal.list?auth=МойAccessToken&"DATE_MODIFY">=28.01.2019 0:00:00&"DATE_MODIFY"<=28.01.2019 23:59:59". Нифига, все равно возвращает мне сделки с датой модификации за 29-е число. Техподдрержка их молчит уже второй день, и инфы такой нигде нету.
1 PR
 
30.01.19
14:52
(0) Гражданин, какое еще >=?
И зачем врать про нигде нету?
https://wonderland.v8.1c.ru/search/index.php?tags=OData
2 Nyarlathotep
 
30.01.19
14:56
(1) Ты хоть тему то читал, чудо в перьях?
3 Nyarlathotep
 
30.01.19
15:05
(0) Посмотревши, что возвращает мне Битрикс, отправил ему дату в том же формате, в котором он возвращает, вот так

rest/crm.deal.list?auth=МойAccessToken&"DATE_MODIFY">=2019-01-28Т00:00:00&"DATE_MODIFY"<=2019-01-28Т23:59:59, тоже самое...
4 PR
 
30.01.19
15:10
А, Битрикс же, тогда пардоньте
5 Nyarlathotep
 
30.01.19
15:11
(4) Пардоним.
6 Маша с уралмаша
 
30.01.19
15:12
(4) в этот раз совсем уж жидко
7 PR
 
30.01.19
15:17
(6) Что, Миша, неудачно сходил по нужде и тут же решил сообщить об этом на форуме да еще в тематической ветке?
Совсем ты не бережешь ники
8 PR
 
30.01.19
15:23
(5) Может все-таки попробовать тогда нативные рестовские сравнения, ну то есть Lt Le Gt Ge Eq Ne
9 Nyarlathotep
 
30.01.19
15:27
(8) Сделал вот так, не помогло

rest/crm.deal.list?auth=МойAccessToken&filter[]={">=DATE_MODIFY":"2019-01-28"}&filter[]={"<=DATE_MODIFY":"2019-01-29"}
10 Garikk
 
30.01.19
15:31
не сталкивался с битриксом, но вообще это точно не так делается как вы пробуете
(хотя от битрикса что угодно ожидать можно
11 PR
 
30.01.19
15:33
(9) И где у тебя Lt Le Gt Ge Eq Ne?
И для начала попробуй с чем-нить попроще, с реквизитом типа число или строка, там точно не будет проблем с форматом даты
12 Nyarlathotep
 
30.01.19
15:33
(10) А как по вашему? Можете какой-нибудь пример привести, любой?
13 Garikk
 
30.01.19
15:33
(10) нельзя использовать "><=" в get параметрах, {">=DATE_MODIFY":"2019-01-28"} -- это вообще дичь какаято честно говоря
14 Garikk
 
30.01.19
15:35
обычно постфиксы к параметрам добавляют типа eq вместо ==, ge вместо <

типа DATE_MODIFY_ge=2019-01-28 --- дата больше чем

==
не фак что это так в вашем случае, но на правду больше похоже
15 PR
 
30.01.19
15:36
(13) Это видимо Битрикс потом заменяет на всякие Lt Le Gt Ge Eq Ne
16 eklmn
 
гуру
30.01.19
15:39
(11) зачем гадать, когда есть документация? Чел просто не знает основ работы битрикса и что-то хочет получить. непонятно что ему понятно, если даже в доке надо передавать массив параметров
17 Nyarlathotep
 
30.01.19
15:39
(14) Ну, если посмотреть вот сюда http://catalog.mista.ru/public/574117/, тут товарищ пишет просто равно, в строке

СтрПараметров =  "fields[NAME]=" + Имя + "&fields[SECOND_NAME]=" + Отчество + "&fields[LAST_NAME]=" + Фамилия + ...
18 Nyarlathotep
 
30.01.19
15:39
(16) Ты тоже тему не читал?
19 eklmn
 
гуру
30.01.19
15:39
(13)(15) вам как 1снэгам пример с 1са
http://catalog.mista.ru/public/574117/
20 Nyarlathotep
 
30.01.19
15:40
(19) Без комментариев...
21 yfylhjkjy
 
30.01.19
15:42
crm.invoice.list
order[ID]=ASC&filter[>DATE_UPDATE]=2016-01-23T9:31:54&filter[<DATE_UPDATE]=2018-01-23T9:31:54
22 eklmn
 
гуру
30.01.19
15:49
(20) что без комментариев? ты код не в состоянии прочитать?
23 Nyarlathotep
 
30.01.19
15:56
(21) Сделал вот так filter[>DATE_MODIFY]=2019-01-29Т00:00:00&filter[<DATE_MODIFY]=2019-01-29Т23:59:59

В ответ вот это:

{"result":[],"total":0,"time":{"start":1548852819.7938,"finish":1548852819.8978,"duration":0.10399103164673,"processing":0.053222894668579,"date_start":"2019-01-30T15:53:39+03:00","date_finish":"2019-01-30T15:53:39+03:00"}}

Я так понимаю, оно ничего не нашло, но данные с такой датой модификации 2019-01-29 там есть... Что я сделал не правильно?
24 Nyarlathotep
 
30.01.19
15:57
(21) Такой полный запрос получился rest/crm.deal.list?auth=МойAccessToken&filter[>DATE_MODIFY]=2019-01-29Т00:00:00&filter[<DATE_MODIFY]=2019-01-29Т23:59:59
25 Nyarlathotep
 
30.01.19
16:45
(21) filter[>DATE_MODIFY]=2019-01-30&filter[<DATE_MODIFY]=2019-01-31

А вот так фильтрует правильно, если без времени. Выходит, у меня какой-то косяк с заданием времени? Что не так?
26 Nyarlathotep
 
30.01.19
17:15
(25) Попробовал двоеточия передать urlecode, вот так filter[>DATE_MODIFY]=2019-01-30Т00%3A00%3A00&filter[<DATE_MODIFY]=2019-01-31Т23%3A59%3A59

Тоже не работает.
27 Nyarlathotep
 
30.01.19
17:16
(25) Без времени конечно тоже норм, мне нужно за 1 день, но хотелось все же разобраться...
28 Nyarlathotep
 
31.01.19
12:47
ап.
29 eklmn
 
гуру
31.01.19
14:16
[<DATE_MODIFY]=2019-01-29 23:59:59
30 Nyarlathotep
 
31.01.19
17:33
(29) Нет, братишка, так фильтр вообще не работает.
31 VS-1976
 
31.01.19
18:02
OData это формат M$... битрикс или не битрикс всё должно быть одинаково. Смотри как составить запрос в OData
32 Nyarlathotep
 
31.01.19
18:03
(21) Видимо, я вчера где-то ошибся с написанием запроса, сегодня сделал еще раз - все работает, как ты написал. Спасибо, братишка, ты просто GOD, реально затащил.

вот такой рабочий фильтр получился, с датой и временем

filter[>DATE_MODIFY]=2019-01-31T14:00:00&filter[<DATE_MODIFY]=2019-01-31T17:59:59
33 Nyarlathotep
 
19.02.19
17:13
В продолжении темы:

Как передать для фильтра массив значений?

Предположим, я делаю запрос на crm.deal.list с таким фильтром для получения одной сделки, у которой ID = 1:

filter[ID]=1

но мне нужно получить сделки с ID 1, 2 и 3. Как мне передать этот массив значений в параметре?
34 Nyarlathotep
 
19.02.19
18:04
(33)

Оказывается, вот так:

filter[ID][0]=1493&filter[ID][1]=1447

Сам спросил, сам ответил, называется...
35 Nyarlathotep
 
21.02.19
17:00
Следующий раунд:

Теперь нужно получить все возможные значения пользовательского поля.

Предположим, у меня есть пользовательское поле Подразделение, у него есть несколько предопределенных значений для выбора. Мне нужно все эти значения получить (ID и Value)? Документацию смотрел, там про это ничего нет. Это возможно вообще?
36 Woold
 
21.02.19
17:37
(35) касательно начального запроса (мб на будущее пригодится) - когда я тянул таблички из битрикс для написание запроса использовал метод php http_build_query - простенький код в любом онлайн компиляторе, по типу для параметров auth ORDER FILTER PARAMS запрос будет следующим
"<?php

// Пример для работы с php
// Получение GET-запроса на выборку данных.
$appParams = array(
     "auth" => '92006f4ae0c55d400f1e6e09428af64a',
     "ORDER" => array("DEADLINE" => "desc"),
     "FILTER" => array(">ID" => 1),
     "PARAMS" => array('NAV_PARAMS' => array("nPageSize" => 2, 'iNumPage' => 2)),
);

print(http_build_query($appParams));;

?>"

результатом работы будет строка параметров "auth=92006f4ae0c55d400f1e6e09428af64a&ORDER%5BDEADLINE%5D=desc&FILTER%5B%3EID%5D=1&PARAMS%5BNAV_PARAMS%5D%5BnPageSize%5D=2&PARAMS%5BNAV_PARAMS%5D%5BiNumPage%5D=2", которая прекрасно кушается битриксом
ну а с подразделением возможны варианты - если используются только предопределенные значения и их мало - проще захардкодить (вернет идшник вроде) -  в любом случае, посмотрите в отладке, можно разобрать самостоятельно, если их много - то попробовал бы вытащить через функцию GetList
37 Nyarlathotep
 
22.02.19
14:38
(36) вот так сделал

crm.deal.userfield.get, ID для этого метода можно получить через crm.deal.userfield.list с фильтром по имени поля.
38 Nyarlathotep
 
01.03.19
12:31
Следующий раунд:

В Битрикс 24 у компании и контакта есть поле Реквизиты, где можно указать паспортные данные, банковские реквизиты, адресные сведения и т.п. (см. скриншот https://drive.google.com/file/d/1BjoVXCWEHy-blXDlezaBAKdc-ecTBSLw/view?usp=sharing). Как можно получить значения этих полей для конкретного контакта или компании, например, по ID, с помощью rest api? Смотрел официальную документацию от Битрикс тут https://training.bitrix24.com/rest_help/, ничего про это не нашел.