Как программно обрабатывать сообщения обсуждений системы взаимодействия 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    3079    dsdred    16    

62

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

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

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

24.01.2024    7131    YA_418728146    25    

68

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

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

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

11.12.2023    7599    dsdred    36    

115

1С-ная магия

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

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

06.10.2023    19915    SeiOkami    46    

122

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

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

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

14.09.2023    13834    human_new    27    

77

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

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

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

28.08.2023    10188    YA_418728146    7    

147

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

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

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

20.08.2023    6921    sebekerga    54    

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

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

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

В крайнем случае можно поискать бесплатный код для экономии времени.
Когда нам понадобилось настроить обмен с магазином на AliExpress мы нашли в интернете бесплатный пример общего модуля для работы с AliExpress.
3. prog2019 48 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 132 20.07.23 18:51 Сейчас в теме
Подскажите, пожалуйста, никак не могу найти. Можно программно получить статус пользователя системы взаимодействия?
В контексте темы публикации, например, может возникнуть необходимость не всегда засорять телегу, а только в том случае, когда пользователь не активен (Отошел или Не в сети).
Прикрепленные файлы:
7. portal80 30.11.23 21:13 Сейчас в теме
Код не до конца верен!!!
СистемаВзаимодействия.ПодключитьОбработчикПослеОтправкиСообщения

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