Поле Richtext в новом документе

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

  1. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    В форме есть поле RichText c именем "Pharmacie".

    Код (Text):
        Set doc = conv_db.CreateDocument
    doc.Form = "Installation"  

    Dim rtItem As NotesRichtextItem
    Set rtitem = New NotesRichTextItem( doc, "Pharmacie" )
    ...
    то в результате в документе образуется 2 поля с именем "Pharmacie", причем первое пустое, а во втором та информация которую я записал программно.
    Код (Text):
        Set doc = conv_db.CreateDocument
    doc.Form = "Installation"  

    Dim rtItem As NotesRichtextItem
    Set rtitem = doc.GetFirstItem("Pharmacie")
    ...
    А если так, то rtitem = Nothing. Как мне сделать так чтобы поле было только одно и в него можно было программно записать данные ?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Сделать рефреш документа с параметром True.
     
  3. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Код (Text):
        Dim doc As NotesDocument
    Set doc = conv_db.CreateDocument
    doc.Form = "Installation"

    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = ws.EditDocument( True, doc)
    Call uidoc.Refresh(True)

    Call doc.Save(True, True)
    Dim unid As String
    unid = doc.UniversalID
    Set doc = Nothing  
    Set doc = conv_db.GetDocumentByUNID(unid)  

    Dim rtItem As NotesRichtextItem
    Set rtitem = doc.GetFirstItem("Pharmacie")
    Вот как я записал - но в результате всеравно rtitem = Nothing. Что я сделал не так ?

    А, понял, полуилось, Refresh надо делать после Save
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Потому что doc и uidoc(.Document) - это разные документы.
    В doc ты нигде не создаешь поле Pharmacie.



    Сделай так.
    Код (Text):
    Set uidoc = ws.EditDocument( True, doc)
    Call uidoc.Refresh(True)
    Set doc = uidoc.Document
    Хотя что-то мне не нравится это.
     
  5. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Эх, вообщем плохо получается - вот такой код дает в результте аж 3 (три) поля Pharmacie в документе. Почему ?
    Код (Text):
       
    Dim doc As NotesDocument
    Set doc = conv_db.CreateDocument
    doc.Form = "Installation"  
    Call doc.Save(True, True)

    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = ws.EditDocument( True, doc)
    Call uidoc.Refresh(True)

    Dim unid As String
    unid = doc.UniversalID
    Set doc = Nothing

    Set doc = conv_db.GetDocumentByUNID(unid)  

    Dim rtItem As NotesRichtextItem
    Set rtitem = doc.GetFirstItem("Pharmacie")

    Dim soc As NotesDocument   
    set soc = ...<инициализация soc> .....

    Call rtItem.AppendDocLink(soc, "", "soc")
    Call rtItem.AddNewLine(1)

    Call doc.Save(True, False)
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Код страшный какой-то. Ты хоть скажи что нужно?
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    ежели не нужно это делать в UI - делайте через DXL (выгрузка, изменение, загрузка)
    глюкозявые они - UI классы... (приспособится можно - но, часто, не нужо)
    выглядит типа того:
    <pardef id='15'/>
    <par def='15'><doclink document='D40588E10CB6D593C3256F8C005EDA5E' view='57D34A0095AC1EECC3256F95004490F9'
    database='C3256E07004B1B77' description='My DB' server='CN=server/O=CRUINTERNET'/>-doc link</par>

    <pardef> - можете взять и предыдущего параграфа (ссылка осущ. по номеру)
     
  8. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Согласен, что страшный. А нужно то совсем не много. Создать документ формы "Installation" и в нем в поле "Pharmacie" создать линк на другой документ soc. Вообщем у меня это получается, но кривость заключается в том что сейчас полей "Pharmacie" целых 3 (три).
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Непонятно, зачем открывать для этого документ(ws.EditDocument( True, doc)), а потом еще сохранять? Т.к. когда захотим сохранить открытый документ, то получим конфликт.
    То, что поля плодятся, это нормально для ричтекста.
     
  10. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    ws.EditDocument( True, doc) я делаю для того чтобы получить uidoc. А Save - можно сказать, что это мой "творческий" поиск. Но я делал и как вы сказали,
    Код (Text):
    Call uidoc.Refresh(True)
    Set doc = uidoc.Document
    , без Save, результат все равно тот же самый - три поля Pharmacie. Причем первое и третье пустые, а во втором моя ссылка. Откуда они плодятся ?
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А зачем тебе uidoc?
     
  12. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    А как же мне сделать "рефреш документа с параметром True." - я как раз для этого и добываю uidoc, так как в нем и есть метод refresh, или я чего-то не понял ?
     
  13. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ты в бакэнде полностью работаешь что ли?
     
  14. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    да
     
  15. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Тогда не важно что там на форме есть.
    Верен самый первый код:
    Если поля плодятся, то это не страшно. Попробуй документ открыть и посмотреть всё ли нормально.
     
Загрузка...

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