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

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

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

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
99. uno-c 120 16.10.19 23:02 Сейчас в теме
(98)Вообще Authorization basic не задокументирована у Б24, в (10) уже отмечалось это. И в будущем, возможно прекратится его поддержка. Хотя у меня сейчас пока еще работает. Возможно, Вы в с логином/паролем или адресом своего портала в коде ошиблись, пробел там где-нибудь лишний в начале/конце затесался, бывает еще символы невидимые подцепляются, если через форму копи-пастом вставлять логин/пароль и проч. Еще к русским символам в пароле непонятно как basic - авторизация отнесется.
100. Flynxx 17.10.19 06:45 Сейчас в теме
(99) Не там другое у нас локальная сеть и база 1с наружу не смотрит. пришлось ngnix настраивать пробросы делать с днс записями что бы битрикс при ответе шел на внутренний сервак со скриптом который мы при публикации приложения в битрикс указали. после этого все заработало. а так данный теперь забираются. правда они скудные до нельзя.
101. uno-c 120 17.10.19 08:54 Сейчас в теме
102. uno-c 120 17.10.19 09:18 Сейчас в теме
(100)Если речь о личном приложении (не для публикации в каталоге) - то согласно обсуждаемой статье, после первого запроса на "https://yourportal.bitrix24.ru/oauth/authorize/?client_id=xxxxx" при успешном прохождении basic авторизации, приходит ответ с кодом 302, а в ответе есть заголовок Location с содержимым "http://idonthavesite.ru?code=xxxxx&state=&domain=test1c.bitrix24.ru&member_id=xxxxx&scope=crm&server_domain=oauth.bitrix.info" Здесь idonthavesite.ru - несуществующий адрес, который я ввел при создании приложения в битриксе.
Если же базовая авторизация не прошла (пользователь или пароль неверные) - то тоже приходит редирект по 302 коду, но на другой Location "https://auth2.bitrix24.net/oauth/authorize/?user_lang= ...", и в этом Location отсутствует параметр code=
Я решил, что Вы об этом, когда говорили "не происходит редиректа на страницу с полем code вместо этого идет редирект на страницу авторизации".
Чтобы получить code, access token и refresh token - базу не обязательно в инет публиковать, у меня база не опубликована, все токены получаю от битрикса обработкой по этой статье. Кстати, пароль из русских символов Б24 принимает на базовой авторизации, проверил.
103. Flynxx 17.10.19 13:25 Сейчас в теме
(102) в том то и проблема что на самом деле если даже указать несуществующий адрес то по схеме битрикса он начинает на него ломиться и требовать от него ответа. а мы указали сайт который у нас в локальной сети лежит естесвенно битрикс его и не видел для чего потребовался проброс и тд и тп. у нас без этого оно не понимало вообще никак . хотя делал все как по статье. но у нас база 1с вообще доступа в инет не имеет. никакого.
104. uno-c 120 17.10.19 14:26 Сейчас в теме
(103)Видимо, у Вас какой-то другой случай, коробочный битрикс с предыдущей схемой авторизации или еще что-то, не из статьи. Вообще как Вы поняли, что он начинает куда-то ломиться, если изначально сайт только в локальной сети был, и битрикс его не видел, т.е. где вы логи ловили, в которых увидели, что битрикс куда-то ломится? Для авторизации и обмена данными 1С с облачным битриксом-24 (*.bitrix24.ru) не нужна опубликованная база, белый IP адрес, доменное имя и т.п. Сейчас как раз пишу интеграцию для самописной конфигурации - все работает.
106. Flynxx 17.10.19 15:52 Сейчас в теме
(104) облачный как раз. как где видел. он же в локейшене возвращает куда оно ломится. дальше просто запустили это все со внешней тачки с внешним ип и все заработало токен прилетел а тачки со внутренним ип токен не приходил потому что доступа из локальной сети к сайту указанному не было, а с тачки со внешним ип он возращал страницу сайта с полем code.
ТОже пишу интеграцию с нашей базой. Но те методды которые есть в битриксе связанные контролем времени жутко корявые и унылые по функционалу
108. uno-c 120 17.10.19 16:20 Сейчас в теме
(106)В Location битрикс никуда не стучится. Б24 просто сообщает 302 код ответа (страница временно перемещена) и адрес, куда она по его мнению перемещена - тот самый несуществующий адрес, который мы указали при создании приложения. Что дальше делать с этим адресом решает программист 1С - стучаться или не стучаться. Можно, конечно попытаться сходить на него, но смысл, если заранее известно, что он не существует. Мне в Location после первого запроса приходит. "http://idonthavesite.ru?code=xxxxx&state=&domain=test1c.bitrix24.ru&member_id=xxxxx&scope=crm&server_domain=oauth.bitrix.info". Выцепляем code оттуда, плюсом берем заранее известные выданные приложению client_id и client_secret, и все это скармливаем серверу авторизации Б24 (сервер один для всех, не зависит от имени Вашего портала - oauth.bitrix.info) "https://oauth.bitrix.info/oauth/token?grant_type=authorization_code&client_id=xxxxx&client_secret=­xxxxx&code=xxxxx". В ответ получаем JSON с нужными токенами. Всё.
109. Flynxx 18.10.19 07:03 Сейчас в теме
(108) ну нам и сообщал 302 только адрес куда перемещена был на страницу авторизации снова. а не на тот вымышленный адрес. в локейшене была в первом же ответе станица авторизации битрикс. Это если с внутри сети долбиться а если снаружи то возвращал че надо.
110. uno-c 120 18.10.19 09:41 Сейчас в теме
(109)
ну нам и сообщал 302 только адрес куда перемещена был на страницу авторизации снова
Не понятно слово "снова". Мы же говорим про самый первый запрос и ответ на него. А первый запрос идет не на страницу авторизации, а на персональный портал: "https://test1c.bitrix24.ru/oauth/authorize/?client_id=xxxxx", в заголовке отправляется "Authorization: Basic хххххх=", этот заголовок 1С формирует автоматически, если в Новый HTTPСоединение() указать логин и пароль. Если все верно - в ответ получим 302 на вымышленный сайт и там же code ""http://idonthavesite.ru?code=ххххх&...". Если же ошибиться с логином, паролем или адресом существующего персонального портала - то в ответ получим 302 на страницу авторизации Location "https://auth2.bitrix24.net/oauth/authorize/?user_lang=...", и code в этом случае отсутствует.

