Тема: Как обработать действия пользователя при EditAction.Execute

При создании сообщения я заполняю все необходимые данные
и даю пользователю подредактировать их.

Msgs_User = 1035      'ID пользователя
 
  Set Msgs = TCSApp.Messages
    Call Msgs.CreateNew
      Msgs.Properties("TYPE").Value = "A"
      Msgs.Properties("SUBJECT").Value = "Тема"
      Msgs.Properties("HIGH_PRIORITY").Value = False
      Msgs.Properties("READ_REQUEST").Value = False
      Msgs.Properties("USER_FLAG").Value = False
      Msgs.Properties("USER_COMMENT").Value = "Примечание"
    Call Msgs.SaveChanges   
    Set Recipients = Msgs.Properties("RECIPIENTS").AsIDispatch
      Call Recipients.AddUser(Msgs_User)
    Set Recipients = Nothing   
   
    Call Msgs.EditAction.Execute

как мне обработать дальнейшие действи пользователя
1. нажата "отправить"
2. нажата "отмена"
3. нажата "записать"
4. нажата "предыдущий"
5. нажата "следующий"

Или как то можно оставить только "Отправить" и "Отмена" и их обработать????

(изменено: Дмитрий Гамий, 26 декабря 2012 12:24:27)

Re: Как обработать действия пользователя при EditAction.Execute

Павел1974 пишет:

Или как то можно оставить только "Отправить" и "Отмена" и их обработать????

В текущей версии - пока никак.

Re: Как обработать действия пользователя при EditAction.Execute

Лучше всего просто свою форму ввода сделать, и на ней проводить изменения, тогда можно кастомизировать все что угодно. А так проблематично будет.

Re: Как обработать действия пользователя при EditAction.Execute

Павел1974 пишет:

как мне обработать дальнейшие действи пользователя
1. нажата "отправить"
2. нажата "отмена"
3. нажата "записать"
4. нажата "предыдущий"
5. нажата "следующий"

Штатного способа обработать нет. Можно определить косвенно по определённым признакам:

  • Если пользователь нажал "Отправить", сообщение будет находитьсяв папке "Отправленные", а не "Черновики".

  • Если пользователь нажал "Предыдущий" или "Следующий" - нужно сравнивать идентификатор текущего сообщения с идентификатором созданного. Это сработает, если в папке "Черновики", было несколько сообщений.

Остальные действия определить, скорее всего, не удастся.

Спасибо сказали: Павел19741

Re: Как обработать действия пользователя при EditAction.Execute

А я уже догадался
ID письма легко запонить при создании

MesID = Msgs.Properties( "MESSAGE_ID" ).DisplayText

Если пользователь нажал "Отмена", то письмо остается в папке "Черновики"
Если нажал отправить, то перемещается в папку "Отправленные"

Текущая версия 6.2 У нас 4.7.1.0(8886)

Re: Как обработать действия пользователя при EditAction.Execute

В принципе "Следующее" и "Предыдущее" нас не интересует
т.к эти действи уже говорять об отказе пользователя отправить отредактированное письмо.

Спасибо всем за ответы.

Re: Как обработать действия пользователя при EditAction.Execute

Можно еще запросом к базе

SELECT Count(Usermsg.MESSAGE_ID) as kol
FROM USERMSG
where Usermsg.MESSAGE_ID = MesID

если Fields("Kol").Value > 1 то письмо отправлено
если Fields("Kol").Value = 1 то не отправлено

(изменено: Дмитрий Гамий, 26 декабря 2012 13:11:53)

Re: Как обработать действия пользователя при EditAction.Execute

Павел1974 пишет:

Можно еще запросом к базе

SELECT Count(Usermsg.MESSAGE_ID) as kol
FROM USERMSG
where Usermsg.MESSAGE_ID = MesID

если Fields("Kol").Value > 1 то письмо отправлено
если Fields("Kol").Value = 1 то не отправлено

Ну, во-первых, я сомневаюсь в правильности запроса, похоже он всегда будет возвращать "1", а во-вторых, лучше всё-таки пользоваться TCS API, а не прямыми запросами к БД.

Если уж на то пошло, то лучше анализировать поле "MSGTREE_ID" - это идентификатор папки. В зависимости от значения можно определить, что произошло с сообщением:

'tagEnumMessageFolders
const mfInbox = 1    'Папка "Входящие"
const mfSent = 2    'Папка "Отправленные"
const mfDraft = 3    'Папка "Черновики"
const mfArchive = 4    'Папка "Архивные"
const mfRecycleBin = -2    'Папка "Удаленные"

Это константы TechnologiCS API, модуль "CSDN_Const"

Re: Как обработать действия пользователя при EditAction.Execute

А как в TCS_Api перемещаться по папкам сообщений

Re: Как обработать действия пользователя при EditAction.Execute

Понял

tagEnumMessageFolders = mfDraft
         
  I = Msgs.ShowModal("Окно сообщений")

Re: Как обработать действия пользователя при EditAction.Execute

Павел1974 пишет:

А как в TCS_Api перемещаться по папкам сообщений

Я обычно делаю это так:

        
Set CurNode = Messages.DBTree.DbNodeByNodeId(CSDN_Const.mfDraft)
CurNode.Selected = True
Messages.Refresh
Спасибо сказали: Павел19741