Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
Аватара пользователя
trim
Здравствуйте.
В примерах и вопросах по интеграции чата с 1С встречается только вариант подключения компоненты, непосредственно, перед отправкой сообщения.

Скажите пожалуйста.
Возможно есть какие-либо рекомендации по этому вопросу. Когда все же лучше подключать компоненту?
Может лучше подключить ее 1 раз, еще при запуске 1С, например в модуле обычного приложения, а переменную "КомпонентMyChat" объявить с ключом Экспорт ?
Аватара пользователя
Алексей Пикуров
Приветствую.

Можно подключать, как угодно, как вам удобнее, необязательно прямо перед вызовом. Это просто в примере так, для краткости.
переменную "КомпонентMyChat" объявить с ключом Экспорт

Поясните, что это значит, я не большой спец в 1С :) Судя по контексту, это что-то насчёт области видимости переменной в других модулях?
Аватара пользователя
trim
Для "небольшого " спеца в 1С, у вас получилась отличная интеграция с 1С. [smilie=good.gif]
"Экспорт" - это действительно, чтобы переменную(наш модуль) было видно из любого "уголка" кода 1С.
Пока подключаю разово - глюков не замечено, все работает.
Спасибо.
Аватара пользователя
Алексей Пикуров
Спасибо за добрые слова :) Если у вас есть аккаунт на infostart, можете откомментировать, если есть желание :)

http://infostart.ru/public/542472/

Если не затруднит, покажите свой кусок кода, я тогда отдельно напишу по вашему примеру в справке MyChat по интеграции насчёт доступа из других модулей.
Аватара пользователя
trim
не претендую на эталон правильности с точки зрения специалистов 1С.
--
До всех операций подключения, в справочник "пользователи" добавляем реквизит "Uid_чат", в который, для нужных пользователей будем заносить соответствующий UIN из MyChat.

В модуле обычного приложения
Объявляем
Перем КомпонентMyChat Экспорт;

в этом же модуле, в стандартной процедуре ПриНачалеРаботыСистемы()
добавляем , через "Попытку" - т.к. не на всех машинах пользователей в каталог 1С добавлены Dllки

Код: Выделить всё
Попытка
   Результат=ПодключитьВнешнююКомпоненту("mychatvk.dll","MyChat", ТипВнешнейКомпоненты.Native);
        Если Результат Тогда
          КомпонентMyChat = Новый ("AddIn.MyChat.MyChatClass");       
   КонецЕсли;
Исключение  //Сообщение выводим только пользователям,  которым присвоен UIN из MyChat
   если сокрлп(глТекущийПользователь.Uid_чат)>" " тогда
     Сообщить("Ошибка подключения mychatvk.dll!");
   КонецЕсли;
КонецПопытки;


Далее в любом месте кода 1С, по любому событию, например при поступлении товара
в форме документа "ПоступлениеТоваровУслуг", в стандартной процедуре
ПослеЗаписи() добавляем:

Код: Выделить всё
//не интересуют не проведенные документы, и документы без товара
если Проведен=Истина и Товары.Количество()>0 тогда     
    Попытка   
        ID_Получателя="15";
        ID_Отправителя=Ответственный.Uid_чат;
       Если сокрлп(ID_Отправителя)<=" " тогда   
                         //на случай если пользователю не задан id, отправим сообщение от служебного
           ID_Отправителя="0";
      Конецесли;                              
      ТекстСообщения = "Поступление проведено "+сокрлп(Контрагент)+"  Сумма="+формат(СуммаДокумента,"ЧГ=0")
      
                           // адрес сервера, номер порта, ключ Integration API, отправитель, получатель, текст сообщения   
         Результат = КомпонентMyChat.SendPrivateMessage("192.168.0.1", 2004, "iddqd", ID_Отправителя, ID_Получателя, ТекстСообщения);             
     Исключение
     КонецПопытки;   
 
конецесли;
Аватара пользователя
Алексей Пикуров
ANDiv
Работает ли в этом случае форматирование текстовой строки?!
Аватара пользователя
Алексей Пикуров
Нет, форматирование мы ещё не делали, его предстоит ещё подправить в основной версии, есть проблемы. Пока только plain text.