• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Проблема Не получается реализовать часть задачи, не пойму где я накосячил

В

Вас

у пользователя в интерфейсе есть кнопка отправить уведомление, которая отсылает электронное письмо на почту пользователя(эта часть работает) и параллельно я вычисляю поле и заполняю его другими электронными адресами(это тоже работает) дописал код в кнопке чтобы переопределялся массив и заполнялся новый элемент массива этими адресами и по идее должно бы работать но нет...
Код:
Sub Click(Source As Button)
' Уведомление WF 
   Dim ws As New notesuiworkspace 
   Dim sess As New NotesSession
   Dim db As NotesDatabase
   Dim clview As NotesView
   Dim cldoc As NotesDocument
   Dim cuid,ruid As notesuidocument
   Dim curdoc As NotesDocument
   Dim Usluga As String
   Dim mailbox As NotesDatabase
   Dim item As NotesItem
   Dim rtitem As NotesRichTextItem
   Dim configview As NotesView
   Dim configdoc As NotesDocument
   Dim doc As NotesDocument
   Dim rtrange As NotesRichTextRange
   Dim fname, mname,lname, RNumber_Full, RDate As String
   Set cuid = ws.CurrentDocument
 
   Set curdoc = cuid.document
 
   usluga = curdoc.GetItemValue( "QuestionList" )(0)
   If usluga = "" Then Msgbox "Услуга не определена", , "Error"
 
   Set db = sess.CurrentDatabase
   Set clview = db.GetView("class4")
   Set cldoc= clview.GetDocumentByKey( usluga )
 
'   =============Получение значений из классификатора====
   zn = cldoc.GetItemValue("regNotTxt")(0)
   If zn="" Then Msgbox "В классификаторе не заполнен текст уведомления", , "Error"
 
   Set mailbox = sess.GetDatabase(db.Server, "mail.box")
 
' Определяем фаил настройки и адрес отправителя 
   Set configview = db.getView("(CfgSOA)")
   Set configdoc = configview.getFirstDocument()
   If configdoc Is Nothing Then Msgbox "Не найден документ настройки отправки сообщений" , ,"Error"
   Dim arMail As Variant     
   arMail = configdoc.GetItemValue( "CfgMailAddress" )
   If Isarray(arMail) Then
       fr = arMail(0)
   Else
       fr = arMail
   End If
   If fr ="" Then Msgbox "В документе настройки отправки сообщений не указан E-mail" , , "Error"
' Определяем адрес получателя 
   Dim arRec As Variant 
   arRec = curdoc.GetItemValue("email")
   If Isarray(arRec) Then
       rec = arRec(0)
   Else
       rec = arRec 
   End If
   If rec ="" Then Msgbox "В РКК документа не указан E-mail" , , "Error"


этот участок кода дописан но не знаю как проверить работает ли он
---------------------------------------------------------
   ReDim preserve arRec(ubound(arRec)+1)
   arRec(ubound(arRec))= curdoc.GetItemValue("email_3")(0)
   rec=arRec
--------------------------------------------------------
 
' Создаем почтовый фаил
   Set mdoc = mailbox.CreateDocument
   Set item = New NotesItem(mdoc, "Form", "Memo")
   item.IsSummary = True
   Set item = New NotesItem(mdoc, "From", fr)
   item.IsSummary = True     
   Set item = New NotesItem(mdoc, "SendTo", rec)
   item.IsSummary = True
   Set item = New NotesItem(mdoc, "Recipients", rec)
   item.IsSummary = True
   Set item = New NotesItem(mdoc, "Subject", "Уведомление о регистрации")
   item.IsSummary = True
   Set item = New NotesItem(mdoc, "RDate", Now )
   item.IsSummary = True
' В почтовом файле создаем и заполняем тело письма
   Set rtitem = mdoc.CreateRichTextItem( "body" )
   Call rtitem.AppendText(zn)
   Call rtitem.AppendText("Письмо создано автоматически системой электронного документооборота." & Chr(13) + Chr(10))
   Call rtitem.AppendText("Отвечать на него не нужно!")
' Определяем параметры для вставки 
   fname = curdoc.GetItemValue("FName")(0)
   lname = curdoc.GetItemValue("LName")(0)
   mname= curdoc.GetItemValue("MName")(0) 
   RNumber_Full = curdoc.GetItemValue("RNumber_Full")(0)
   RDate = curdoc.GetItemValue("RDate")(0) 
   Set rtrange = rtitem.CreateRange
   Call rtrange.FindAndReplace("(%номеррег%)",RNumber_Full)
   Call rtrange.FindAndReplace("(%датарег%)",RDate)
   Call rtrange.FindAndReplace("(%Фамилия%)",lname)
   Call rtrange.FindAndReplace("(%Имя%)",fname)
   Call rtrange.FindAndReplace("(%Отчество%)",mname)
' Отправляем письмо 
   Call mdoc.save(True,True) 
   Call curdoc.ReplaceItemValue( "noticestatus", "EmailComplete" )
   Call curdoc.save(True,True) 
End Sub
 
Последнее редактирование модератором:
В

Вас

На данный момент код такой и приходит уведомление только на то что занесено в поле email, подскажите в какую сторону думать, щас параллельно ищу на тему может я не правильно заполняю или определяю массив, может я не правильно работаю с mail.box, ну и не умею пока что выводить куда-нибудь переменную чтоб вообще в целом посмотреть чем в итоге я ее заполнил и правильно ли она заполнилась... буду благодарен за любые пинки и конструктивную критику моего рукожопства...
 

savl

Lotus Team
28.10.2011
2 611
313
BIT
322
Код:
'---------------------------------------------------------
ReDim preserve arRec(ubound(arRec)+1)
arRec(ubound(arRec))= curdoc.GetItemValue("email_3")(0)
rec=arRec
'--------------------------------------------------------
msgbox "" & Implode(rec, chr(10)) ' выведет массив на экран

Добавте обработчик ошибок, вот самый простой:

Код:
Sub Click(Source As Button)
On Error goto handler

' Ваш код тут

  Goto endh
handler:
  msgbox "Error: " & Error$ & { in line } & erl
  resume endh
endh:
End Sub


P.S. Модераторам: просьба перенести в тему в раздел "Lotus - Программирование"
 
  • Нравится
Реакции: Сергей Попов

Darkhan

Green Team
14.12.2012
99
2
BIT
0
Код:
Dim rec as Variant
Dim recString as String
If Isarray(arRec) Then
recString = arRec(0)
Else
recString = arRec
End If
If recString ="" Then Msgbox "В РКК документа не указан E-mail" , , "Error"


этот участок кода дописан но не знаю как проверить работает ли он
---------------------------------------------------------
ReDim preserve arRec(ubound(arRec)+1)
arRec(ubound(arRec))= curdoc.GetItemValue("email_3")(0)
rec=arRec
Подправил ваш код
Проблема в том, что вы присваиваете строке rec массив arRec
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!