Интеграция с Битрикс24 через вэбхуки




Создание и комментирование задач в Битрикс24 из 1С.

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

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

Протестировано на платформе 8.3.8.1784, 8.3.6.2237.

В Битрикс24 необходимо добавить вэбхук и прописать его данные в константах. В конфигурации первым шагом необходимо загрузить справочник пользователей Битрикс24.

29 Comments

  1. maks_20

    Реализовывали подобный обмен, только двусторонний, с использованием http-запросов и шины данных. Работает у клиента около года, проблем не возникало. Идея была в согласовании документов, при записи документа ставилась задача и пока ее на портале не закроют — с документа нельзя было выписать следующие по цепочке документы. Идея с вебхуками весьма интересная)

    Reply
  2. eugenevk

    (1) С вэбхуками тоже можно организовать двухсторонний обмен: есть исходящие вэбхуки, в которых указывается адрес http-сервиса обработки события и события которые должны обрабатываться (создание / изменение лида, задачи и т.д.). Мне это не требовалось, но думаю сложностей быть не должно с реализацией.

    Reply
  3. maks_20

    (2) Это понятно. просто делали, когда еще в битриксе не было этого, а теперь, когда появилось, переделывать с шины данных на вебхуки пока желания нет)

    Reply
  4. Milanick

    Спасибо большое. Посмотрел как это делается. Справку по REST в битриксе не осилил. Начал добавлять функционал (по синхронизации контрагентов, пользователей)

    Столкнулся с такой особенностью, что некоторые методы, не работают в режиме совместимости 8.2.16 (у нас УПП 1.3). Где то сделал заплатки, гдето нет решения (например не работает отправка сообщений 🙁 )

    Например , вываливается в такую ошибку: Message can’t be empty, хотя в отладчике , все норма. Думаю косяк платформы

    Reply
  5. Dracarys

    Здравствуйте!

    Ошибка при открытии:

    {Форма.Форма.Форма(25,17)}: Тип не определен (ЧтениеJSON)

    Чтение = Новый <<?>>ЧтениеJSON;

    {Форма.Форма.Форма(46,18)}: Тип не определен (ЧтениеJSON)

    Чтение = Новый <<?>>ЧтениеJSON;

    {Форма.Форма.Форма(69,8)}: Тип не определен (СертификатКлиентаWindows)

    Новый <<?>>СертификатКлиентаWindows(

    {Форма.Форма.Форма(71,8)}: Тип не определен (СертификатыУдостоверяющихЦентровWindows)

    Новый <<?>>СертификатыУдостоверяющихЦентровWindows());

    {Форма.Форма.Форма(68,14)}: Конструктор не найден

    ssl = Новый <<?>>ЗащищенноеСоединениеOpenSSL(

    {Форма.Форма.Форма(114,8)}: Тип не определен (СертификатКлиентаWindows)

    Новый <<?>>СертификатКлиентаWindows(

    {Форма.Форма.Форма(116,8)}: Тип не определен (СертификатыУдостоверяющихЦентровWindows)

    Новый <<?>>СертификатыУдостоверяющихЦентровWindows());

    {Форма.Форма.Форма(113,14)}: Конструктор не найден

    ssl = Новый <<?>>ЗащищенноеСоединениеOpenSSL(

    {Форма.Форма.Форма(176,20)}: Тип не определен (ЧтениеJSON)

    Чтение = Новый <<?>>ЧтениеJSON;

    {Форма.Форма.Форма(225,9)}: Тип не определен (СертификатКлиентаWindows)

    Новый <<?>>СертификатКлиентаWindows(

    {Форма.Форма.Форма(227,9)}: Тип не определен (СертификатыУдостоверяющихЦентровWindows)

    Новый <<?>>СертификатыУдостоверяющихЦентровWindows());

    {Форма.Форма.Форма(224,15)}: Конструктор не найден

    ssl = Новый <<?>>ЗащищенноеСоединениеOpenSSL(

    {Форма.Форма.Форма(260,19)}: Тип не определен (ЧтениеJSON)

    Чтение = Новый <<?>>ЧтениеJSON;

    1С:Предприятие 8.2 (8.2.19.130)

    Можно это исправить?

    Как можно исправить?

    Reply
  6. eugenevk

    (5) Добрый день. Вариантов исправления 2 (по JSON):

    1. Установка платформы 8.3

    2. Сторонняя библиотека для работы с JSON

    По Internet соединению:

    1. Установка платформы 8.3

    2. Использование в качестве транспорта WinHttpRequest

    Reply
  7. Milanick

    Автор, подскажи пожалуйста , а есть код по работе с универсальными списками?

    Reply
  8. eugenevk

    (7) Если речь об этом, то есть код создание массива параметров (см. Документация по REST API, task.item.add) TASKDATA.

    Reply
  9. Milanick

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

    Reply
  10. Milanick

    Мне просто не понятно, как это работает. Где ставить соответветсвие, где массив 🙁

    Reply
  11. pyrkin_vanya

    В Вашей конфигурации есть возможность получать эти созданные задачи из битрикс 24? Или может Вы просто знаете как это сделать?

    Еще разок.

    В 1С создал задачу. Она отобразилась в битрикс. Все норм. В битрикс поменяли ее статус и мне нужно получить ее в 1С. Так можно?

    Reply
  12. eugenevk

    (11) В тестовой конфигурации нет. Но получить список задач очень просто методом task.item.list с любым отбором. Более того, можно создать реакцию на изменение статуса с помощью исходящего вэб хука (см. документацию), который будет «дергать» http сервис конфигурации при изменении статуса задачи.

    Reply
  13. pyrkin_vanya

    (12)Это ни к чему. Но огромное спасибо за разъяснение.

    Reply
  14. pyrkin_vanya

    (12)task.item.list.json?FILTER[ID]=298

    такая строка соединения не отбирает. Что я делаю не так? Не подскажите?

    Reply
  15. eugenevk

    (14) Для запроса должен передаваться массив параметров, см. в примере. Прямая передача GET параметров не поддерживается.

    Reply
  16. pyrkin_vanya

    (15)В каком примере? В вашей конфигурации нет такого примера. Если Вы в курсе, не «юлите» пожалуйста. Напишите сразу.

    Reply
  17. eugenevk

    (16) И не думал «юлить», к примеру вот такой кусок:

    ….

    //Обязательные поля

    ПараметрыСтрокой = «0[TITLE]=» + Параметры.ЗаголовокЗадачи;

    ПараметрыСтрокой = ПараметрыСтрокой + «&0[DESCRIPTION]=» + Параметры.ОписаниеЗадачи;

    // Ответственный

    ПараметрыСтрокой = ПараметрыСтрокой + «&0[RESPONSIBLE_ID]=» + Параметры.Ответственный.Идентификатор;

    ….

    Reply
  18. pyrkin_vanya

    (17) Это обязательные параметры для создания. Это не то. Мне нужно просто получить данные по конкретной задачи. Ее ID=298. При фильтре обязательных параметров нет (ну в описании так написано по крайней мере https://dev.1c-bitrix.ru/rest_help/tasks/task/item/list.php)

    Например в сделке https://dev.1c-bitrix.ru/rest_help/crm/cdeals/crm_deal_list.php, такой отбор нормально отрабатывает. И Вашей конфигурации метод list вообще не употребляется.

    Reply
  19. eugenevk

    (18) Это методика использования массивов.Остается только сформировать верный запрос.

    Reply
  20. pyrkin_vanya

    (19)Веселите Вы меня очень. 🙂 Спасибо конечно, но Вы говорите очевидные вещи. Я это все понимаю. Каким будет верный запрос в моей ситуации?

    Я в PHP не понимаю ничего, поэтому догадаться я физически не могу.

    Reply
  21. maxkachesov

    Может немного не по теме, но нигде не могу найти информацию о том, как отправить картинку/файл в личном сообщении или в чат. Есть какое нибудь решение?

    Reply
  22. pyrkin_vanya

    (20)Вот корректный запрос.

    task.item.list.json?ORDER[]=&FILTER[ID]=298

    Reply
  23. johnnyshut23

    битрикс как платформа для веб, что то редко заходит среди клиентов

    Reply
  24. eugenevk

    (24) Нет, т.к. это не требовалось.

    Reply
  25. Milanick

    В обработке есть код , где идет перебор.

    Reply
  26. user760779

    Может кто подсказать? При прикреплении файла к задаче пишет ошибку

    «error»: «ERROR_CORE»,

    «error_description»: «TASKS_ERROR_EXCEPTION_#4; 5c63d36075e513.78431847: Access denied; 4/TE/ACTION_NOT_ALLOWED
    »

    В гугле ничего полезного не нашел. Может знакт кто как бороться?

    Reply
  27. eugenevk

    (30) А разрешение на «Диск» у хука есть?

    Reply
  28. user760779

    (31) Да, разрешение уже все выставил

    https://pastenow.ru/4RI2Y

    Reply
  29. user1061129

    Здравствуйте, пробую обратиться к этому методу crm.livefeedmessage.add, но пишет «Пожалуйста, выберите хотя бы один лид, контакт, компанию или сделку., Пожалуйста, введите текст сообщения.», если не сложно, то подскажите пожалуйста,что делаю не так.Делал как аналогично как в вашей обработке.

    Код:

    HTTPЗапрос = Новый HTTPЗапрос;
    HTTPЗапрос.АдресРесурса = «/rest/»
    + Константы.Битрикс24ИДПользователяВэбХука.Получить() + «/»
    + НастройкиПодключения.Токен + «/»
    + «crm.livefeedmessage.add/»;
    
    //ПараметрыСтрокой = «fields=»;
    ПараметрыСтрокой = «POST_TITLE=»+»Проверка»;
    ПараметрыСтрокой = ПараметрыСтрокой + «&MESSAGE=» + «Долг клиента»;//+Компания.Долг;
    ПараметрыСтрокой = ПараметрыСтрокой + «&SPERM=»+»&SPERM[U]=»+»U60»;
    ПараметрыСтрокой = ПараметрыСтрокой + «&ENTITYTYPEID=» + 4;
    ПараметрыСтрокой = ПараметрыСтрокой + «&ENTITYID=» + 21;
    
    

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *