IE 2018
0. user662672_explorer2000 125 09.01.17 09:01 Сейчас в теме

Передаем контакты из 1С в Битрикс24 через REST API

Хочу поделиться опытом использования Битрикс24 REST API для экспорта контактов из 1С УТ 11

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. script 190 09.01.17 20:07 Сейчас в теме
У меня к Вам огромная просьба. Покажите пожалуйста в какую сторону копать если нужно передавать из 1С реализации а в битрикс 24 загружать "Сделки"
2. user662672_explorer2000 125 10.01.17 08:38 Сейчас в теме
Добрый день! Смотрите офф документацию, в частности по сделкам http://dev.1c-bitrix.ru/rest_help/crm/cdeals/index.php. Для создания сделки используйте метод crm.deal.add. Перечень передаваемых полей доступен там же. Такой сущности, как реализация нет в Битрикс24, возможно это счета? по ним вся информация здесь http://dev.1c-bitrix.ru/rest_help/crm/invoice/index.php. Там примеры к сожалению только на js, так что пробуйте и смотрите что возвращается в качестве ответа. Если ошибка, то будет описание ошибки.
3. bulpi 131 10.01.17 14:03 Сейчас в теме
Люди, а вы не в курсе, что существует вот это :
http://1c.1c-bitrix.ru/intranet/download.php
Там готовые модули, в частности для УТ 11.1 есть.
Выгружаются организации, контрагенты, контактные лица партнеров, реализации....
Но плюс поставлю, т.к. метод реализован другой.
5. script 190 10.01.17 18:52 Сейчас в теме
(3) И не только смотрели, но и внедрили. Только когда внедрили, то оказалось что это полная ерунда.
Выгружает
Из 1С контрагенты в Б24 в клиенты
Из 1С конт. лица в Б24 в контакты
Из 1С все (любые) документы в Б24 в Дела
И все.

А внутри просто шлак. Запросы к базе через две точки.
Обращение к несуществующим полям в справочниках из-за которых все это сразу вываливается в ошибки.
Пишешь на поддержку - тебе дают 1С-ника, который лезет в запросы. Начинает там начинает ограничивать поля неограниченной длины - при тебе.
А сам модуль добавляет столько мусора, столько лишних объектов, что только из-за этого уже начинаешь жалеть что связался с ним.
user731236; VachKirp; Aquashop; Starec_I; +4 Ответить
12. Alister 9 24.04.17 20:01 Сейчас в теме
(5) еще замечательная поддержка, которая долго ищет какой релиз какой редакции УТ 11 минимально нужен для работы с Б24, а потом не могут объяснить какой же модуль используется для интеграции с УТ - трекер или модуль обмена с сайтом и чем они отличаются.
user731236; IgorS; +2 Ответить
38. amd1986 07.11.17 13:08 Сейчас в теме
(5) только по ходу не поняли, что это и как это работает. Иначе бы не городили бы новое приложение, а использовали уже готовый для 1С трекера. Не говоря о том, что трекер смотрели старой версии.
Запросы к базе через две точки.
Всякое может быть, не спорю. Если бы делали наиболее оптимальные запросы , то такие как вы еще сильнее взвыли бы.
Обращение к несуществующим полям в справочниках из-за которых все это сразу вываливается в ошибки.
Может не читали для какого релиза этот модуль? Ну как всегда, виноваты все, кроме вас..
Начинает там начинает ограничивать поля неограниченной длины - при тебе
И что хотели сказать?
А сам модуль добавляет столько мусора, столько лишних объектов, что только из-за этого уже начинаешь жалеть что связался с ним.
Может потому что это универсальный модуль,а не только под вас?