Или Вы называете страницу персонального портала страницей авторизации ("https://test1c.bitrix24.ru/oauth/authorize/")? И в ответе на самый первый запрос приходил Location "https://test1c.bitrix24.ru/oauth/authorize/" - снова тот же самый, на который вы и делали первый запрос?
111. Flynxx 18.10.19 13:44 Сейчас в теме
(110)
первый запрос на персональный портал был https://хххххххххххх.bitrix24.ru/oauth/authorize/?client_id=xxxxx". он возвращает 302 а в локейшене было переброс https://auth2.bitrix24.net а не на тот сайт который был указан (на вымышленный сайт) а со внешнего айпи было нормальный ответ 302 и в локейшене на сайт который указан (на вымышленный сайт)
112. uno-c 120 19.10.19 19:35 Сейчас в теме
Контакт можно создавать методом POST, отправляя данные контакта в формате JSON
Процедура СоздатьКонтактНаСервере()
		
	fields = Новый Структура;
	fields.Вставить("NAME", Взаимодействие.Клиент.Наименование);//NAME	Имя контакта. Обязательное поле
	fields.Вставить("OPENED", "Y"); //OPENED	Флаг "Доступен для всех"
	fields.Вставить("TYPE_ID", "CLIENT");//TYPE_ID	Тип контакта
	fields.Вставить("SOURCE_ID", "SELF");//SOURCE_ID	Источник
	
	мМассив = Новый Массив;
	мМассив.Добавить(Новый Структура("VALUE, VALUE_TYPE", Взаимодействие.Клиент.Телефон, "WORK"));
	fields.Вставить("PHONE", мМассив);
	
	fields.Вставить("COMMENTS", Взаимодействие.Клиент.Комментарий);//COMMENTS	Комментарии
	fields.Вставить("ORIGIN_ID", XMLСтрока( Взаимодействие.Клиент));//ORIGIN_ID	Идентификатор объекта внешней информационной базы.
	
	СтруктураЖсон = Новый Структура;
	СтруктураЖсон.Вставить("auth", AccessToken);
	СтруктураЖсон.Вставить("fields", fields);
	СтруктураЖсон.Вставить("params", Новый Структура("REGISTER_SONET_EVENT", "Y")); //оповещение в браузере
	
	ЗаписьЖсон = Новый ЗаписьJSON;
	ЗаписьЖсон.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьЖсон, СтруктураЖсон);
	СтрокаЖсон = ЗаписьЖсон.Закрыть();
	
	ХттпСоединение = Новый HTTPСоединение(АдресБитрикс24,,,,, 60, Новый ЗащищенноеСоединениеOpenSSL, Ложь);
	ХттпЗапрос = Новый HTTPЗапрос("/rest/crm.contact.add");
	ХттпЗапрос.Заголовки.Вставить("Content-type", "application/json");
	ХттпЗапрос.УстановитьТелоИзСтроки(СтрокаЖсон);
	ХттпОтвет = ХттпСоединение.ОтправитьДляОбработки(ХттпЗапрос);
	СтрокаОтвета = ХттпОтвет.ПолучитьТелоКакСтроку();
	ЧтениеЖсон = Новый ЧтениеJSON;
	ЧтениеЖсон.УстановитьСтроку(СтрокаОтвета);
	СтруктураЖсон = ПрочитатьJSON(ЧтениеЖсон);
	ИдКонтакта = СтруктураЖсон.result;
	
	КлиентОбъект = Взаимодействие.Клиент.ПолучитьОбъект();
	КлиентОбъект.Б24ИдКонтакта = ИдКонтакта;
	КлиентОбъект.Записать();
	
КонецПроцедуры
Показать
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Специалист 1 категории (Программист 1С ФЗД)
Фрязино
зарплата от 110 000 руб.
Полный день

Специалист 1 категории (Программист 1С)
Фрязино
зарплата от 110 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Специалист 1 категории (Методист-аналитик 1С)
Фрязино
зарплата от 100 000 руб.
Полный день