Не так давно в компании в которой я работаю, внедрили 1С:Документооборот.
Система хорошая (после выпуска версии 1.2.2.6) и нужная, спору нет.
Исторически так сложилось, что в компании развернут и используется jabber сервер.
Документооборот хорош всем, в том числе умеет рассылать уведомления на e-mail о поступивших новых задачах.
Да вот беда, с протоколом xmpp 1C работать не умеет.
Не проблема, берем в руки напильник!
Первой мыслью было использовать внешнюю компоненту от товарища Душелова.
Сказано - сделано.
Грабли №1:
При работе на сервере в виде регламентного задания сервер вешается намертво (ни одна база не отвечает до перезагрузки)
Грабли №2:
При попытке отправить сообщения со стороны клиента первые 2-4 сообщения уходят, затем сессия вешается, как и в случае сервера, но хотя бы можно убить сессию.
Внешнюю компоненту, выдернутую из демобазы СЭД Аналитикс постигла та же участь.
В причинах разбираться, не было ни времени, ни желания.
Или в компонентах проблема, или в сервере, или на сервере jabbera.
Поиски в интернете натолкнули на мысль о php.
Итак, рецепт.
Берем библиотеки http://webi.ru/webi_files/xmpp_webi.html
В файле config.ini.php прописываем настройки сервера, аккаунт для отправки и пр.
Кладем файлы config.ini.php, xml.class.php, xmpp.class.php в отдельную папку на сервере, на котором крутится 1С.
Например "\\server\e$\AddIn\jabber\"
На сервере устанавливаем php (если не установлен), настраиваем ассоциации для открытия php файлов.
Теперь возьмемся за конфигуратор.
Создаем общий модуль с настройками сервер и вызов сервера.
Напишем в нем функцию.
&НаСервере
Процедура ОтправитьСообщениеСервером(ТЗ, ИмяФайла) Экспорт
ТекТекст = Новый ТекстовыйДокумент;
ТекСтрока = "; ТекТекст.ДобавитьСтроку(ТекСтрока);
ТекСтрока = "include_once("+Символ(34)+"xmpp.class.php"+Символ(34)+");"; ТекТекст.ДобавитьСтроку(ТекСтрока);
ТекСтрока = "$webi = new XMPP($webi_conf);"; ТекТекст.ДобавитьСтроку(ТекСтрока);
ТекСтрока = "$webi->connect();"; ТекТекст.ДобавитьСтроку(ТекСтрока);
Для Каждого ТЗСтрока из ТЗ Цикл
АдресатJabber = СокрЛП(ТЗСтрока.АдресатJabber);
СообщениеJabber = СокрЛП(ТЗСтрока.СообщениеJabber);
ТекСтрока = "$webi->sendMessage("+Символ(34)+АдресатJabber+Символ(34)+", "+Символ(34)+СообщениеJabber+Символ(34)+");";
ТекТекст.ДобавитьСтроку(ТекСтрока);
КонецЦикла;
ТекСтрока = "?>"; ТекТекст.ДобавитьСтроку(ТекСтрока);
Попытка
ТекТекст.Записать("\\server\e$\AddIn\jabber\"+ИмяФайла+".php","UTF-8");
sender= "\\server\e$\AddIn\jabber\"+ИмяФайла+".php";
ЗапуститьПриложение(sender);
Исключение
ЗаписьЖурналаРегистрации("Отправка в Jabber", УровеньЖурналаРегистрации.Ошибка, , "", "Отправка в jabber завершилась неудачей.");
КонецПопытки;
КонецПроцедуры
ТЗ это таблица значений с адресами в виде аккаунт@сервер и сообщениями.
ИмяФайла это имя файла который будет запущен php интерпретатором.
Вот и всё, регламентным заданием на сервере можно формировать таблицу с адресами и сообщениями и отправлять в jabber.
Решение может и не самое изящное, зато простое и работает.