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

13.06.23

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пример интеграции по управлению задачами в Битрикс24
.cfe 54,34Kb ver:1.0.0.1
53
53 Скачать (1 SM) Купить за 1 850 руб.

Интеграция Платформы 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 Интеграция

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2907    3    0    

11

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    34977    69    45    

27

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

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    2652    2    3    

5

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1006    6    2    

8

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4526    4    2    

5

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

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

36000 руб.

03.08.2020    19231    23    22    

20

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    18996    54    50    

31

Обмен с ГосИС 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    93377    194    217    

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

Для события calendar.event.add выполняю запрос с телом

{
"type": "user",
"ownerId": "11",
"from": "03.07.2024 10:00:00",
"to": "03.07.2024 12:00:00",
"section": 5,
"name": "Событие:"
}

через postman все уходит.

при выполнении запроса из 1с получаю ошибку.

"{"error":"","error_description":"Не задан обязательный параметр \u0022from\u0022 для метода \u0022calendar.event.add\u0022"}"

то есть не заполнена дата. При отлавливании запроса фидлером вижу не все тело, а часть, хотя в загловок передаю

Заголовки.Вставить("Content-Length", СтрДлина(ТелоИзСтроки));

{
"type": "user",
"ownerId": "11",
"from": "03.07.2024 10:00:00",
"to": "03.07.2024 12:00:00",
"section": 5,
"name": "На:"




Сам код

ДатаС	=  "03.07.2024 10:00:00";
	ДатаПо	=  "03.07.2024 12:00:00";
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	
	СтруктураДанных = Новый Структура;
	
	СтруктураДанных.Вставить("type",	"user");	
	СтруктураДанных.Вставить("ownerId",	"11");
	СтруктураДанных.Вставить("from",	ДатаС);
	СтруктураДанных.Вставить("to",		ДатаПо); 	
	СтруктураДанных.Вставить("section",	5);                                               
	СтруктураДанных.Вставить("name",	"На:");
	
		
	ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
	
	ТелоИзСтроки = ЗаписьJSON.Закрыть();

	//https
	АдресРесурса = "rest/***/***/calendar.event.add.json";
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Length",	СтрДлина(ТелоИзСтроки));
	Заголовки.Вставить("Content-type",		"application/json");
	
	HTTPСоединение = Новый HTTPСоединение("***.bitrix24.kz",,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	
	ПакетныйЗапросHTTP	= Новый HTTPЗапрос;
	
	ПакетныйЗапросHTTP.АдресРесурса = АдресРесурса;
	ПакетныйЗапросHTTP.Заголовки	= Заголовки;
	
	ПакетныйЗапросHTTP.УстановитьТелоИзСтроки(ТелоИзСтроки,,);
	ПакетныйОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(ПакетныйЗапросHTTP);
	Сообщить(ПакетныйОтветHTTP.ПолучитьТелоКакСтроку());   
	//https
Показать
5. Светлый ум 454 17.07.24 06:37 Сейчас в теме
6. Lupeykin 5 16.09.24 10:36 Сейчас в теме
//Получение сделок с фильтром, простой пример
Соединение = Новый HTTPСоединение(АдресCRM),443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ПрПараметры = "crm.deal.list.json?filter[COMPANY_ID]=45593&filter[CLOSED]=N&filter[IS_RETURN_CUSTOMER]=N&order[DATE_MODIFY]=DESC";  // не закрытые заявки по организации  45593
Запрос = Новый HTTPЗапрос("/rest/****/***********/"+ПрПараметры);
Запрос.Заголовки.Вставить("Content-type", "application/json; charset=utf-8");
HTTPОтвет   = Соединение.Получить(Запрос);
ContentType = HTTPОтвет.Заголовки.Получить("Content-Type");
лКодировка 	= Прав(ContentType, СтрДлина(ContentType) - (Найти(ContentType, "charset=")+7));
Строкой     = HTTPОтвет.ПолучитьТелоКакСтроку(лКодировка);

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Строкой);

Результат = Неопределено;
СформироватьДерево(ЧтениеJSON, Результат);
КоличествоОткрытыхСделок = Результат.Получить("result").Количество(); 
Если КоличествоОткрытыхСделок > 0 Тогда
	ID_Сделки = Результат.Получить("result")[0].получить("ID");
КонецЕсли;

ЧтениеJSON.Закрыть();

&НаСервере
Процедура СформироватьДерево(ЧтениеJSON, Дерево)
	
	ИмяСвойства = Неопределено;
	
	Пока ЧтениеJSON.Прочитать() Цикл
		TипJSON = ЧтениеJSON.ТипТекущегоЗначения;
		
		Если TипJSON = ТипЗначенияJSON.НачалоОбъекта 
			ИЛИ TипJSON = ТипЗначенияJSON.НачалоМассива Тогда
			НовыйОбъект = ?(TипJSON = ТипЗначенияJSON.НачалоОбъекта, Новый Соответствие, Новый Массив);
			
			Если ТипЗнч(Дерево) = Тип("Массив") Тогда
				Дерево.Добавить(НовыйОбъект);
			ИначеЕсли ТипЗнч(Дерево) = Тип("Соответствие") И ЗначениеЗаполнено(ИмяСвойства) Тогда
				Дерево.Вставить(ИмяСвойства, НовыйОбъект);
			КонецЕсли;
			
			СформироватьДерево(ЧтениеJSON, НовыйОбъект);
			
			Если Дерево = Неопределено Тогда
				Дерево = НовыйОбъект;
			КонецЕсли;
		ИначеЕсли TипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
			ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
		ИначеЕсли TипJSON = ТипЗначенияJSON.Число 
			ИЛИ TипJSON = ТипЗначенияJSON.Строка 
			ИЛИ TипJSON = ТипЗначенияJSON.Булево 
			ИЛИ TипJSON = ТипЗначенияJSON.Null Тогда
			Если ТипЗнч(Дерево) = Тип("Массив") Тогда
				Дерево.Добавить(ЧтениеJSON.ТекущееЗначение);
			ИначеЕсли ТипЗнч(Дерево) = Тип("Соответствие") Тогда
				Дерево.Вставить(ИмяСвойства, ЧтениеJSON.ТекущееЗначение);
			КонецЕсли;
		Иначе
			Возврат;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать
7. Lupeykin 5 16.09.24 10:41 Сейчас в теме
// а так мы можем изменять сделку
 Запрос = Новый HTTPЗапрос("rest/***/********/crm.deal.update.json");	
	Запрос.Заголовки.Вставить("Content-type", "application/json; charset=utf-8");
	
	
	ФайлОтвета = Неопределено;
		      
СтрокаДляИзмененияВ_CRM = "{""id"":DEAL_ID_VAR,""fields"":{""CLOSED"":""Y"",""STAGE_ID"":""WON"",""STAGE_SEMANTIC_ID"":""S"",""UF_CRM_1564480466954"":""GUID_VAR"",""UF_CRM_1580470461649"":GUID_CONTRACT_VAR,""UF_CRM_65280A79479ED"":948,
	|""UF_CRM_1681393648434"":887,""UF_CRM_637B35F430A12"":КоличествоМесяцев_VAR,""UF_CRM_6346E5CF8C5B3"":Склад_VAR,""UF_CRM_1648811881353"":КатегорияПомещения_VAR,""UF_CRM_1594046069431"":"""",""UF_CRM_1668518414685"":560,""UF_CRM_1565339315825"":51,""UF_CRM_1565264962683"":"""",""UF_CRM_6346E2248C39B"":КатегорияПомещения_НашеПредложение_VAR,""UF_CRM_6346E220CF497"":394,""IS_RETURN_CUSTOMER"":""N"",""IS_RECURRING"":""N"",""IS_NEW"":""N"",""UF_CRM_1565340795697"":""ДатаНачалоАренды_VAR"",""UF_CRM_1592301446011"":243,""CLOSED"":""Y"",""IS_REPEATED_APPROACH"":""N"",""UF_CRM_1566553457"":139257,""OPENED"":""Y"",""UF_CRM_1564481470"":32150,""STAGE_SEMANTIC_ID"":""S"",""IS_MANUAL_OPPORTUNITY"":""N"",""CURRENCY_ID"":"""",""UF_CRM_1668518617018"":КатегорияПомещенияЗапрошенаКлиентом_VAR,""COMPANY_ID"":COMPANY_ID_VAR,""TYPE_ID"":""SALE"",""TITLE"":""TITLE_VAR""}}";
	
		
			
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"DEAL_ID_VAR",_ID);
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"GUID_VAR",СокрЛП(Договор.УникальныйИдентификатор()));
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"GUID_CONTRACT_VAR",Формат(Договор.GUID_CONTRACT,"ЧГ="));
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"КоличествоМесяцев_VAR",КоличествоМесяцев_VAR);
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"Склад_VAR",Склад_VAR);
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"КатегорияПомещения_VAR",КатегорияПомещения_VAR);
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"КатегорияПомещения_НашеПредложение_VAR",КатегорияПомещения_НашеПредложение_VAR);
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"ДатаНачалоАренды_VAR",ДатаНачалоАренды_VAR);
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"КатегорияПомещенияЗапрошенаКлиентом_VAR",КатегорияПомещенияЗапрошенаКлиентом_VAR);
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"COMPANY_ID_VAR",COMPANY_ID_VAR);
		  СтрокаДляИзмененияВ_CRM = СтрЗаменить(СтрокаДляИзмененияВ_CRM,"TITLE_VAR",СокрЛП(Договор));
		  		
		  Запрос.УстановитьТелоИзСтроки(СтрокаДляИзмененияВ_CRM, КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);	
			
									
			ФайлОтвета = ПолучитьИмяВременногоФайла(".txt");
			
			//Отправим данные
			Соединение.ОтправитьДляОбработки(Запрос, ФайлОтвета);   	
			
			пока ФайлОтвета = Неопределено цикл
				
				//ЖДЕМ ОТВЕТА ОТ CRM
				
			КонецЦикла;
//ЧИТАЕМ ФАЙЛ ОТВЕТА
			Текст = Новый ЧтениеТекста;
			
			Текст.Открыть(ФайлОтвета);              
			
			СтрокаФайлоответа = Текст.ПрочитатьСтроку(); 
            Сообщить(СтрокаФайлоответа);
Показать
8. user2110713 22.10.24 11:41 Сейчас в теме
Добрый день! Нужна помощь. Сайт на WP связан с битрикс24. Все заявки с сайта поступают в битрикс. Как только в битрикс24 увольняют тех. специалистов — перестают работать формы за которые они отвечают. Решили завести специальный тех. аккаунт который будет подвязываться к формам. Тут встает вопрос как и где прописать вебхуки в popup плагина битрикс24?
9. robix 14.01.25 10:31 Сейчас в теме
Вопрос. Этот исходящий веб-хук работает по принципу "один раз". Если, допустим, принимающая система 1С недоступна, то какой-то повторной отправки со стороны bitrxi24 не будет ? Никакой очереди там нет ?
И еще, как bitrxi24 понимает, что исходящее сообщение успешно получено ?
10. evilobot 3 18.02.25 20:17 Сейчас в теме
Оставьте свое сообщение