|   |   | 
| 
 | Работа с 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/, ничего про это не нашел. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |