Перемещение писем в папки

Автор Тема: Перемещение писем в папки  (Прочитано 26224 раз)

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Перемещение писем в папки
« : 22 Сентябрь 2009, 13:14:04 »
У меня есть переделанная почтовая база, в ней когда приходит новая почта агентом переносится письмо в одну из папок. А появилась необходимость сделать форму, в которой будут задаваться эти названия папок и при нажатии Ок запускался тот агент, а в агенте данные брались из этих полей.  ???
На данный момент названия папок создаются в самом агенте.
Может кто-то делал?! просто что-то не могу добиться данного результата     :'(
« Последнее редактирование: 22 Сентябрь 2009, 17:27:38 от K85 »

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Перемещение писем в папки
« Ответ #1 : 22 Сентябрь 2009, 15:49:27 »
Вот код самого агенка, который проверяет почту и отправляет письма по папкам:
Set db = s.CurrentDatabase
Set doc=s.DocumentContext

vSubj$ = doc.Subject(0)
vAdr$ = doc.From(0)
Flag% = 0

'Разбираем поле Subject, оно должно быть в формате sXXXX-RR
'Где XXXX - номер, а RR - номер реестра
'Если поле Subject соответсвует указанной гипотезе то помещает сообщение в папку RR\XXXX
'Если папка отсуствует - создаем ее
If (Strcompare(FormName$, "Memo", 1) = 0) Then
Subject$ = Trim$(doc.Subject(0))

'Достаем Номер
S1$ = Strleft(Subject$, "-")
S1$ = Trim$(Right(S1$, Len(S1$)-1))

'Достаем КОДИФИКАТОР-2
S2$ = Strright(Subject$, "-")
S2$ = Trim$(Left(S2$, Len(S2$)))

Select Case S1$
Case "0001"
S1$ = "0001 – папка1"
Case "0002"
S1$ = "0002 – папка2"
……………………….
Case Else
S1$="Неизвестный"
' отправка сообщения
………..
Flag% = 1
End Select

Select Case S2$
Case "00"
S2$ = "00 – Осн.папка1"
Case "01"
S2$ = "01 – Осн.папка2"
………………………..
Case Else
S2$ = "Неизвестный"
If Flag% = 0 Then
' отправка сообщения
………
End If
Flag% = 1
End Select

'Проверяем целевую папку для сообщения, если нет то создаем, после чего перемещаем сообщение
Folder$ = S2$ + "\" + S1$
Set view = db.GetView( Folder$ )
If ( view Is Nothing ) Then
Call db.EnableFolder(Folder$)
Call doc.PutInFolder(Folder$)
Call doc.RemoveFromFolder("($Inbox)")
If Flag% = 0 Then
vSS$ = GetFilesInfo(doc)
vSD$ = Date$ + " " + Time$ + Uchr$ (10)
' отправка сообщения
…………….
End If
Else
Call doc.PutInFolder(Folder$)
Call doc.RemoveFromFolder("($Inbox)")
If Flag% = 0 Then
vSS$ = GetFilesInfo(doc)
vSD$ = Date$ + " " + Time$ + Uchr$ (10)
………………
End If
End If
End If

проблема в том, что агент не создает новые папки пока не укажешь название в самом агенте, поэтому и хотелось бы отдельную форму, в которой и заполнялись бы эти названия новых папок
« Последнее редактирование: 22 Сентябрь 2009, 15:53:47 от K85 »

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Перемещение писем в папки
« Ответ #2 : 22 Сентябрь 2009, 17:31:39 »
Т.е. db.EnableFolder(Folder$) не создает папку? а в каком случае создает?

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Перемещение писем в папки
« Ответ #3 : 22 Сентябрь 2009, 17:51:48 »
создает, когда в
  Select Case S1$
  Case "0001"
  S1$ = "0001 – папка1"
указываешь название новой папки, тогда письмо прийдет в новую папку
т.е. в коде Case "0001" ..... Case "nnnn" надо постоянно добавлять

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Перемещение писем в папки
« Ответ #4 : 23 Сентябрь 2009, 09:33:34 »
Итак, пользователю приходит письмо, в теме которого указано в какую папку его класть. В формате <название папки>-<название подпапки>. Вам нужно, чтобы письма в автоматическом режиме раскладовались по нужным папкам. Правильно?

Если да, то можно без select case:
S1$ = S1$ + "папка" + StrRightBack(S1$, "0")
аналогично для S2$, ну и дополнительно обрабатывать S1$ без "0" и т.д.


K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Перемещение писем в папки
« Ответ #5 : 23 Сентябрь 2009, 10:00:13 »
спасибо за ответ, но я не очень понимаю, что такое "папка"?
Я вот думаю, что папку создавать в новой форме, но правда еще не совсем понимаю как  ???. Потом в агенте использовать папки, созданные в новой форме

названия папок выглядят так:
00 - папка1
   0000 - подпапка01
   0001 - подпапка02
07 - папка2
   0009 - подпапка07
   0075 - подпапка08
« Последнее редактирование: 23 Сентябрь 2009, 10:02:51 от K85 »

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Перемещение писем в папки
« Ответ #6 : 23 Сентябрь 2009, 10:07:49 »
Папка - это наподобие представления (списка документов), в которое вы можете добавлять/удалять документы. Служит для логического упорядочивания документов.

Зачем вам отдельно создавать папки, еслу у вас в агенте их создает метод EnableFolder(...)?

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Перемещение писем в папки
« Ответ #7 : 23 Сентябрь 2009, 10:12:10 »
может я не совсем точно излогаюсь...
приходит письмо, в теме которого написано s00-000, соответственно письмо перемещается в папку00 и подпапку 0000, но при этом мне необходимо где-то вводить названия этих новых папок, т.е. папка00 - это например, филиал1, а подпапка 0000 - название отдела.

я в Правилах добавляю кнопку создания новой папки, открывается форма, на ней заполняю два поля (основной папки и подпапки), а вот как сделать чтобы при нажатии на кнопку Ок эта папка создавалась в навигаторе???
« Последнее редактирование: 23 Сентябрь 2009, 10:18:27 от K85 »

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Перемещение писем в папки
« Ответ #8 : 23 Сентябрь 2009, 10:35:04 »
Т.е. номеру в теме сообщения соответсвует свое название папки/подпапки?
Тогда лучше было бы сделать справочник по соответствию "номер" - "название папки". И при получении письма в агенте автоматом определять название папки по справочнику.
Если пользовательская почтовая БД не одна, то справочник (форма+представление) лучше сделать в отдельной БД, к которой обращаться при приеме писем.

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Перемещение писем в папки
« Ответ #9 : 23 Сентябрь 2009, 11:01:09 »
можно ли сделать так:
- стандартным способом создаю папку и подпапку, при нажатии на кнопку Папка\Создать папку
- отправляю письмо,в теме которого указан это номер новой папки
- агентом проверяю номера и названия папок (написанные не в самом агенте) созданные стандартным методом
- письмо после проверки агента , перемещается в нужную папку.

???????????

сейчас сделано так, только папки создаются в самом агенте, а не стандартно, и там же в самом агенте и проверяются названия папок, номера которых должны соответствовать теме письма


ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Перемещение писем в папки
« Ответ #10 : 23 Сентябрь 2009, 11:08:06 »
можно

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Перемещение писем в папки
« Ответ #11 : 23 Сентябрь 2009, 11:09:36 »
если можете подскажите плизз, как определять в агенте название папки, созданной стандартно

насколько я понимаю, то надо вместо select case, как-то определять название папки в виде

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Перемещение писем в папки
« Ответ #12 : 23 Сентябрь 2009, 11:24:10 »
Только условным блоком. А как еще определить соответствие названия номеру, у вас ведь в явном виде название папки не фигурирует в письме.
Тем же select case'ом в агенте прописывайте соответствие названия номеру.

Только при добавлении/изменении папок вам прийдется сначала вручную их создать, а потом в агенте прописать соответствие.
При использовании справочника вам бы не пришлось делать лишних действий и лезть в код.

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Перемещение писем в папки
« Ответ #13 : 23 Сентябрь 2009, 11:29:16 »
тогда если можно... объясните поподробней оспаровчнике...
т.е. в справонике создаютсянания папок и подпапок
а потом они должны проверяться в агенте
Правильно?
а как они будут проверятся в самом агенте???

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Перемещение писем в папки
« Ответ #14 : 23 Сентябрь 2009, 11:46:15 »
Справочник представляет из себя форму с двумя полями (номер и название папки) и представление для выборки.

В агенте вы извлекаете номер из темы сообщения, затем ищете в справочнике документ по этому номеру (например с помощью notesView.GetDocumentByKey(...)). Из документа берете название папки. Затем, таким же образом получаете название подпапки. Формируете иерархическое имя папки (папка\подпапка). Выполняете db.EnableFolder(...). Помещаете письмо в эту папку.