Вход | Регистрация
 

Работа с bitrix rest api

Работа с bitrix rest api
Я
   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-е число. Техподдрержка их молчит уже второй день, и инфы такой нигде нету.
 
 
   PR
 
1 - 30.01.19 - 14:52
(0) Гражданин, какое еще >=?
И зачем врать про нигде нету?
https://wonderland.v8.1c.ru/search/index.php?tags=OData
   Nyarlathotep
 
2 - 30.01.19 - 14:56
(1) Ты хоть тему то читал, чудо в перьях?
   Nyarlathotep
 
3 - 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, тоже самое...
   PR
 
4 - 30.01.19 - 15:10
А, Битрикс же, тогда пардоньте
   Nyarlathotep
 
5 - 30.01.19 - 15:11
(4) Пардоним.
   Маша с уралмаша
 
6 - 30.01.19 - 15:12
(4) в этот раз совсем уж жидко
   PR
 
7 - 30.01.19 - 15:17
(6) Что, Миша, неудачно сходил по нужде и тут же решил сообщить об этом на форуме да еще в тематической ветке?
Совсем ты не бережешь ники
   PR
 
8 - 30.01.19 - 15:23
(5) Может все-таки попробовать тогда нативные рестовские сравнения, ну то есть Lt Le Gt Ge Eq Ne
   Nyarlathotep
 
9 - 30.01.19 - 15:27
(8) Сделал вот так, не помогло

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

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

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

СтрПараметров =  "fields[NAME]=" + Имя + "&fields[SECOND_NAME]=" + Отчество + "&fields[LAST_NAME]=" + Фамилия + ...
   Nyarlathotep
 
18 - 30.01.19 - 15:39
(16) Ты тоже тему не читал?
   eklmn
 
19 - 30.01.19 - 15:39
(13)(15) вам как 1снэгам пример с 1са
http://catalog.mista.ru/public/574117/
   Nyarlathotep
 
20 - 30.01.19 - 15:40
(19) Без комментариев...
   yfylhjkjy
 
21 - 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
   eklmn
 
22 - 30.01.19 - 15:49
(20) что без комментариев? ты код не в состоянии прочитать?
   Nyarlathotep
 
23 - 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 там есть... Что я сделал не правильно?
   Nyarlathotep
 
24 - 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
   Nyarlathotep
 
25 - 30.01.19 - 16:45
(21) filter[>DATE_MODIFY]=2019-01-30&filter[<DATE_MODIFY]=2019-01-31

А вот так фильтрует правильно, если без времени. Выходит, у меня какой-то косяк с заданием времени? Что не так?
   Nyarlathotep
 
26 - 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

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

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

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

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

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

filter[ID]=1

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

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

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

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

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

Предположим, у меня есть пользовательское поле Подразделение, у него есть несколько предопределенных значений для выбора. Мне нужно все эти значения получить (ID и Value)? Документацию смотрел, там про это ничего нет. Это возможно вообще?
   Woold
 
36 - 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
   Nyarlathotep
 
37 - 22.02.19 - 14:38
(36) вот так сделал

crm.deal.userfield.get, ID для этого метода можно получить через crm.deal.userfield.list с фильтром по имени поля.
   Nyarlathotep
 
38 - 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/, ничего про это не нашел.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует