Интеграция с Битрикс24 WebHooks [Rest API]

13.06.23

Интеграция - WEB-интеграция

Описание интеграции 1С и Битрикс24 с помощью RestApi и Веб-хуков. Тестировалось на платформе 1С Предприятие версии - 8.3.21.1622 Конфигурация - Любая конфигурация на Базе БСП

Скачать исходный код

Наименование Файл Версия Размер
Пример интеграции по управлению задачами в Битрикс24
.cfe 54,34Kb
28
.cfe 1.0.0.1 54,34Kb 28 Скачать

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

Итак, у Битрикс24 есть система Веб-хуков:

1. Входящие - используется для работы с данными вашего Битрикс24 через API. Позволяет отправлять команды описанные в API в Битрикс24.

2. Исходящие - используется для получения информации о событиях, происходящих в вашем Битрикс24. Позволяет получать изменения происходящие в Битрикс24.

Веб-хуки - способ отправки уведомлений пользователю. Пуш уведомления, только в рамках интеграции.

Настройка входящих веб-хуков

Для этого требуется перейти в раздел "Разработчикам" в своем Битрикс



Далее перейти "Другое"




Открыть раздел "Входящий вебхук"






На странице будет предоставлен адрес вызова rest api вида - https://rs24.bitrix24.ru/rest/<id пользователя>/<идентификатор доступа>/. Нажимаем сохранить и копируем нужные данные. Так же можно задать права для полученной интеграции.





Эти данные требуются для подключения к порталу и отправки уведомлений.

Для этого потребуется выполнить примерно такой код:

// Функция - Отправить запрос
//
// Параметры:
//  Метод			 - Строка	 - имя метода который требуется выполнить
//  Параметры		 - Структура	 - Структура параметров для выполнения метода
//  СтрокаЗапроса	 - Строка	 - Строка запроса сгенерированная заранее, если задана, то не будет генерироваться обработчиком
// 
// Возвращаемое значение:
//   Соотвествие - Результат выполнения метода
//
Функция ОтправитьЗапрос(Метод, Параметры, СтрокаЗапроса = Неопределено)
	
    Идентификатор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПараметрыСеанса.ТекущийПользователь, "Bitrix24_Идентификатор");
	АдресПортала  = "rs24.bitrix24.ru";
	IDПользователя= ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПараметрыСеанса.ТекущийПользователь, "Bitrix24_ID");
	
	Соединение = Новый HTTPСоединение(АдресПортала,,,,,, Новый ЗащищенноеСоединениеOpenSSL); // Создаем защищенное соединение с порталом.
	Если СтрокаЗапроса = Неопределено Тогда
		СтрокаЗапроса = СформироватьАдресЗапроса(Идентификатор, Параметры, Метод, IDПользователя); //Формируем адрес запроса, по стандарту REST API
	КонецЕсли;
							
	Запрос = Новый HTTPЗапрос(СтрокаЗапроса); // Создает HTTP запрос											
	
	Запрос.УстановитьТелоИзСтроки("");
			
	Ответ = Соединение.Получить(Запрос); // Отправляет на обработку серверу и получаем ответ
	СтрокаОтвета = Ответ.ПолучитьТелоКакСтроку(); // Получаем результат выполнения как строку
	ДанныеJSON	 = РаскодироватьJSON(СтрокаОтвета); //Убираем экранирование символов

	Возврат ПрочитатьJSONНаСервере(ДанныеJSON, Истина); // Читаем JSON

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

// Функция - Сформировать адрес запроса
//
// Параметры:
//  СтруктураНастроек		 - Структура	 - Структура настроек
//  ДополнительныеПараметры	 - 	 - 
//  Метод					 - Текст	 - Имя вызываемого метода
// 
// Возвращаемое значение:
// Текст  - Сформированный на основе настроек Адрес запроса
//
Функция  СформироватьАдресЗапроса(Идентификатор, ДополнительныеПараметры, Метод, IDПользователя)
	
	АдресЗапроса = "rest/" + IDПользователя + "/" + Идентификатор + "/" + Метод;
	НомерПараметра = 0;
	Для Каждого Настройка Из ДополнительныеПараметры Цикл
		Если НомерПараметра = 0 Тогда
			АдресЗапроса = АдресЗапроса + "?" + Настройка.Ключ+"=" + Настройка.Значение;			
		Иначе     
			АдресЗапроса = АдресЗапроса + "&" + Настройка.Ключ+"=" + Настройка.Значение; //Если параметр 2 и более то нужно использовать &	
		КонецЕсли;
	КонецЦикла;
		
	Возврат АдресЗапроса;
	
КонецФункции


Для редактирования полей в задачах, немного иная схема строки запроса. Тут нужно передать "массив", но у битрикса он какой-то свой, в отличие от Telegram.

На примере изменения поля "Крайний срок"
 

// Процедура - Изменить крайний срок задачи
//
// Параметры:
//  НомерЗадачи	 - Число	 - Номер задачи
//  НоваяДата	 - Дата	 	 - Новая дата крайнего срока
//
Процедура ИзменитьКрайнийСрокЗадачи(НомерЗадачи, НоваяДата, Отказ) Экспорт
	
	Идентификатор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПараметрыСеанса.ТекущийПользователь, "Bitrix24_Идентификатор");
	IDПользователя= ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПараметрыСеанса.ТекущийПользователь, "Bitrix24_ID");

	Метод = "tasks.task.update"; // метод для обновления полей задачи
	Параметры = Новый Структура("taskId", Формат(НомерЗадачи, "ЧГ=0")); //параметр taskid обязательный, нужно чтобы понять какую задачу изменять
	
	СтрокаЗапроса = СформироватьАдресЗапроса(Идентификатор, Параметры, Метод, IDПользователя); // Генерим запрос пока по стандарту
	
	СтрокаЗапроса =СтрокаЗапроса + "&fields" + "[DEADLINE]=" + ПреобразоватьДату(НоваяДата, Истина); // Тут добавляем параметр fields и прибавляем к нему поле/поля, в данном случае DEADLINE в скобках []. 
                                                                                                     //После знак = и значение. Причем даты нужны в формате ISO 8601, поэтому преобразовываем его с помощью функции.
	
	Результат = ОтправитьЗапрос(Метод, Параметры, СтрокаЗапроса); //Далее отправляем запрос по стандарту.	
	
	ТекстОшибки = Результат.Получить("error_description"); //Тут проверяем результат на ошибку, может не хватить прав.
	Если ЗначениеЗаполнено(ТекстОшибки) Тогда
		ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,,,,Отказ);
	КонецЕсли;
	
КонецПроцедуры

// Функция - Преобразовать дату
//
// Параметры:
//  ИсхДата		 - Дата	 - Дата которую требуется преобразовать
//  ИСОФормат	 - Булево	 - Нужно преобразовать в ИСО формат, иначе будет декодировано из него.
// 
// Возвращаемое значение:
//   Дата, Неопределено - Преобразованная дата
//
Функция ПреобразоватьДату(ИсхДата , ИСОФормат=Истина)
	
	Если НЕ ЗначениеЗаполнено(ИсхДата) Тогда
      		Возврат Неопределено
	КонецЕсли;
	
    	Если ИСОФормат Тогда
       		Возврат Формат(ИсхДата,"ДФ=yyyy-MM-ddThh:mm:ss");
	Иначе 
       		Возврат XMLЗначение(Тип("Дата"), ИсхДата);
	КонецЕсли 
	
КонецФункции


 

Настройка исходящих веб-хуков

Тут немного замудреннее, особенно когда не знаешь. 

Тем же путем переходим в раздел "Разработчикам" -> "Другое" -> "Исходящий вебхук"




Далее нужно заполнить URL обработчика по следующим правилам:
http://<адрес или имя>:<внешний порт>/<имя публикации>/hs/<Имя http сервиса, у меня это - Bitrix24>/<имя шаблона, у меня это - WebHook>/<имя метода, у меня это - pushPost>/

Итого примерный адрес - http://223.234.43.23:8323/Bitrix24/hs/Bitrix24/WebHook/pushPost/