Да, судя по реализации - опрятно написано, но малофункционально.
39. user662672_explorer2000 125 07.11.17 13:42 Сейчас в теме
(38) Уважаемый, это по сути инструмент, а не законченный функционал. Синхронизация контактов одно из применений. Подставьте методы работы с лидами, сделками и т.д., оберните логикой и получите нужный функционал. Это не универсальное решение и для применения требует программирования.
40. amd1986 08.11.17 15:33 Сейчас в теме
(39) да это все понятно. Пост был адресован не вам.
4. user662672_explorer2000 125 10.01.17 14:39 Сейчас в теме
Тут неверно я указал привязку к УТ. Данный код можно использовать в любой конфигурации, даже под которую нет готовых модулей. Да и функционал можно реализовать какой угодно, т.к. доступен любой метод REST API
6. script 190 11.01.17 03:28 Сейчас в теме
И еще один вопрос.
Это доступ через REST API работает и на облачной версии или только в коробке?
8. kuntashov 361 12.01.17 17:25 Сейчас в теме
(6) Все нововведения у Б24 сначала в облаке. В коробке REST API добавили совсем-совсем недавно.
7. user662672_explorer2000 125 11.01.17 06:32 Сейчас в теме
На облачной работает точно, проверялось на ней. С коробочной не проверял, ее просто нет.
9. alprk 13.01.17 10:15 Сейчас в теме
Спасибо что поделились, как раз собирались городить свои костыли к Б24))
10. alprk 13.01.17 10:36 Сейчас в теме
Удивило что вы сделали авторизацию по логину и паролю. Почему бы не получить токен единожды, регулярно его обновляя?
Хотя конечно определенные плюсы в этом есть, особенно если вызовы нерегулярные. Я например даже не думал что оно даст авторизоваться по Basic, даже через curl проверил сейчас что оно работает, но вдруг перестанет (в документации ведь об этом ни слова).
11. user662672_explorer2000 125 13.01.17 12:20 Сейчас в теме
(10) Я вроде бы так и хотел сделать) Первоначально по логину и пароль получаю AccessToken и RefreshToken. Далее если время жизни токена истекло, уже обновляю его.
13. user755384 20.05.17 00:17 Сейчас в теме
Большое спасибо за статью! Очень помогла. Если знаете, подскажите, пожалуйста, в каком виде параметры (СтрПараметров) передавать в функцию для добавления товарных позиций к сделке. (crm.deal.producrows.set). Передаю
СтрПараметров = "id="+ИДСделки+
"&rows[PRODUCT_ID]="+ИдТовара+
"&rows[PRICE]="+"100"+
"&rows[QUANTITY]=1";
Ошибки не выдает, но и товары не добавляет.
14. user662672_explorer2000 125 22.05.17 06:47 Сейчас в теме
Вам нужно переделать передачу параметров вот так:

СтрПараметров = "id="+ИДСделки+

"&rows[0][PRODUCT_ID]="+ИдТовара1+
"&rows[0][PRICE]="+"100"+
"&rows[0][QUANTITY]=1"+

"&rows[1][PRODUCT_ID]="+ИдТовара2+
"&rows[1][PRICE]="+"500"+
"&rows[1][QUANTITY]=5";

Рез = ОтправитьRESTЗапрос("crm.deal.productrows.set", СтрПараметров, "");
15. dimasts 23 02.06.17 19:22 Сейчас в теме
Если авторизоваться по токену а не по логину и паролю, получится [ASSIGNED_BY_ID] правильно передавать??? Кто нибудь пробовал?

Просто это то, ради чего мы затеваем всю интеграцию :)
16. user662672_explorer2000 125 05.06.17 08:39 Сейчас в теме
Первоначальная регистрация по логину\паролю. Вы получаете токен время жизни которого ограничено. По истечении этого времени Вы обновляете токен без использования логина\пароля. Нужен старый токен, client_id и client_secret. Посмотрите процедуру ПроверитьТокен(). ASSIGNED_BY_ID присваивается автоматом. По идее его и в параметрах можно передавать, но у меня всегда ответственный тот, под кем я залогинился. Возможно нужны администраторские права. Точно не знаю.
mila_nikolaeva; dimasts; +2 Ответить
17. dimasts 23 30.06.17 07:42 Сейчас в теме
ASSIGNED_BY_ID сделал равным 2
Контакт создался с ответственным с чужого портала!
Чё так правда можно?!
NewLifeMan; +1 Ответить
18. dimasts 23 09.07.17 09:27 Сейчас в теме
В названии надо использовать слово «Забираем», а не «Передаём», так как передать из Битрикс24 что либо в 1с ни фига не просто. Создать http-сервис и зарегистрировать обработчик события в Битрикс24 дело не хитрое. А вот как заставить эти события срабатывать и переходить по запросам, которые к ним привязаны? Причём этот запрос в браузере работает как часы. а тут ещё Заговор
19. dimasts 23 09.07.17 15:11 Сейчас в теме
(18)Причина была в том что в 1с метод был установлен GET. Лучше сначала устанавливать Любой, чтобы проверить, а потом уже определяться с каким работать.
24. wiseowl 17.10.17 10:48 Сейчас в теме
(19) посмотрите, пожалуйста, мой вопрос ниже, может быть вы сможете мне помочь...
20. user662672_explorer2000 125 10.07.17 07:47 Сейчас в теме
(18) Контакты все же мы передаем (экспортируем или назовите как хотите, сути не меняет) из 1С в Битрикс24. О чем Вы пишите не тема статьи. Хотите забирать информацию из Битрикс24? Делайте аналогично, забирайте контакты с фильтром по незаполненности ORIGIN_ID например. При записи контакта в 1С пишите его GUID в ORIGIN_ID
21. bytecoded 25 25.08.17 16:08 Сейчас в теме
А с локализациями не пробовали работать? Пробую создавать валюты, одна не удается задать локализацию — если задавать через параметр LANG при вызове currrency.add, то ругается на пустое поле Format (которого в перечне полей локализации вообще нет). Если уже после создания валюты вызвать currency.localizations.set — ошибок нет, но и данные валюты, касающиеся локализаций, никак не изменяются.
22. Milanick 03.09.17 15:19 Сейчас в теме
23. wiseowl 17.10.17 10:42 Сейчас в теме
Делала по вашему примеру. Мне нужно почти тоже самое, только токен необходимо получить для power BI и данные отправлять туда.

Пишу get запрос (текст ниже), при использовании защищенного сертификата не происходит перенаправление по ссылке, которая указана в redirect_uri, если использовать http, то происходит постоянное перенаправление на тот же адрес, но уже с https соединением.
При проверке в браузере, перенаправление происходит и все нормально. Как можно решить эту проблему?

При перенаправлении на office.com я должна в строке получить параметр "code", который потом хочу использовать для получения токена приложения.
В Set-Cookie есть такое поле как "buid" это одно и тоже? Если да, то в принципе я могу использовать его в качестве кода авторизации, но проблему с перенаправлением все равно надо как то решить, так как при получении токена с запросом тоже самое, редирект не происходит...

Адрес="login.microsoftonline.com";
АдресРесурса="&response_mode=query&response_type=code&redire­­ct_uri=https%3A%2F%2Fwww.office.com%2F&nux=1&msafed=0";
client_id="3bf6d724-6dae-4177-a437-cd1e20619bd8";
//Если НЕ (AccessToken = "" ИЛИ RefreshToken = "" ИЛИ RefreshTime = Дата(1, 1, 1)) Тогда
//        
//        Возврат;
//        
//    КонецЕсли;

     
    ssl = Новый ЗащищенноеСоединениеOpenSSL();
                //Новый СертификатКлиентаWindows(
                // СпособВыбораСертификатаWindows.Выбирать),
                //Новый СертификатыУдостоверяющихЦентровWindows());   
                         
    Соединение = Новый HTTPСоединение(
                            Адрес, //"хххххх.bitrix24.ru",
                            , // порт
                            , // пользователь
                            , // пароль
                            , // прокси
                            , // таймаут в секундах
                           ssl  // защищенное HTTPS соединение
                        );
                        
                        
    //Заголовки = Новый Соответствие;
    
    Запрос = Новый HTTPЗапрос("/common/OAuth2/Authorize?client_id=" + client_id + АдресРесурса);                    
    Ответ = Соединение.Получить(Запрос);
    
     Сообщить (Ответ.КодСостояния);      
    АдресРесурса = Ответ.Заголовки.Получить("Location");
    Сообщить (АдресРесурса);
Показать
25. MakarkinPRO 28.10.17 16:46 Сейчас в теме
А есть наоборот из Битрикс24 в 1С, чтобы Битрикс24 (компании контакты) была материнская система.
28. user662672_explorer2000 125 30.10.17 14:07 Сейчас в теме
(25) Есть приложение, которое импортирует сделки в 1С. В периодическом задании запускается процедура, которая через функцию crm.deal.list получает ID сделок, у которых ORIGIN_ID не заполнено. По каждой сделке в 1С создается заказ, GUID заказа записывается в ORIGIN_ID лида. Точно так же по клиентам и контактам. Это по новым, а вот как отреагировать на изменение сделок вопрос. Нужно подписаться на событие, но URL не указать никакой, чисто средствами 1С не обойтись
33. MakarkinPRO 30.10.17 21:04 Сейчас в теме
34. user662672_explorer2000 125 30.10.17 21:19 Сейчас в теме
(33) Я немного наврал, клиент захотел лиды из Битрикс24 трансформировать в клиентские заказы в УТ. Т.е. ни сделки и ни счета. Давненько было..
26. Milanick 28.10.17 18:35 Сейчас в теме
А как в REST API обходится вывод больше 50 ?

Например ,хочу получить список пользователей, а там больше 50 пользователей не выводит :(. А у меня их больше 200 :(
29. user662672_explorer2000 125 30.10.17 14:12 Сейчас в теме
(26) Из документации: Списочные методы возвращают данные страницами по 50 элементов (число может изменяться). Для получения следующей страницы данных к запросу нужно добавить параметр start со значением, пришедшем в параметре next ответа. Ссылка https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php
27. salex2002 29.10.17 15:52 Сейчас в теме
Почему-то по стандартной схеме не могу модифицировать сделку crm.deal.update

Результат = ОтправитьRESTЗапросPOST("crm.deal.update", "id="+ИДКлиента+"&fields[TITLE]="+Выборка.Представление,"")



возвращает Неопределено.
30. user662672_explorer2000 125 30.10.17 14:18 Сейчас в теме
(27) Сложно что-то сказать, возможна ошибка при получении токена. Зайдите
отладчиком в ОтправитьRESTЗапросPOST
31. salex2002 30.10.17 17:06 Сейчас в теме
(30)
Да другие методы работают через ОтправитьRESTЗапросPOST, тот же crm.deal.add. Используется ваша обработка 685093. Может в самом портале что-то включить. Пока его в базовом бесплатном варианте использую для тестов.
32. salex2002 30.10.17 17:23 Сейчас в теме
(31) Включил демо-режим "Компания" - заработал crm.deal.update
35. TSRh 01.11.17 18:27 Сейчас в теме
Здравствуйте всем!

oauth/token/?grant_type=authorization_code
&client_id=local.59f9cc5662a690.43624909
&client_secret=PA5VfcmiEtE8rzkzJupvo0OX468IDPBvuZGTfYaFs3Oae­XMCOs
&code=8za5opd5bvd6hoynktv351l4zuzn0du2

КодСостояния: 400
Тело: {"error":"invalid_client1"}

В чём может быть проблема ?
36. isaev2016 02.11.17 12:03 Сейчас в теме
Справился ли кто с crm.activity.list и "COMMUNICATIONS" ? Не могу ни прочитать, ни установить правильно. Пока веду активную переписку с ТП Битрикс24
37. TSRh 02.11.17 17:48 Сейчас в теме
Мой вопрос снимается, была ошибка в тексте
41. user880839 15.12.17 11:53 Сейчас в теме
Немного припозднился к разговору. Заведение нового Клиента получилось сразу. Спасибо! А вот с чтением данных из Bitrixa проблема. Хочу получить Контакт по методу crm.contact.get, а вот как задать ID в параметрах ни как не догоню... Ругается на то, что параметр вообще не задан. "ID is not defined or invalid."
74. Mva_72 21.05.18 17:57 Сейчас в теме
(41)
А подскажите, пожалуйста,как вы передали id?
75. user662672_explorer2000 125 22.05.18 07:56 Сейчас в теме
(74) разве вот так ОтправитьRESTЗапрос("crm.contact.get", "id=12345", ""); не работает?
76. Mva_72 22.05.18 10:58 Сейчас в теме
42. user880839 15.12.17 13:07 Сейчас в теме
Результат получил (нельзя пробелы указывать при задании параметров), но все значения в полях указаны отдельно по буквам. Сейчас посмотрю, что можно сделать.
43. user880839 15.12.17 15:12 Сейчас в теме
Преодолеть последствия экранирования (замены русских букв) в ответе на запрос помогла функция

Функция УТФвСтроку(ВхСтр)
ВыхСтр="";
поз=1;
Пока поз<СтрДлина(ВхСтр) Цикл
симв=Сред(ВхСтр,поз,1);
Если симв="\" И Сред(ВхСтр,поз+1,1)="u" Тогда
поз=поз+2;
Вес=4096;
ВыхКод=0;
Для п=0 По 3 Цикл
кодСимв=КодСимвола(ВхСтр,поз+п);
Если кодСимв>96 Тогда // a-f
кодСимв=кодСимв-87;
ИначеЕсли кодСимв>64 Тогда // A-F
кодСимв=кодСимв-55;
Иначе
кодСимв=кодСимв-48; // 0-9
КонецЕсли;
ВыхКод=ВыхКод+кодСимв*Вес;
Вес=Вес/16;
КонецЦикла;
ВыхСтр=ВыхСтр+Символ(ВыхКод);
поз=поз+4;
Иначе
ВыхСтр=ВыхСтр+симв;
поз=поз+1;
КонецЕсли;
КонецЦикла;
Возврат ВыхСтр;
КонецФункции

Спасибо добрым людям.

Но это я похоже сам с собой сегодня на форуме разговариваю...
44. user662672_explorer2000 125 18.12.17 07:36 Сейчас в теме
Добрый день!

ПрочитатьJSON не выполняет эту же конвертацию? Не было проблем с получением текста на кириллице
45. ikekoval 81 21.12.17 15:04 Сейчас в теме
(0) Автор, Спасибо за статью! Очень помогла, когда писал выгрузку компаний. Столкнулся с проблемой скудности описания данных в https://dev.1c-bitrix.ru/rest_help
Метод "crm.company.add". Не могу передать адрес компании. Во 1х данные не сохраняются в нужных полях, во 2х не понимаю где они должны отображаться. При запросе "crm.company.get(id)" поля есть, но они пустые.
Метод "crm.company.update". Телефон, почта не затираются, а создаются дополнительные с теми же данными (дубль). Параметр "fields" одинаковый для обоих методов и ниже живой пример. Что делаю не так? Пробовал адрес исполнить как массив, хоть судя по описанию полей он не множественный через &fields[ADDRESS][0][VALUE]=123022

fields[TITLE]=ООО "Рога-Копыта"&fields[COMPANY_TYPE]=Клиент&fields[ADDRESS]=123022, Москва г, Звенигородская 2-я ул, дом № 13, строение 37&fields[ADDRESS_CITY]=Москва г&fields[ADDRESS_COUNTRY_CODE]=643&fields[ADDRESS_COUNTRY]=Российская Федерация&fields[ADDRESS_POSTAL_CODE]=123022&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=+7 (495) 999-11-22

"во 2х не понимаю где они должны отображаться" - к таблицам company может пристегиваться таблица "crm.requisite". На каком-то этапе после записи компании я добавлял к ней запись об организации, но в интерфейсе эти данные я видел только в окне редактирования и с адресами там тоже не срослось, а добавлять всё нужное через пользовательские поля не решился.
46. user662672_explorer2000 125 26.12.17 08:11 Сейчас в теме
Добрый день! телефон для контакта добавляю\обновляю например так "....&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=+71111111111....", работает ...
47. isaev2016 27.12.17 04:38 Сейчас в теме
Сегодня авторизация отвалилась, пока нашел что вместо 302 возвращает состояние 200..
48. user662672_explorer2000 125 28.12.17 08:32 Сейчас в теме
(47) такое впечатление, что 26-го вечером что-то было, работающие закачки вываливались в неожиданных местах. Все восстановилось, даже не успел толком разобраться, с 27-го точно уже все работает
49. baracuda 3 20.02.18 22:51 Сейчас в теме
Автору лайк. Можно в личку пару вопросиков. Сейчас курю интеграцию самописной конфы с битриксом...
50. user662672_explorer2000 125 21.02.18 06:39 Сейчас в теме
Добрый день! Конечно пишите, постараюсь ответить
51. pbabincev 96 22.02.18 14:50 Сейчас в теме
Добрый день.
Спасибо за статью, думаю, что многим она пригодилась, в том числе и мне.

Опишу как в итоге сделал я. Ключевое - то, что я использовал веб-хуки и для формирования тела запроса использовал штатную сериализацию JSON.
Надеюсь, кому-нибудь пригодится.


Например, для добавления поста в живую ленту мне же:


Функция ТестПостВЖивуюЛенту() Экспорт 
	
	ПараметрыЗапроса = Новый Структура;
	
	
	
	Метод = "log.blogpost.add";
	
	SPERM_U = Новый Массив;
	SPERM_U.Добавить("U254"); // это ID пользователя, которому дать доступ читать этот пост
	
	ПараметрыЗапроса.Вставить("POST_MESSAGE", 	"Hello, World!");
	ПараметрыЗапроса.Вставить("POST_TITLE", 	"title - 3");
	ПараметрыЗапроса.Вставить("SPERM", 			Новый Структура("U", SPERM_U));
	
	
	ПараметрыЗапроса = СериализоватьВJSON(ПараметрыЗапроса);
	
	Возврат ВыполнитьЗапрос(Метод, ПараметрыЗапроса);
	
КонецФункции

Функция ВыполнитьЗапрос(Метод, Знач ПараметрыЗапроса)

	АдресСервера = "mycompany.bitrix24.ru";
	АдресРесурса = "/rest/254/xxxxxxxxxx/" + Метод + ".json"; // тут "254" - пользователь, от имени которого опубликован веб-хук; "xxxxxxxxxx" - сам веб-хук
	
	
	Попытка
		HTTPСоединение = Новый HTTPСоединение(АдресСервера, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL); // соединяемся по https
	Исключение
		Возврат ОписаниеОшибки();
	КонецПопытки;
	
	
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Accept-Language", "ru");
	Заголовки.Вставить("Accept-Charset", "utf-8");
	Заголовки.Вставить("Content-Language", "ru");
	Заголовки.Вставить("Content-Charset", "utf-8");
	Заголовки.Вставить("Content-type", "application/json"); // тут обозначаем, что "общаемся" через JSON
	
	HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
	HTTPЗапрос.УстановитьТелоИзСтроки(ПараметрыЗапроса);
	
	
	HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	
	
	ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
	
	
	Строка = ДесериализоватьИзJSON(ТелоОтвета);
	
	Возврат HTTPОтвет.КодСостояния;
	
КонецФункции

Функция СериализоватьВJSON(ПараметрыЗапроса)
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, , ));
	ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
	
	ПараметрыJSON = ЗаписьJSON.Закрыть();
	
	Возврат ПараметрыJSON;

КонецФункции

Функция ДесериализоватьИзJSON(СтрокаJSON)
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
	Строка = ПрочитатьJSON(ЧтениеJSON);
	
	Возврат Строка;
	
	
КонецФункции

Показать


Как мы видим, всё просто и логично :-)
52. amd1986 12.03.18 20:04 Сейчас в теме
(51) У вас все просто до того момента, пока не наткнетесь в ограничение в 2 запроса в секунду.
53. pbabincev 96 13.03.18 21:55 Сейчас в теме
(52)
Это ограничение продиктовано вэбхуком?
54. amd1986 14.03.18 11:43 Сейчас в теме
(53) Нет, нагрузкой на Б24. Нужно передавать пакетами по 50 элементов.
55. Milanick 15.03.18 08:40 Сейчас в теме
Ребята помогите пожалуйста с такой ерундой как Универсальные списки.
Есть примеры работы с ними через rest api ?
56. harmless 09.04.18 13:57 Сейчас в теме
Подскажите как сформировать тело POST запроса для передачи не одного, а массива контактов. Такое возможно?
57. user662672_explorer2000 125 10.04.18 07:54 Сейчас в теме
(56) на мой взгляд такое нельзя, crm.contact.add хоть через GET, хоть через POST подразумевает передачу одного контакта
58. amd1986 10.04.18 18:45 Сейчас в теме
(56)Можно через batch запрос. Пример посмотреть, как реализовано, можно в новом модуле синхронизации от Битрикса
harmless; +1 Ответить
59. user662672_explorer2000 125 11.04.18 09:17 Сейчас в теме
60. kobal 11.04.18 14:02 Сейчас в теме
Всем привет.
Озадачился вопросом слива Задач из Б24 в 1С для выстраивания очереди выполнения задач.
Приоритетность будет строиться исходя из данных о клиентах в 1Ске (важность, срочность и тд)
Прочитав ленту понимаю, что есть проблема слива обновленных задач (перенесли дату, ответственного и т.д.)
Но на первом этапе стоит задача просто слить все задачи в 1Ску.
Кто может поделиться кодом?
Спасибо.
61. amd1986 11.04.18 15:28 Сейчас в теме
(60) Используйте новый механизм регистрации изменений. Если для задач есть событий(при добавлении/обновлении задачи), тогда взлетит.
62. pbabincev 96 16.04.18 12:03 Сейчас в теме
(61)
Александр, можете уточнить - вы имеете в виду то, что в Б24 появился механизм регистрации изменений? Давно он там есть?
Спасибо.
63. amd1986 16.04.18 19:30 Сейчас в теме
(62)Примерно месяц - полтора. С выходом нового модуля синхронизации в режиме реального времени.
Смысл логики такой:
1) Цепляем офлайн события на нужные типы данных в Б24.
2) Когда зацепленное событие выполняется, то записывается инфа о событии и ид элемента в спец таблицу.
3) HTTP запросом С получаем данные из этой таблицы и обрабатываем.

