Как отослать письмо пользователю.

Тема в разделе "Lotus - Программирование", создана пользователем ledi, 30 окт 2006.

Статус темы:
Закрыта.
  1. ledi

    ledi Гость

    Люди добрые, помогите, а то я уже с ума потихоньку начинаю сходить. :)

    Есть у меня в форме [Forma] поле [Author]. Поле изменяемое, изменяется при создании.

    Как мне в поле "SendTo" формулы @MailSend автоматически его подставлять?

    То есть, чтобы если Пупкин создал документ - ушло письмо на Пупкина, а если Васечкин - то на Васечкина.

    И второй вопрос по поводу формулы @MailSend.

    Если у меня есть поле RadioButton, в котором находится список людей, которым надо отправить письмо - как мне подставить в поле "SendTo" значение выделенного человека в поле RadioButton.

    Возможно, вместо "RadioButton" можно использовать "Список".

    Мне Morpheus подсказал вот так это сделать:

    -----------------
    Evaluate( {@SendTo(} & doc.UserName(0) & {; copyTo ; blindCopyTo ; subject ; remark ; bodyFields )} ,doc)

    где doc = форма

    -----------------

    Если я все правильно понимаю, то у меня эта строчка должна выглядеть так:
    -----------------
    Evaluate( {@SendTo(} & Forma.UserName(0) & {; "" ; "" ; "Название темы" ; "" ; "" )} ,Forma)

    -----------------

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

    И кстати, почему UserName(0) - что оно означает.

    Помогите, плиз.

    Зарабнее благодарен за ваши ответы.
     
  2. Mihal

    Mihal Гость

    Ээээ..... А зачем @SendTo (кстати, а где Вы взяли такую собакоформулу?!) помещать в Evaluate? Прекрасно можно отправить скриптами (метод Send класса NotesDocument). По поводу @UserName(0):
    --------------------------------------------------------------------------------
    @UserName ( index )
    Parameters
    index
    Note This parameter is new with Release 5.
    Number. Optional. Indicating the index of user names. 0 is for primary name and 1 is for the alternate name. If this parameter is omitted, @UserName returns the primary name.
    -----------------------------------------------------------------------------------
     
  3. ledi

    ledi Гость


    Про Evaluate ничего не скажу - не я ее писал.

    Можно поподробнее, про скрипты? Если можно с примером.

    И кстати, а простыми действиями - Ответить отправителю не подойдет?

    З.ы.: как оказалось - отправить отправителю подойдет - теперь осталось выяснить, как простыми действиями не пустое письмо отправить, а в тело письма вложить содержимое документа.

    З.з.ы.: возможно, подойдет отправить документ. Вот сейчас пойду проверю.

    Проверил. Вот, что странно. В "Ответить отправителю" есть галочка "Включить копию документа", но хотя я ее повесил - пользователю пришло пустое письмо. Единственное, что было написано в теле письма: "В ответ на:" И все.
    Скорее всего из-за того, что текст набирается в поле. Хотя не уверен.
     
  4. Mihal

    Mihal Гость

    <!--QuoteBegin-ledi+30:10:2006, 10:17 -->
    <span class="vbquote">(ledi @ 30:10:2006, 10:17 )</span><!--QuoteEBegin-->Про Evaluate ничего не скажу - не я ее писал.

    Можно поподробнее, про скрипты? Если можно с примером.

    И кстати, а простыми действиями - Ответить отправителю не подойдет?
    [snapback]46675" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    про просыте действия - не понял. По поводу примера:
    -----------------------------------------------------------------------
    Call notesDocument.Send( attachForm [, recipients ] )
    Parameters
    attachForm
    Boolean. If True, the form is stored and sent along with the document. If False, it isn't. Do not attach a form that uses computed subforms.
    recipients
    String or array of strings. Optional. The recipients of the document. See below.
    -----------------------------------------------------------------------
    Вот пример:
    //Получаем документ
    Call doc.Send(True,doc.UserName)

    По поводу UserName'а. Я ошибся (вернее, недоглядел). Я написал про собачную формулу. Я если вести речь о итемах, то конструкция doc.<название поля> ВСЕГДА возвращает массив. Посему когда понятно, что итем содержит одно значение - можно сразу обращаться к первому элементу.
     
  5. ledi

    ledi Гость

    Объясню.
    Мне надо при нажатии на кнопку отослать письмо пользователю.
    Кнопку можно запрограммировать формулой, LotusScropt, JavaScript или ПРОСТЫМ ДЕЙСТВИЕМ.

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

    Вот. А в настройке действий "Ответить отправителю" есть чекбокс "Включить копию документа".

    Но почему-то этот чекбокс не вставляет в письмо копию документа. И я пока не понимаю почему.

    Ладно, сенк за наводку на Calls
     
  6. ledi

    ledi Гость

    Сразу вопрос - это LotusScript или JavaScript?
    Я так понимаю, что LotusScript.
    То есть, если применить это к моей задаче, то выходит следующее:

    Call notesDocument.Send( False [, Author ] )

    или

    Call doc.Send(False,doc.Author)

    Мне не надо отсылать человеку форму целиком - мне надо отослать только ее содержимое, поэтому False.

    Но при попытке сделать это я получаю следующие ошибки.
    В LotusScript:
    -------
    Sub Click(Source As Button)
    Call notesDocument.Send( False , Author )
    End Sub
    -------
    Ошибка - Данные не сохранены из-за ошибок в программе.

    В java script:
    -------
    Call notesDocument.Send( False , Author )
    -------
    Missing ; before statement.

    Что мне поправить?
     
  7. Mihal

    Mihal Гость

    Ээээ... У меня создаётся впечатление что лотус изнутри Вы видите первый раз в жизни (может, второй, первый был вчера). Вы не инициализировали объект класса NotesDocument. Вам нужна не подсказка, а вводный курс по разработке в лотусе. Мы так можем переписываться до бесконечности. Мой свет, посмотрите хелп. Там всё прекрасно написано. На всё (тот же Send) есть прекрасные примеры и т.д.
     
  8. ledi

    ledi Гость

    Прочитав в хелпе про NotesDocumentClass, SendMethod и особенно посмотрев примеры,

    увидел то, что мне подходит

    5. This script mails a document to anyone listed in its DocAuthor field.
    Call doc.Send( True, doc.DocAuthor )

    То есть, если у меня есть поле Author, и мен надо отправлять письмо пользователю, почтовый ящик которого там стоит, то мне надо написать.

    Call doc.Send( True, doc.Author )

    или

    Call doc.Send( False, doc.Author )

    если мне не надо отсылать форму.

    Но когда я это подставляю в поле вычисления формул, etc и получаю такую запись:

    Sub Click(Source As Button)
    Call doc.Send( False, doc.Author )
    End Sub

    то получаю следующий Error.

    [имя_кнопки]: Click: 1: Not a sub or function name: DOC


    Не столько Лотус, сколько Дизайнер я вижу второй раз. :)

    Но что поделаешь, поставили задау, я ее решил почти полностью, осталось только назначить действие кнопкам. А вот тут я и столкнулся с проблемой.
     
  9. root

    root Гость

    дефолтный хелп самая тема :)
     
  10. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    ну во-первых, друстуйтэ )))
    [snapback]46672" rel="nofollow" target="_blank[/snapback]</div>[/quote] - моя ошибка переплутал с MailSend

    ну а вот скрипт, создает письмо , указывает тему, тело, и адресата(из текущего документа)
    З,Ы, надо проверить бо писал на скорую руку
    Код (Text):
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set doc = New NotesDocument( db )
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = workspace.CurrentDocument
    Set CurDoc = uidoc.Document

    doc.Form = "Memo"
    doc.SendTo = CurDoc.GetItemValue( "какоето там поле с авторами" )
    doc.Subject = "То что мы пишем в теле письма"
    Call doc.Send( False )
     
  11. Mihal

    Mihal Гость

    Надо инициализировать объект класса NjtesDOcument. Лотус фтыкает в строку doc.Send(.....) и непонимает что такое doc. Надо ему объяснить. Объяснение зависит от конкретной задачи. Например, если искомый документ текущий, то можно сделать так:

    Sub Click(...)
    Dim ws As New NotesUIWorkspace 'Текущее рабочее пространство. Обратите внимание, что я сразу инициализировал объект с помощью New
    Dim uidoc As NotesUIDOcument 'Представление текущего документа на экране
    Dim doc as NotesDOcument 'Текщий документ "в базе"

    Set uidoc=ws.CurrentDOcument
    Set doc=uidoc.Document

    Call doc.send(....)
    End Sub
     
  12. root

    root Гость

    Для: ledi

    <!--QuoteBegin-ledi+30:10:2006, 09:38 -->
    <span class="vbquote">(ledi @ 30:10:2006, 09:38 )</span><!--QuoteEBegin-->Если у меня есть поле RadioButton, в котором находится список людей, которым надо отправить письмо - как мне подставить в поле "SendTo" значение выделенного человека в поле RadioButton
    [snapback]46667" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    мульти поле field1 " Имя |1; имя2|2;" и потом @GetField("Filed1") это в choices поле радио буттон
    потом перебором по выбору и evaluate "LotusScript" или же на чистом lotusScript'e
     
  13. ledi

    ledi Гость

    Проверил. Не обрабатывает поле "Memo". Подставляю туда название моей формы (start) (ывглядит, как doc.Form = "start") - не работает. При открытии письма пишет, что "Не удается найти форму: start".

    Подставляю туда название текстового поля, в котором находится исходное сообщение пользователя с комментариями администратора (Text) (ывглядит, как doc.Form = "Text") - не работает. При открытии письма пишет, что "Не удается найти форму: Text".

    В обоих случаях в теле письма нет текстового поля, в котором находится исходное сообщение пользователя с комментариями администратора.
     
  14. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-ledi+30:10:2006, 14:50 -->
    <span class="vbquote">(ledi @ 30:10:2006, 14:50 )</span><!--QuoteEBegin-->Не обрабатывает поле "Memo"
    [snapback]46710" rel="nofollow" target="_blank[/snapback]​
    [/quote]жжоте однако....

    так понятие переменные, константы, типы данных Вам извесны?

    "Memo" - это не поле, это значить что полю Form созданного документа doc мы присваиваем ТЕКСТОВОЕ значение, в данном случае "Memo" , что в общем не отличаеться от "1", "Вася пупкин" и .т.д. (кол-вом символов правда отличаються)


    Пачему Memo ??? так как это форма по-дэфолту которая используетсья в почтовых базах юзверей, в рус.клиентах завёться "Записка"

    <!--QuoteBegin-ledi+30:10:2006, 14:50 -->
    <span class="vbquote">(ledi @ 30:10:2006, 14:50 )</span><!--QuoteEBegin-->Подставляю туда название текстового поля, в котором находится исходное сообщение пользователя с комментариями администратора (Text) (ывглядит, как doc.Form = "Text") - не работает. При открытии письма пишет, что "Не удается найти форму: Text".
    [snapback]46710" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Тело сообщение(большое поле куда все вставиться :) ) это будет Body


    - я ошибся!

    doc.Subject = "То что мы пишем в теМе письма" !!!


    doc.Subject = CurDoc.MyField(0)

    MyField - поле Вашей формы, из которой будет братсья тема


    З,Ы, ХЕЛП читать, и не лезть сразу... разобраться шо такое типы данных, КЛАСЫ, переменные и т.д.
     
  15. ledi

    ledi Гость

    Да я уже на этом ХЕЛПЕ 4 рабочих дня сижу, из которых 2 бьюсь на вопросом, как мне при отсылке письма в строку "Кому" подставить значение из поля "Author", в тело письма подставить значение из поля "TextField". :)
     
  16. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-ledi+30:10:2006, 15:24 -->
    <span class="vbquote">(ledi @ 30:10:2006, 15:24 )</span><!--QuoteEBegin-->как мне при отсылке письма в строку "Кому" подставить значение из поля "Author"
    [snapback]46714" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    doc.SendTo = CurDoc.GetItemValue( "Author" )
    или так
    doc.SendTo = CurDoc.Author(0)
     
  17. ledi

    ledi Гость


    УРА!!!!!! ПОЛУЧИЛОСЬ!!!! MORPHEUS - BIG SENK!!!

    За что спасибо? Ну, во-первых, за готовый скрипт, а во вторых за волшебное слово BODY.

    В общем, получается так.

    -------------------------
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set doc = New NotesDocument( db )
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = workspace.CurrentDocument
    Set CurDoc = uidoc.Document

    doc.Form = "start"
    doc.Body = CurDoc.Text(0)
    doc.SendTo = CurDoc.GetItemValue( "Author" )
    doc.Subject = "Ваша просьба удовлетворена"
    Call doc.Send( False )
    End Sub
    -------------------------
    Надо было просто добавить в скрипт одну строку ( doc.Body = CurDoc.Text(0) ).
    Теперь получается, что в поле Тема, Кому и в Тело_Письма подставляются те данные, которые мне нужны.
    А строку
    doc.Form = "start"
    можно смело удалять, т.к. передавать форму пользователю мне не надо.
     
  18. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-ledi+30:10:2006, 15:35 -->
    <span class="vbquote">(ledi @ 30:10:2006, 15:35 )</span><!--QuoteEBegin-->можно смело удалять, т.к. передавать форму пользователю мне не надо.
    [snapback]46718" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Не совсем правильно...

    документ в лотусе отображаеться пользователю по форме, если формы нет физически, документ всёравно будет!Если в поле Form прописана несуществующая форма то <!--QuoteBegin-ledi+30:10:2006, 14:50 -->
    <span class="vbquote">(ledi @ 30:10:2006, 14:50 )</span><!--QuoteEBegin-->"Не удается найти форму: start".
    [snapback]46710" rel="nofollow" target="_blank[/snapback]​
    [/quote]


    а поле Form - надо заполнять, хотя если в базе лотуса какаято форма определена как форма по умолчанию то можна и не заполнять(как это сделано в почтовых базах, потому у Вас и получилось отобразить документ без заполнения поля Form )
     
  19. ledi

    ledi Гость


    Очень странно. Тогда почему у меня в почте при открытии письма было так.

    1. Если в форме было написано doc.Form = "start" и Call doc.Send( True ) - пользователь при открытии письма получал новое окно в виде формы. Это понятно. Есть название формы, она передалась пользователю с почтой и он ее увидел.

    Непонятен второй вариант

    2. Если в форме было написано doc.Form = "start" и Call doc.Send( False ) - пользователь при открытии письма получал сообщение "Не удается найти форму: start". Это вроде с одной стороны тоже понятно. Есть название формы, но она не передавалась, поэтому пользователь и не видит форму.
    Непонятно, зачем тогда в данном случае вводить строку doc.Form = "start", если она не несет никакой функции.
     
  20. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    СОРИ! лаги инета


    Как написано в хелпе
    attachForm - обязательный параметр где указываеться что при True - вставлять форму, при False - не вставлять
    Сидеть над хелпом надо !!!! :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей