Как программно обрабатывать сообщения обсуждений системы взаимодействия 1С

23.02.23

Разработка - Механизмы платформы 1С

Программно перехватываем сообщения обсуждений системы взаимодействия 1С, например, для параллельной отправки сообщений в Telegram.

Главное, что нужно понимать, - перехватить сообщение обсуждения системы взаимодействия 1С можно только с помощью обработчика, который ожидает событие отправки сообщения:

СистемаВзаимодействия.ПодключитьОбработчикПослеОтправкиСообщения(ОписаниеОповещения)

В данном примере делаем на форме документа "Заказ клиента".

Предварительно создаём реквизит "расш_TelegramID" у справочника "Пользователи". Его нужно вывести на форме элемента справочника "Пользователи".

По-хорошему, процедуру, отправляющую сообщения в Telegram, нужно разместить в общем модуле.

А токен Telegram бота организации хранить в регистре сведений.

Я сделал всё прямо на форме документа, потому что моя конкретная задача вряд ли когда-нибудь будет масштабироваться.

На форме документа создаём следующий код:

&НаКлиенте
Процедура расш_ПриОткрытииПосле(Отказ) 

    расш_ПерехватитьСообщениеОбсуждения();
    
КонецПроцедуры

&НаКлиенте
Процедура расш_ПерехватитьСообщениеОбсуждения() Экспорт  
    
    расш_оп_ОбработкаОтправкиСообщения = Новый ОписаниеОповещения("расш_ОбработкаОтправкиСообщения", ЭтотОбъект);
    СистемаВзаимодействия.ПодключитьОбработчикПослеОтправкиСообщения(расш_оп_ОбработкаОтправкиСообщения);  
    
КонецПроцедуры 

&НаКлиенте
Процедура расш_ОбработкаОтправкиСообщения(расш_Сообщение, расш_Обсуждение, расш_ДопПараметры) Экспорт 
    
    СписокПолучателей = Новый СписокЗначений; 
    Для каждого ТекПолучатель Из расш_Сообщение.Получатели Цикл 
        СписокПолучателей.Добавить(ТекПолучатель); 
    КонецЦикла;                                          
    
    расш_ОтправитьСообщениеTelegram(расш_Обсуждение.Заголовок, расш_Сообщение.Текст, СписокПолучателей);
    
КонецПроцедуры  

&НаСервере
Процедура расш_ОтправитьСообщениеTelegram(Заголовок, ТекстСообщения, СписокПолучателей) Экспорт   
    
    ТекстДляОтправки = Заголовок + Символы.ПС + ТекстСообщения;
    
    Для каждого ТекПолучатель Из СписокПолучателей Цикл   
        ИдентификаторПользователяИБ = СистемаВзаимодействия.ПолучитьИдентификаторПользователяИнформационнойБазы(ТекПолучатель.Значение);
        UserTelegramID = расш_ПолучитьTelegramID(ИдентификаторПользователяИБ); 
        Если ЗначениеЗаполнено(UserTelegramID) Тогда
            ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
            TokenTelegram = "9999999999:F4OMATVxAAEB4WC_GTaPsBqcHGPH40T0bQk";  
            ТекстЗапросаHTTP = "bot" + TokenTelegram + "/sendMessage?chat_id=" + СтрЗаменить(Формат(UserTelegramID, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + ТекстДляОтправки;
            Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,ЗащищенноеСоединение);
            ЗапросHTTP = Новый HTTPЗапрос(ТекстЗапросаHTTP);
            ОтветHTTP = Соединение.Получить(ЗапросHTTP);  
            Если ОтветHTTP.КодСостояния = 200 Тогда
                Тест = 1;
            Иначе
                Тест = 2;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры        

&НаСервереБезКонтекста
Функция расш_ПолучитьTelegramID(ИдентификаторПользователяИБ)          
    
    TelegramID = "";
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Пользователи.Ссылка КАК Ссылка,
        |    Пользователи.ИдентификаторПользователяИБ КАК ИдентификаторПользователяИБ,
        |    Пользователи.расш_TelegramID КАК TelegramID
        |ИЗ
        |    Справочник.Пользователи КАК Пользователи
        |ГДЕ
        |    Пользователи.ИдентификаторПользователяИБ = &ИдентификаторПользователяИБ";
    Запрос.УстановитьПараметр("ИдентификаторПользователяИБ", ИдентификаторПользователяИБ);
    Выборка = Запрос.Выполнить().Выбрать(); 
    
    Если Выборка.Следующий() Тогда 
        TelegramID = Выборка.TelegramID;                
    КонецЕсли;
    
    Возврат TelegramID; 
    
КонецФункции

 

сообщения обсуждения система взаимодействия Telegram

См. также

Сервисы интеграции без Шины и интеграции

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2670    dsdred    16    

59

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    6185    dsdred    59    

86

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    6058    YA_418728146    25    

68

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    7137    dsdred    36    

114

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    19239    SeiOkami    46    

119

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12965    human_new    27    

76

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    9566    YA_418728146    6    

143

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6578    sebekerga    54    

95
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. triviumfan 93 27.02.23 09:28 Сейчас в теме
Я думал, что это мёртвый функционал, а нет - им кто-то пользуется)
ЗЫ: при работе с http-соединением нужна обработка исключений, у тебя они отсутсвтуют.
2. svezr 5 02.03.23 16:21 Сейчас в теме
(1) Системой взаимодействия пользуются. Более того, она используется в механизме распределенной фискализации в УНФ:).

Для работы с http можно использовать крутую библиотеку HTTP Коннектор для 1С, рекомендую.
4. prog2019 47 31.03.23 23:05 Сейчас в теме
(2) Может быть, кому-то этот вариант будет интересен.
Тому, кто сам не хочет программировать.

Мы сами подобные модули создаём при необходимости.
Особенно учитывая, что эту библиотеку продают за 5000 руб.

В крайнем случае можно поискать бесплатный код для экономии времени.
Когда нам понадобилось настроить обмен с магазином на AliExpress мы нашли в интернете бесплатный пример общего модуля для работы с AliExpress.
3. prog2019 47 31.03.23 22:57 Сейчас в теме
(1) Что за странная мысль?
С чего это вдруг система взаимодействия 1С - мёртвый функционал?

Пользователи данной базы 1С очень активно используют эту систему внутри этой базы 1С.
У них очень много обсуждений производственных процессов в документах "Заказ клиента".
Это же очень удобно - возникли какие-то вопросы, проблемы с конкретным заказом - и их обсуждают именно в этом заказе.
Эта организация является предприятием, которое производит свою продукцию и устанавливает её у покупателей.

А учитывая разъездной характер работы многих сотрудников, им очень удобно автоматически сразу получать копии сообщений из 1С в свой Telegram.
Может, сотрудник сегодня только к концу дня до офиса доберётся.
Теперь они сразу в курсе событий.
Сотруднику, который пишет сообщения, не надо два раза тратить время на одно и то же сообщение в 1С и в Telegram.

Понятно, что эта система имеет смысл только для организаций, в которых сотрудникам приходится постоянно много обсуждать производственные процессы по конкретным документам.
Мы и не предлагаем внедрять это в каждой организации.
maXon777; pr_woland; +2 Ответить
5. alecsz 02.04.23 15:22 Сейчас в теме
Было бы совсем хорошо, если бы еще можно было бы сообщения из Telegram получать обратно в Систему взаимодействия:)
6. VladimirElohov 130 20.07.23 18:51 Сейчас в теме
Подскажите, пожалуйста, никак не могу найти. Можно программно получить статус пользователя системы взаимодействия?
В контексте темы публикации, например, может возникнуть необходимость не всегда засорять телегу, а только в том случае, когда пользователь не активен (Отошел или Не в сети).
Прикрепленные файлы:
7. portal80 30.11.23 21:13 Сейчас в теме
Код не до конца верен!!!
СистемаВзаимодействия.ПодключитьОбработчикПослеОтправкиСообщения

Подключая обработчик вы его должны в какой то момент отключить
СистемаВзаимодействия.ОтключитьОбработчикПослеОтправкиСообщения
8. ktotut1 28.12.23 15:14 Сейчас в теме
подскажите, как сделать отправку на email тем кто в задаче указан?
Оставьте свое сообщение