Также реализован спец метод push&pull сервера, который сразу сообщает, что появилось хоть одно новое офлайн событие(ну это для реал тайм).

Это все в кратце. Частично дока уже есть тут: https://dev.1c-bitrix.ru/rest_help/general/events_method/index.php
Но там мизер. По событиям(которые были реализованы почти для всех сущностей CRM) пока только в модуле синхронизации.


Т.е. можно получить только изменения(например только новые и измененные компании/контакты), а не все данные. А возможность узнать об изменении сразу - дает возможность реализации реал тайм обмена.
pbabincev; +1 Ответить
66. pbabincev 96 17.04.18 17:27 Сейчас в теме
67. kobal 18.04.18 09:40 Сейчас в теме
(61) Спасибо за подсказку.
Я решил попробовать просто сливать задачи по реквизиту CHANGED_DATE - дата последнего изменения;
Тут скачал пример по созданию задачи и сливу ее по ID.
Но чтобы получит список по фильтру надо применять метод task.item.list

В параметры нужно передавать 1= (ORDER) Массив для сортировки, 2= (FILTER) фильтр, 3= (PARAMS) Массив для опций вызова, 4= (SELECT) Массив полей записей. Дока тут https://dev.1c-bitrix.ru/rest_help/tasks/task/item/list.php


и вот проблема никак не могу его заполнить параметрами.
Что удалось нарыть.
Пример кода.
1) Запрос = Новый HTTPЗапрос("rest/" + RESTЗапрос + "?auth=" + AccessToken + "&" + Параметры, Заголовки);
Выдает 50 задач.
2) если заполнить параметры
СтрПараметров = fields[CREATED_DATE]=" + "asc"; //desc
Выдает 50 первых или 50 последний с сортировкой по дате создания.
Видимо я устанавливают параметр 1 ORDER,
как установить параметр 2 FILTER (отборы) никак не могу разобраться.
Кто знает подскажите!
СПАСИБО!
68. user662672_explorer2000 125 18.04.18 10:40 Сейчас в теме
(67) Если пользоваться процедурами из статьи, то например так

Ответ = ОтправитьRESTЗапрос("task.item.list", "order[]=&filter[RESPONSIBLE_ID]=46&filter[!REAL_STATUS]=5¶ms[]=&select[]=", "");


Запрос получает не выполненные задачи по ответственному с ИД=46

Это работает, проверено
69. user662672_explorer2000 125 18.04.18 10:45 Сейчас в теме
(68) какой-то глюк, почему-то вместо & и слитно params[] вставляет ¶ms[]
70. kobal 18.04.18 11:55 Сейчас в теме
(68) Спасибо огромное! Заработало.
Я лично убил на изучение и поиск проблему часа 3-4 :)
Как могу отблагодарить?
64. script 190 17.04.18 12:24 Сейчас в теме
Т.е. можно получить только изменения(например только новые и измененные компании/контакты), а не все данные. А возможность узнать об изменении сразу - дает возможность реализации реал тайм обмена.


Ну так это уже совсем другое дело.

Скажите пожалуйста, кто уже хорошо покопался, я так понял что некоторые манипуляции данными в Б24 из 1С можно сделать только в платных тарифах Б24.

В частности интересует обмен Сделки-Заказы + статусы, Компании - Контрагенты, и товарами
65. user662672_explorer2000 125 17.04.18 12:49 Сейчас в теме
(64) Все перечисленное будет работать и на бесплатном тарифе. Думаю, если есть доступ через интерфейс, то и через API будет работать. С ограничениями еще не сталкивался...
71. amd1986 18.04.18 12:17 Сейчас в теме
(65)Регистрация изменений, в полном объеме, на бесплатном тарифе работать не будет.
72. yaneev 39 25.04.18 20:19 Сейчас в теме
кто-нибудь обновлял EMAIL или PHONE в Контактах?

делаю так:
============================================================­===============
Параметры = "id="+_Б24_Contact_ID
+ ?(НЕ ПустаяСтрока(тСтр.Телефон) ,"&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=" + тСтр.Телефон,"")
+ ?(НЕ ПустаяСтрока(тСтр.Емейл) ,"&fields[EMAIL][0][VALUE_TYPE]=WORK&fields[EMAIL][0][VALUE]=" + тСтр.Емейл,"");

СтрокаJSON = ОтправитьAPIЗапрос(Б24, "crm.contact.update", Параметры, "", Заголовки, Соединение);
Ответ = ДесериализоватьИзJSON(СтрокаJSON);
============================================================­===============
а Б24 вместо обновления, добавляет новый телефон и мейл.

Как надо сформулировать запрос, чтобы в Б24 обновлялась первая строка EMAIL и PHONE?
73. user662672_explorer2000 125 26.04.18 09:30 Сейчас в теме
Добрый день!

кусочек кода как обновляю контакт с телефоном


?(СтруктураПараметров.Свойство("Телефон"), "&fields[PHONE][0][ID]=" + ИДТелефона + "&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=" + СтруктураПараметров.Телефон 
		


ИДТелефона из массива PHONE когда получаю контакт по crm.contact.get


Хотя коллеги уже это описали здесь https://dev.1c-bitrix.ru/rest_help/crm/contacts/crm_contact_get.php. Смотрите пользовательский комментарий.
77. uinx 94 01.06.18 10:58 Сейчас в теме
Добрый вечер!
Коллеги, подскажите что такое "AccessToken и RefreshToken" - как их получить?
78. user662672_explorer2000 125 01.06.18 11:29 Сейчас в теме
AccessToken - некий ID который получается при подключении к Битрикс24, он должен в дальнейшем передаваться при каждом обращении к API. Время действия ограничено. Когда время действия AccessToken истекает, его необходимо получить заново. При помощи RefreshToken, который так же получается при регистрации. Как получить в статье есть пример кода и в обработке из вложения.
79. novatrade 05.06.18 10:19 Сейчас в теме
Я бы строку
				ВызватьИсключение "Ошибка при получении access_token"; 

заменил бы на:
		ПодключитьсяКБитрикс();
		Возврат;

в процедуре проверки токена. Столкнулся с этим.
80. ПрестарелыйЗаяц 02.08.18 10:32 Сейчас в теме
А есть этот пример в виде обработки у кого-нибудь ?
81. ПрестарелыйЗаяц 02.08.18 10:36 Сейчас в теме
Функция "ПолучитьПараметрыИзGetСтроки" из строки вида адрес?параметр1=значение1&параметр2=значение2 возвращает структуру, где ключ = параметр, а значение = значение

Что это за функция и где она ???
82. user662672_explorer2000 125 02.08.18 13:05 Сейчас в теме
Вот здесь есть законченная обработка. Это тоже моя статья, в ней есть все функции
83. men260181 18 18.10.18 11:55 Сейчас в теме
Спасибо автору, вариант рабочий, но тормозной. Для больших объемов информации не годится к сожалению.
84. user662672_explorer2000 125 18.10.18 12:41 Сейчас в теме
не подойдет, т.к. по одному передает. Нужно через batch, как-нибудь дойдут руки сделаю
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Нижний Новгород
зарплата от 120 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Системный аналитик
Новосибирск
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Программист 1С
Казань
Полный день