Тема: Интерфейс TDMS и ms outlook

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

не пересохраняя их через файлы.
как нам реализовать желание сие?
Сергей З. упоминал о интерфейсе к аутлуку. он есть? каковы условия его предоставления?

Re: Интерфейс TDMS и ms outlook

Интерфейс есть. Для работы интерфейса обязательно должны быть установлены "компоненты доступа к данным" Outlook + требуется регистрация библиотеки redemption и нашей библиотечки MinOutlook.
После этого ещё и код придётся в систему вставить.
К сожалению данный интерфейс никем кроме меня не тестировался, так что могут встречаться и мелкие косяки   :unsure: .
В общем, если все эти сложности не сильно пугают - могу даже выложить, заодно узнаю много ли там косяков =)

Re: Интерфейс TDMS и ms outlook

Edhunter пишет:

Интерфейс есть. Для работы интерфейса обязательно должны быть установлены "компоненты доступа к данным" Outlook + требуется регистрация библиотеки redemption и нашей библиотечки MinOutlook.
После этого ещё и код придётся в систему вставить.
К сожалению данный интерфейс никем кроме меня не тестировался, так что могут встречаться и мелкие косяки   :unsure: .
В общем, если все эти сложности не сильно пугают - могу даже выложить, заодно узнаю много ли там косяков =)

компоненты найду, если нету в системе,
интерфейс - хочу пощупать,
dll-ки прошу приложить на всякий пожарный.
(2007 MS Office)

"ещё и код придётся в систему вставить" - а вот это пугает - что вставить, куда и зачем?  :)
тогда нужно описание для нашего программиста, если "система" упомянутая = ТДМС.

Re: Интерфейс TDMS и ms outlook

К  сожалению нормальной инструкции я пока что не написал =( Будут вопросы - пишите

Данный интерфейс сам по себе ничего в TDMS не делает, он только пытается отправить в систему сообщение из аутглюка. А что делать с сообщением дальге - это вопрос к администратору системы =) Лично у меня достаточно много логики накручено, но естественно мой код оперирует моими сисидами и Вам не подойдёт.

Для работы интерфейса в системе должна быть принимающая команда "CMD_OUTLOOK" с функцией "Function GetMessage(nMessage)"
Все остальные функции в моём примере не нужны, это просто логика поиска контактов для привязки, создания объекта "сообщение" и т.д.

что в таком духе:

' Объектная модель класса nMessage
  'Public Sender As MyCorrespondent
    'Public Alias As String  
    'Email
  'Public Recipients As MyRecipients
    'Item
      'Public Alias As String  
      'Email
    'Count
  'Public Subject As String
  'Public Body As String
  'Public SendDate As Date
  'Public EntryID As String
  'Public Automatic As Boolean
  'Files
    'Item
      'Path
      'Name
    'Count
'_______________________________________________________________________
' Внешняя функция получающая на вход сообщение из Outlook
Function GetMessage(nMessage)
Extern GetMessage
  ' Проверяем уникальность сообщения
  If CheckEntryId(nMessage.EntryID) Then
    MsgBox "Уже в системе"
    If nMessage.Automatic = False Then Exit Function
  End If
  ' Поиск контакта отправителя, в ручном режиме контакт может быть создан
  Set tSender = GetContact(nMessage.Sender.Email)
  ' Если контакт есть, то создаём сообщение
  If Not tSender Is Nothing Then 
    CreateMessage tSender, nMessage
  ElseIf nMessage.Automatic = False Then
    Set tForm = ThisApplication.InputForms("FORM_CONTACT_CREATE")
    With tForm
    If .Show Then
      contType = .Attributes("ATTR_CONTACT_TYPE").Classifier.SysName
      If .Attributes("ATTR_CONTACT_ASSOCIATION") Then
        Set tSender = .Attributes("ATTR_EVENT_TO_CONTACT").Object
        Set tRow = tSender.Attributes("ATTR_CONTACT_EMAILS").Rows.Create
          tRow.Attributes("ATTR_EMAIL_ADDRESS") = nMessage.Sender.Email
          tRow.Attributes("ATTR_EMAIL_NICK") = nMessage.Sender.Alias
        CreateMessage tSender, nMessage
      Else
        Set tSender = ThisApplication.ExecuteScript("CMD_CONTACT_CREATE", "CreateContact", _
          .Attributes("ATTR_CONTACT_DEPARTMENT").Object, nMessage.Sender,contType)
        If Not tSender Is Nothing Then CreateMessage tSender, nMessage
      End If
    End If
    End With
  End If
  ' Удаление выгруженнх файлов
  On Error Resume Next
  Set FSO = CreateObject("Scripting.FileSystemObject")
  For i = 0 To nMessage.Files.Count - 1
    FSO.DeleteFile nMessage.Files.Item(i).Path, True
  Next
  On Error GoTo 0
End Function
'_______________________________________________________________________

'_______________________________________________________________________
' Проверяем уникальность сообщения
Function CheckEntryId(nEntryID)
  CheckEntryId = False
  Set QueryMessage = ThisApplication.CreateQuery
    QueryMessage.AddCondition 1, nEntryID, "ATTR_EVENT_EMAIL_ID"
    If QueryMessage.Objects.Count > 0 Then CheckEntryId = True
End Function
'_______________________________________________________________________

'_______________________________________________________________________
' Создание сообщения
Function CreateMessage(tSender, nMessage)
  Set tMessage = ThisApplication.ObjectDefs("OBJECT_EVENT_MAIL").CreateObject
  tMessage.Attributes("ATTR_EVENT_EMAIL_ID") = nMessage.EntryID
  tMessage.Attributes("ATTR_EVENT_DATE") = nMessage.SendDate
  tMessage.Attributes("ATTR_EVENT_SUBJECT") = nMessage.Subject
  tMessage.Attributes("ATTR_EVENT_DESCRIPTION") = nMessage.Body
  tMessage.Attributes("ATTR_EVENT_FROM").Object = tSender
  ' Создаём связи с контактами
  For i = 0 To nMessage.Recipients.Count - 1
    Set tRecipient = GetContact(nMessage.Recipients.Item(i).Email)
    If Not tRecipient Is Nothing Then
      Set nRow = tMessage.Attributes("ATTR_EVENT_TO").Rows.Create
        nRow.Attributes("ATTR_EVENT_TO_CONTACT").Object = tRecipient
    End If
  Next
  ' Загружаем файлы вложения
  For i = 0 To nMessage.Files.Count - 1
    Set tFile = tMessage.Files.Create("FILE_ANY")
    tFile.CheckIn nMessage.Files.Item(i).Path
  Next
  tMessage.Status = ThisApplication.Statuses("STATUS_EVENT_MAIL_RECIEVED")
  Set CreateMessage = tMessage
End Function
'_______________________________________________________________________

'_______________________________________________________________________
' Поиск контакта по электронному адресу
Function GetContact(tEmail)
Set GetContact = Nothing
  Set QueryContact = ThisApplication.Queries("QUERY_CONTACT_BY_EMAIL")
    QueryContact.Parameter("P_MAIL") = tEmail
    'QueryContact.AddCondition 1, tEmail, "ATTR_EMAIL_ADDRESS"
  If QueryContact.Objects.Count > 0 Then Set GetContact = QueryContact.Objects(0)
End Function
'_______________________________________________________________________

Re: Интерфейс TDMS и ms outlook

Edhunter пишет:

К  сожалению нормальной инструкции я пока что не написал =( Будут вопросы - пишите

Данный интерфейс сам по себе ничего в TDMS не делает, он только пытается отправить в систему сообщение из аутглюка. А что делать с сообщением дальге - это вопрос к администратору системы =) Лично у меня достаточно много логики накручено, но естественно мой код оперирует моими сисидами и Вам не подойдёт.

Для работы интерфейса в системе должна быть принимающая команда "CMD_OUTLOOK" с функцией "Function GetMessage(nMessage)"
Все остальные функции в моём примере не нужны, это просто логика поиска контактов для привязки, создания объекта "сообщение" и т.д.

день добрый. дошли руки до этого решения

... в общем 2 вопроса -
1. оно прикрутилось. но возникли сомнения по поводу библиотеки redemption - она бесплатная??
2. оно из аутлука работает, НО уже выдаёт ошибку через несколько минут работы с интерфейсом. (вложил скрин). кто виноват и что делать?  :)

ЗЫЖ Аутлук 2007 со всеми заплатками и сервис-паками.
винХР СП3 корпорейт.
тдмс 3.0.199 - последний с форума этого.

Интерфейс TDMS и ms outlook

(изменено: olaf, 27 октября 2010г. 08:50:55)

Re: Интерфейс TDMS и ms outlook

olaf пишет:

ЗЫЖ Аутлук 2007 со всеми заплатками и сервис-паками.
винХР СП3 корпорейт.
тдмс 3.0.199 - последний с форума этого.

да.. забыл сказать, что пункт меню после ошибки пропадает.
из 2007 офиса совсем (до рестарта аутлука), из 2003 - остаётся пустое место.

после перезагрузки немного изменилось окошко ошибки:
теперь там пишут "Method '~' of '~' failed"

-------
вопрос про платность снят, redemption.dll стоит 199 баксов.
поставил временно девелопер эдишен версию, причём ver.5.... (в вашем аттаче - 4ка) - с 2007ым офисом проблема исчезла, с 2003 сохранилась.  ;)

Re: Интерфейс TDMS и ms outlook

А ещё..... я логики не понял, в каких случаях, но несколько раз у меня иконка тдмс вставлялась вместо текста.
причём в качестве маркера маркированного списка.
вот такие чудеса!!  :)

Re: Интерфейс TDMS и ms outlook

CDO установлен ?
С иконкой да... Известная проблема, которую решить пока неудалось   <_<

(изменено: olaf, 27 октября 2010г. 15:36:45)

Re: Интерфейс TDMS и ms outlook

Edhunter пишет:

CDO установлен ?
С иконкой да... Известная проблема, которую решить пока неудалось   <_<

у меня полный "МС Офис плюс 2007"
стоит в полной установке всех компонент
после личной переписки выяснилось, что CDO  не ставится на 2007й офис, если на этой же машине установлен 2007й экчендж (консоль)
хотя по идее он тогда уже должен быть у меня установлен  (? )

на компах с 2003ым офисом CDO установлен.
работает и на 2003, и на 2007, пока не переключаешься из входящих, допустим, в "контакты" и не пробуешь там - сразу отваливается. (пропадает кнопка, меню вверху - не реагирует на нажатие)
а если оставаться во входящих, то интерфейс работает несколько раз... но через неопределённое время (от неск.минут до часа) отваливается.
(подчеркну - это только со свежей библиотекой, с 4той версией не работало)
ну и эта дурная иконка  :)  она постоянно портит жизнь, систематизации не поддаётся.

(изменено: olaf, 11 ноября 2010г. 09:01:44)

Re: Интерфейс TDMS и ms outlook

1. сориентируйте нас, пожалуйста, по перспективам и срокам. (нужно принимать решение)
2. если писать самим, посоветуйте, в какую сторону лучше смотреть? (функционал минимальный - хотя бы класть вложения с минимальными атрибутами {дата/время/отправитель} в тдмс напрямую, минуя диск). вариант с левой и платной библиотекой - не самый удачный, на самом деле.

если оба ответа негативных, то будем решать через правила на Экчендже, наверное.

Re: Интерфейс TDMS и ms outlook

Интерфейс тестирую, пока проблем кроме как с иконкой в буфере никаких не возникает. Возможно дело в версии Exchange'а.
Redemption - это условно платная библиотека, так как интерфейс является бесплатным, то использование библиотеки не нарушает прав.

(изменено: olaf, 12 ноября 2010г. 09:00:26)

Re: Интерфейс TDMS и ms outlook

Edhunter пишет:

Интерфейс тестирую, пока проблем кроме как с иконкой в буфере никаких не возникает. Возможно дело в версии Exchange'а.
Redemption - это условно платная библиотека, так как интерфейс является бесплатным, то использование библиотеки не нарушает прав.

критичней всего для интерфейса именно "контакты", на них валится 100%
а Экч у нас 2007, СП1, в далёкой перспективе 2010й или новее

Re: Интерфейс TDMS и ms outlook

на контактах у меня тоже валится =( интерфейс изначально на них не расчитывался =(

Re: Интерфейс TDMS и ms outlook

Edhunter пишет:

на контактах у меня тоже валится =( интерфейс изначально на них не расчитывался =(

на всякий случай уточню -
на контактах не при запуске интерфейса по кнопке (хотя и так тоже), а иногда просто на переключении на другие вкладки, кроме "входящих", особенно на контакты.