IP адрес обязательно должен быть общедоступным, иначе Битрикс не достучится до него.

Токен приложения нужно чтобы проверить из какой интеграции пришел веб-хук.



Далее публикуем http сервис вручную или средствами платформы, если http сервис в расширении, то в ручном варианте.





И чтобы Битрикс попал в базу без авторизации, нужно в настройках подключения к ИБ указать имя пользователя и пароль. 
Также желательно включить отладку, чтобы отлаживать код и данные.



Далее выполняем действия, например создаем или изменяем задачу и получаем запрос от битрикс.





Далее уже начинаем работать с телом запроса.

Раскодируем строку, получим данные из события и обработаем их.
 

// Процедура - Обработать событие
//
// Параметры:
//  Событие	 -  Строка	 - Параметры события произошедшего в Битрикс
//
Процедура ОбработатьСобытие(Событие) Экспорт
 
 	СтрокаБезКодировки = РаскодироватьСтроку(Событие , СпособКодированияСтроки.URLВКодировкеURL);	
	СтруктураСобытия   = ПолучитьСобытиеКакСтруктуру(СтрокаБезКодировки);
	
	Событие = "";
	СтруктураСобытия.Свойство("Событие", Событие);
	Если СтруктураСобытия.Событие = "ONTASKUPDATE" Тогда
    	 	ОбновитьЗадачу(СтруктураСобытия.ID);	
	КонецЕсли;  
	 
 КонецПроцедуры
 
// Функция - Получить событие как структуру
//
// Параметры:
//  СтрокаДанных - 	Строка   - Параметры события произошедшего в Битрикс
// 
// Возвращаемое значение:
//   Структура - Структра данных о событии 
//								Событие - Строка  - Тип события в Битрикс
//								ID - Строка - ID объекта события Битрикс
//
Функция ПолучитьСобытиеКакСтруктуру(СтрокаДанных)
	
    //Тут вроде бы JSON должен быть, но прилетает что-то не то, опытным путем сделал через поиск в строке.

	Результат = Новый Структура();
	
	НачалоСобытия = СтрНайти(СтрокаДанных, "event=")+ 6;
	КонецСобытия  =	СтрНайти(СтрокаДанных, "&", НаправлениеПоиска.СНачала, НачалоСобытия);
	Событие		  = Сред(СтрокаДанных, НачалоСобытия, КонецСобытия- НачалоСобытия);
	Результат.Вставить("Событие", Событие);
	//Получаем ID и событие задачи. Далее уже можно развивать на другие события и делать проверки.
	НачалоID 	  = СтрНайти(СтрокаДанных, "[ID]=",, КонецСобытия)+5;
	КонецID		  = СтрНайти(СтрокаДанных, "&",,НачалоID); 
	ID			  = Сред(СтрокаДанных, НачалоID, КонецID - НачалоID);
	Результат.Вставить("ID", ID);	
	
	Возврат Результат;

КонецФункции // ПолучитьСобытиеКакСтруктуру(СтрокаДанных) 

Далее уже можно свободно читать API Битрикс24 и делать что-то свое. 

Ссылка на API - https://www.bitrix24.ru/apps/api.php.

Битрикс24 Интеграция

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16012    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18035    10    15    

14

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

28000 25200 руб.

28.05.2015    85215    26    51    

50

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    12945    32    8    

12

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    89509    163    217    

320
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. СаморезикРу 31.08.23 14:20 Сейчас в теме
Что такое Bitrix24_Идентификатор и Bitrix24_ID
2. Luchano37 24 02.09.23 08:35 Сейчас в теме
(1) Это реквизиты у справочника "Пользователи"
Позволяют заполнить следующие поля в адресе запроса:
https://rs24.bitrix24.ru/rest/<id пользователя>/<идентификатор доступа>/.
<id пользователя> = Bitrix24_ID
<идентификатор доступа> = Bitrix24_Идентификатор
3. aleksey2 86 21.11.23 07:43 Сейчас в теме
Bitrix24_ID можно кинуть в контактную информацию с типом другое
Luchano37; +1 Ответить
Оставьте свое сообщение