Как Добраться До Документа

Тема в разделе "Lotus - Программирование", создана пользователем Dimok-163rus, 26 авг 2013.

  1. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    Нахожусь в документе "сущ.факты"(одна из вкладок в общ.документе"рублевые облигации").
    В "рублевых облигациях" имеется много вкладок/документов, один из которых купонный период(в нем встроенное представление"купон.период встр"),народ, как мне добраться до полей этого встроенного представления?
    У меня есть общее связывающее звено этих документов ID.
    Поля "существ.фактов" я нахожу обращаясь к док-ту pdoc,
    поля на любой вкладке "рублевой облигации" могу найти через childdoc.
    А как вытащить поле из встроенного представления, не могу додуматься...прилагаю код(в агенте) и парочку фото, чтоб поскорей разобраться

    Код (LotusScript):
    %REM
    Agent Приложение 3
    Created 26.08.2013 by Dmitry Matveev/oao
    Description: Comments for Agent
    %END REM

    Option Public
    Option Declare

    Sub Initialize

    'обработчик ошибок
    On Error GoTo MesError
    '_________________________________________
    Dim ws As New NotesUIWorkspace
    Dim sess As New NotesSession

    Dim pdoc As NotesDocument,childdoc As NotesDocument, tmpDoc As NotesDocument, profile As NotesDocument
    Dim dc As NotesDocumentCollection

    Dim db As NotesDatabase, sprdb As NotesDatabase

    Dim uidoc As NotesUIDocument

    Dim view As NotesView

    'Поля, необходимо которые выгрузить
    '   Dim Name(0) As Variant
    Dim Seria(0) As Variant
    Dim Number_reg(0) As Variant
    Dim Data_reg_izm(0) As Variant
    Dim Num_period(0) As Variant
    Dim Data_protocol(0) As Variant
    Dim Nam_protocol(0) As Variant
    Dim Data_resh(0) As Variant
    Dim Num_resh(0) As Variant
    Dim Doc_osnova_kupon(0) As Variant
    Dim Data_period_start(0) As Variant
    Dim Data_period_end(0) As Variant
    Dim Razmer_kupon_nach(0) As Variant
    Dim Stavka_kupon_p(0) As Variant
    Dim Stavka_kupon_r(0) As Variant
    Dim Forma_vip_dohod(0) As Variant
    Dim Data_v_kupon(0) As Variant
    Dim Dol_podp(0) As Variant
    Dim Osn_podpis(0) As Variant
    Dim Podpisant(0) As Variant
    Dim Data_sob(0) As Variant 

    Set uidoc = ws.CurrentDocument
    Set pdoc = uidoc.Document  
    Set db = sess.CurrentDatabase

    'Профиль системы и база справочника
    Set profile = db.GetProfileDocument("ConfigPrf")
    If profile.pthRefer(0)="" Then
    MessageBox "В профиле конфигурации системы не указан путь к БД Справочники!",0 ,"Ошибка настройки системы"
    Exit Sub
    End If

    Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))

    'Продолжать? 
    Dim askme As Variant
    askme = ws.Prompt(PROMPT_YESNO, "Вы уверены?", "Сгенерировать документ?")
    If askme=0 Then
    Exit Sub
    End If

    '-------------------------------------------------------------------------------------------------------------------------------------------
    Call uidoc.Save

    Dim itm As NotesRichTextItem
    Set itm = pdoc.GetFirstItem("Sfakt")
    If Not itm Is Nothing Then

    Call pdoc.RemoveItem("Sfakt")
    '       pdoc.Flag_Close="1"
    Call pdoc.Save( True, False )
    End If

    '--------------------------------------------------------------------------------------------------------------------------------------
    Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("ID_Rubl_obl")(0))   

    'Что делаем с полями
    '   Msgbox childdoc.Name(0)
    '   Msgbox childdoc.data_protocol(0)
    '  MsgBox childdoc.Nam_protocol(0)
    '   Msgbox childdoc.Nomber_reg(0)
    '   Msgbox childdoc.Data_reg_izm(0)  
    '   Msgbox childdoc.childdoc.Вкладка "досрочное погашение"кол-во погаш.шт(0)
    '   Msgbox childdoc.childdoc.Вкладка "досрочное погашение"[301](0)
    '   Msgbox childdoc.Osn_pogash(0)
    '   Msgbox childdoc.childdoc.Вкладка "досрочное погашение"Дата досрочн.погашения"(0)  
    '   Msgbox pdoc.Dol_podp(0)
    '   Msgbox pdoc.Osn_podpis(0)
    '   Msgbox pdoc.Podpisant(0)
    '   Msgbox Today

    '-------------------------------------------------------------------------------------------------------------------------------------------   

    '   Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))
    Dim pth_str$
    Dim coll1 As NotesDocumentCollection
    Dim dt1 As New NotesDateTime("")
    Dim doc1 As NotesDocument 'Справочный док
    'По коду шаблона ищем в справочнике шаблонов нужную карточку шаблона
    pth_str$=""
    Set coll1 = sprdb.Search({Form = "TmpForm_Profile" & ShortName = "P003"},Nothing,0)
    '   Msgbox "Количество док-тов : " & coll1.Count
    Dim rttmp As NotesRichTextItem
    If coll1.Count >0 Then
    Set doc1 = coll1.GetFirstDocument
    Set rttmp = doc1.GetFirstItem("TmpDoc")
    ForAll o In rttmp.EmbeddedObjects
    If Right(o.Name,4)=".dot" Then
    pth_str$ = o.Name
    GoTo ExtrMark
    End If
    End ForAll
    End If
    If pth_str$="" Then
    MessageBox "Невозможно перейти к генерации поручения: в справочнике шаблонов отсутствует шаблон поручения!",,"Внимание!"
    Exit Sub
    End If

    ExtrMark:  
    'Создаем каталог временной выгрузки на С
    Dim dt As New NotesDateTime( "" ),dt_date$,dt_time$,tmppth_str
    Call dt.SetNow
    dt_date$ = dt.DateOnly
    dt_time$ = dt.TimeOnly
    dt_date$ = Left(dt_date$,2)+Right(Left(dt_date$,5),2)+Right(dt_date$,2)
    dt_time$ = Left(dt_time$,2)+Right(Left(dt_time$,5),2)+Right(dt_time$,2)

    tmppth_str = Environ$("TEMP") + "\TmpTpl_"+dt_date$+"_"+dt_time$
    MkDir tmppth_str

    'Выгружаем шаблон в созданную директорию
    Dim object As NotesEmbeddedObject
    Set object = rttmp.GetEmbeddedObject(pth_str$ )
    Call object.ExtractFile (tmppth_str & "\" & CStr(pth_str$))

    '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
    Dim Word As Variant, nm_doc$,ReplaceChr
    Dim WordDoc As Variant

    'Новый объект Word

    Set Word = CreateObject("Word.Application") 'Создание объекта Word'a
    Call Word.documents.add(tmppth_str & "\" & CStr(pth_str$)) 'Создаем новый документ на основе соответствующего шаблона
    Set WordDoc = Word.activedocument


    'Присваивание полям-Word'a значений из полей notes-документа
    worddoc.FormFields(1).result = childdoc.Name(0)
    worddoc.FormFields(2).result = childdoc.Seria(0)
    worddoc.FormFields(3).result = childdoc.Number_reg(0)
    worddoc.FormFields(4).result = childdoc.Data_reg_izm(0)
    worddoc.FormFields(5).result = childdoc.Num_period(0)'kupon
    worddoc.FormFields(6).result = childdoc.data_protocol(0)
    worddoc.FormFields(7).result = childdoc.Nam_protocol(0)
    worddoc.FormFields(8).result = childdoc.Data_resh(0)
    worddoc.FormFields(9).result = childdoc.Num_resh(0)
    worddoc.FormFields(10).result = childdoc.Data_resh(0)
    worddoc.FormFields(11).result = childdoc.Doc_osnova_kupon(0)
    worddoc.FormFields(12).result = childdoc.Data_resh(0)
    worddoc.FormFields(13).result = childdoc.Num_resh(0)
    worddoc.FormFields(14).result = childdoc.Num_period(0)'kupon
    worddoc.FormFields(15).result = childdoc.Data_period_start(0)'kupon
    worddoc.FormFields(16).result = childdoc.Data_period_end(0)'kupon
    worddoc.FormFields(17).result = childdoc.Num_period(0)'kupon
    worddoc.FormFields(18).result = childdoc.Razmer_kupon_nach(0)'kupon
    worddoc.FormFields(19).result = childdoc.Stavka_kupon_p(0)'kupon
    worddoc.FormFields(20).result = childdoc.Stavka_kupon_r(0)'kupon
    worddoc.FormFields(21).result = childdoc.Forma_vip_dohod(0)
    worddoc.FormFields(22).result = childdoc.Data_v_kupon(0)'kupon
    worddoc.FormFields(23).result = childdoc.Num_period(0)'kupon
    worddoc.FormFields(24).result = childdoc.Data_v_kupon(0)'kupon
    worddoc.FormFields(25).result = pdoc.Dol_podp(0)
    worddoc.FormFields(26).result = pdoc.Osn_podpis(0)
    worddoc.FormFields(27).result = pdoc.Podpisant(0)
    worddoc.FormFields(28).result = Today  

    nm_doc$ = "File3.doc"
    WordDoc.saveas(tmppth_str + "\"+nm_doc$)

    WordDoc.close

    If pdoc.HasItem("Sfakt") Then
    Set rttmp = pdoc.GetFirstItem("Sfakt")
    Else
    Set rttmp = New NotesRichTextItem(pdoc, "Sfakt")
    End If

    'Добавляет в RTF-поле присоединенный файл или ссылку на него.
    Set object = rttmp.EmbedObject( EMBED_ATTACHMENT, "nm_doc$", tmppth_str + "\"+nm_doc$)

    '   pdoc.Flag_Close="1"
    '   Call uidoc.FieldSetText("$KM", "6" )
    Call pdoc.Save( True, True )
    pdoc.SaveOptions = "0"

    Call ws.ViewRefresh
    Call uidoc.Close    ()
    Set uidoc = ws.EditDocument(False, pdoc)

    '   Удаляем директорию
    Kill tmppth_str & "\" & CStr(pth_str$)
    Kill tmppth_str + "\"+nm_doc$
    RmDir tmppth_str
    Exit Sub

    MesError:  
    'Обработка сбоев
    '   ErrNo = Err
    '   ErrLine = Erl
    '   ErrMessage = Error
    MessageBox "Button Click " + CStr(Err) + " " + CStr(Erl) + " " + Error
    Exit Sub

    End Sub
    во встроенном представлении "купонный период встр" будет сгенерировано несколько купонных периодов, мне нужно вывести диалоговоое окно пользователю, с этим встроенным представлением "купонный период встр", чтобы пользователь выбрал именно какой из всей серии купонных периодов ему взять и уже оттуда мне нужно изъять некоторые поля
     

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      327,4 КБ
      Просмотров:
      241
    • 2.jpg
      2.jpg
      Размер файла:
      388,8 КБ
      Просмотров:
      242
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    да точно также.

    0. Имеем рублевый, открытый на экране.
    1. Получаем существенный факт из рублевых
    2. Получаем купоны из существенных, так же как существенные из рублевых, только ключ другой и представление (если получается через представление.)
    Если на экране открыт существенный факт, то просто получаем купон/купоны по ключу.
    Но если требуется только для этого:
    То смотри NotesUIWorkspace.PickLIstCollection, возвращает коллекцию выбранных документов в диалоге.
    С параметрами думаю разберешся, главное тебе надо использовать Single Category
     
  3. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    "сущ.факт" идет тоже как отдельный документ, поэтому его поля не находятся в полях рублевых облигаций(если на пустом месте в "рублевых облигациях" кликнем мышью по свойствам -> тут не увижу ни нужных полей из существенных фактов" ни полей из "купонного периода встр."

    1) нахожусь в сущ.фактах:
    беру поля
    Код (LotusScript):
    Dim pdoc As NotesDocument,childdoc As NotesDocument
    Dim db As NotesDatabase

    Dim uidoc As NotesUIDocument

    Set uidoc = ws.CurrentDocument
    Set pdoc = uidoc.Document  
    Set db = sess.CurrentDatabase

    'получаем ссылку на "сущ.факты" по общему Unid
    Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("ID_Rubl_obl")(0))

    'после вижу любое поле на сущ.фактах:
    'Что делаем с полями
    '   Msgbox childdoc.Name(0)
    '   Msgbox childdoc.data_protocol(0)
    чтобы получить "купон.период встр.", находясь в сущ.фактах, ключ используем тот же? Ведь он одинаковый? по Unid?
    мне сначала бы нужно поле увидеть на этом встроенном представлении, а потом уже капать глубже, к коллекциям купонов из этого встроен.представления
     
  4. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Используем ключ, который связывает купоны с существ фактами.
     
  5. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    Тоесть, если хочу получить доступ к какому то другому доку, который имеет свой ID, нужно добавить поле ID в доке(котором нахожусь) и по этому полю ID, по средствам:
    Код (LotusScript):
    'получаем ссылку на "сущ.факты" по общему Unid
    Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("поле ID")(0))
    работать с полями childdoc?

    А если нужно:
    во встроенном представлении "купонный период встр" будет сгенерировано несколько купонных периодов, мне нужно вывести диалоговое окно пользователю, с этим встроенным представлением "купонный период встр", чтобы пользователь выбрал именно какой из всей серии купонных периодов ему взять и уже оттуда мне нужно изъять некоторые поля

    Заюзать NotesUIWorkspace.PickLIstCollection, вернуть коллекцию док-тов, с помощью диалогового окна пользователь кликом на нужный купон.период выбирает нужный док, беру его ID и по средствам того же
    Код (LotusScript):
    'получаем ссылку на "сущ.факты" по общему Unid
    Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("поле ID")(0))
    работать дальше? Правильно понял?
     
  6. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Если существует(необходима) любая связь между документами - всегда надо иметь коле-ключ.

    NotesUIWorkspace.PickLIstCollection вернет коллекцию документов, которые были отражены.
    То есть если для отображения будут купоны, то вернется коллекция купонов (один или несколько документов, зависит от выбора).
    Следовательно не надо будет играться через связи, можно сразу получить документ купона:
    Код (LotusScript):
    Set KuponColl = NotesUIWorkspace.PickLIstCollection(...)
    if KuponColl.Count < 1 then exit Sub ' Нажали Cancel
    set kupon = KuponColl.GetFirstDocument ' Вернет первый купон в коллекции, если выбран один документ, то это будет именно он.
     
  7. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    savl, прописал метод PickListCollection, у меня ошибку выдает, на имя базы данных ругается да?

    Код (LotusScript):
       
    'Выгрузка коллекции документов
    Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db, "Dosroch_pogash", "Выбор документа", "Выберите купон для изъятия полей", "Num_period")
    If dc.Count = 0 Then
    MsgBox "Выбор не состоялся" , , "Info"
    End If
     

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      309,8 КБ
      Просмотров:
      123
  8. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    А хелпе не посмотрел?)
    databaseFileName$ = db.Filepath
     
  9. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    Диалоговое окно возникает, документ выбираю из коллекции, теперь не могу взять значения трех полей выбранного документа, в коде вроде все пошагово прописал, а в примерах не могу найти ничего подобного блин, если есть время, кидаю код, может где наглядная ошибка у меня?

    Код (LotusScript):
    Sub Initialize
    'обработчик ошибок
    On Error GoTo MesError
    '_________________________________________
    Dim ws As New NotesUIWorkspace
    Dim sess As New NotesSession

    Dim pdoc As NotesDocument, childdoc As NotesDocument, tmpDoc As NotesDocument, profile As NotesDocument
    Dim dc As NotesDocumentCollection

    Dim db As NotesDatabase, sprdb As NotesDatabase

    Dim uidoc As NotesUIDocument


    Dim view As NotesView

    'Поля, необходимо которые выгрузить
    '   Dim Name(0) As Variant   
    Dim Seria(0) As Variant
    Dim Number_reg(0) As String
    Dim Data_reg_izm(0) As Variant
    Dim Kol(0) As Variant     '300 childdoc_2.Kol(0) "досрочное погашение"
    Dim Osnovanie(0) As Variant '301 childdoc_2.Osnovanie(0) "досрочное погашение"
    Dim Osn_pogash(0) As Variant   
    Dim Data_dosr(0) As Variant '299 childdoc_2.Data_dosr(0) "досрочное погашение"
    Dim Dol_podp(0) As Variant   
    Dim Osn_podpis(0) As Variant   
    Dim Podpisant(0) As Variant    
    '  Dim Today As Variant

    Set uidoc = ws.CurrentDocument
    Set pdoc = uidoc.Document  
    Set db = sess.CurrentDatabase

    'Профиль системы и база справочника
    Set profile = db.GetProfileDocument("ConfigPrf")
    If profile.pthRefer(0)="" Then
    MessageBox "В профиле конфигурации системы не указан путь к БД Справочники!",0 ,"Ошибка настройки системы"
    Exit Sub
    End If

    Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))

    'Продолжать? 
    Dim askme As Variant
    askme = ws.Prompt(PROMPT_YESNO, "Вы уверены?", "Сгенерировать документ?")
    If askme=0 Then
    Exit Sub
    End If

    '-------------------------------------------------------------------------------------------------------------------------------------------
    Call uidoc.Save

    Dim itm As NotesRichTextItem
    Set itm = pdoc.GetFirstItem("Sfakt")
    If Not itm Is Nothing Then

    Call pdoc.RemoveItem("Sfakt")
    Call pdoc.Save( True, False )
    End If

    '--------------------------------------------------------------------------------------------------------------------------------------
    Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("ID_Rubl_obl")(0))   
    'Что делаем с полями
    '   Msgbox childdoc.Name(0)
    '   Msgbox childdoc.Seria(0)
    '   Msgbox childdoc.Nomber_reg(0)
    '   Msgbox childdoc.Data_reg_izm(0)  
    '   Msgbox childdoc_2.childdoc.Вкладка '300 childdoc.Kol(0) "досрочное погашение"
    '   Msgbox childdoc_2.childdoc.Вкладка "досрочное погашение"[301](0)
    '   Msgbox childdoc.Osn_pogash(0)
    '   Msgbox childdoc_2.childdoc.Вкладка "досрочное погашение"Дата досрочн.погашения"(0)
    '   Msgbox pdoc.Dol_podp(0)
    '   Msgbox pdoc.Osn_podpis(0)
    '  Msgbox pdoc.Podpisant(0)
    '   Msgbox Today

    '-------------------------------------------------------------------------------------------------------------------------------------------   
    'Выгрузка коллекции документов
    Dim childdoc_2 As NotesDocument
    '   Set childdoc_2 = db.GetDocumentByUNID(pdoc.GetItemValue("ID_Rubl_obl")(0)) 

    Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db.Filepath,"Dosrochno", "Выбор документа", "Выберите купон для изъятия полей", "ID_Rubl_obl")
    If dc.Count = 0 Then
    MsgBox "Выбор не состоялся" , , "Info"
    Exit Sub
    Else
    'Пользователь кликнул на нужном документе
    MsgBox "Документ выбран!"
    Set childdoc_2 = uidoc.Document

    'Должен вывести значение выбранного документа!!!!!!!!!!!!!!!!!!!!!!
    MsgBox childdoc_2.Kol(0)
    MsgBox childdoc_2.Osnovanie(0)
    MsgBox childdoc_2.Data_dosr(0)     
    End If   

    '   Set sprdb = sess.GetDatabase(db.Server, profile.pthRefer(0))
    Dim pth_str$
    Dim coll1 As NotesDocumentCollection
    Dim dt1 As New NotesDateTime("")
    Dim doc1 As NotesDocument 'Справочный док
    'По коду шаблона ищем в справочнике шаблонов нужную карточку шаблона
    pth_str$=""
    Set coll1 = sprdb.Search({Form = "TmpForm_Profile" & ShortName = "P002"},Nothing,0)
    '   Msgbox "Количество док-тов : " & coll1.Count
    Dim rttmp As NotesRichTextItem
    If coll1.Count >0 Then
    Set doc1 = coll1.GetFirstDocument
    Set rttmp = doc1.GetFirstItem("TmpDoc")
    ForAll o In rttmp.EmbeddedObjects
    If Right(o.Name,4)=".dot" Then
    pth_str$ = o.Name
    GoTo ExtrMark
    End If
    End ForAll
    End If
    If pth_str$="" Then
    MessageBox "Невозможно перейти к генерации поручения: в справочнике шаблонов отсутствует шаблон поручения!",,"Внимание!"
    Exit Sub
    End If

    ExtrMark:  
    'Создаем каталог временной выгрузки на С
    Dim dt As New NotesDateTime( "" ),dt_date$,dt_time$,tmppth_str
    Call dt.SetNow
    dt_date$ = dt.DateOnly
    dt_time$ = dt.TimeOnly
    dt_date$ = Left(dt_date$,2)+Right(Left(dt_date$,5),2)+Right(dt_date$,2)
    dt_time$ = Left(dt_time$,2)+Right(Left(dt_time$,5),2)+Right(dt_time$,2)

    tmppth_str = Environ$("TEMP") + "\TmpTpl_"+dt_date$+"_"+dt_time$
    MkDir tmppth_str

    'Выгружаем шаблон в созданную директорию
    Dim object As NotesEmbeddedObject
    Set object = rttmp.GetEmbeddedObject(pth_str$ )
    Call object.ExtractFile (tmppth_str & "\" & CStr(pth_str$))

    '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
    Dim Word As Variant, nm_doc$,ReplaceChr
    Dim WordDoc As Variant

    'Новый объект Word

    Set Word = CreateObject("Word.Application") 'Создание объекта Word'a
    Call Word.documents.add(tmppth_str & "\" & CStr(pth_str$)) 'Создаем новый документ на основе соответствующего шаблона
    Set WordDoc = Word.activedocument

    'Присваивание полям-Word'a значений из полей notes-документа
    worddoc.FormFields(1).result = childdoc.Name(0)
    worddoc.FormFields(2).result = childdoc.Seria(0)
    worddoc.FormFields(3).result = childdoc.Number_reg(0)
    worddoc.FormFields(4).result = childdoc.Data_reg_izm(0)
    'worddoc.FormFields(5).result = childdoc_2.Kol(0) "досрочное погашение"кол-во погаш.шт(0)
    'worddoc.FormFields(6).result = childdoc_2.Osnovanie "доср.погашение"(0)
    worddoc.FormFields(7).result = childdoc.Osn_pogash(0)
    'worddoc.FormFields(8).result = childdoc_2.Data_dosr "доср.погашение"Дата досрочн.погашения"(0)
    worddoc.FormFields(9).result = pdoc.Dol_podp(0)
    worddoc.FormFields(10).result = pdoc.Osn_podpis(0)
    worddoc.FormFields(11).result = pdoc.Podpisant(0)
    worddoc.FormFields(12).result = Today

    nm_doc$ = "File2.doc"
    WordDoc.saveas(tmppth_str + "\"+nm_doc$)

    WordDoc.close

    If pdoc.HasItem("Sfakt") Then
    Set rttmp = pdoc.GetFirstItem("Sfakt")
    Else
    Set rttmp = New NotesRichTextItem(pdoc, "Sfakt")
    End If

    'Добавляет в RTF-поле присоединенный файл или ссылку на него.
    Set object = rttmp.EmbedObject( EMBED_ATTACHMENT, "nm_doc$", tmppth_str + "\"+nm_doc$)

    Call pdoc.Save( True, True )
    pdoc.SaveOptions = "0"

    Call ws.ViewRefresh
    Call uidoc.Close    ()
    Set uidoc = ws.EditDocument(False, pdoc)

    '   Удаляем директорию
    Kill tmppth_str & "\" & CStr(pth_str$)
    Kill tmppth_str + "\"+nm_doc$
    RmDir tmppth_str
    Exit Sub

    MesError:  
    'Обработка сбоев
    '   ErrNo = Err
    '   ErrLine = Erl
    '   ErrMessage = Error
    MessageBox "Button Click " + CStr(Err) + " " + CStr(Erl) + " " + Error
    Exit Sub
    End Sub
    После выбора документа из диалога, отрабатывает по ифу в коде строка:

    Код (Text):
    MsgBox "Документ выбран!"
     
  10. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    не верно!
    Код (LotusScript):
     Set childdoc_2 = uidoc.Document ' получить документ из открытого документа на экране
    а нам надо из коллекции, которую мы получили из PickList, следовательно надо работать с объектом dc
    Код (LotusScript):
    Set childdoc_2 = dc.GetFirstDocument()
     
  11. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    так тоже делал, он не отображает ни одного документа в childdoc_2

    этим самым мы же получаем первый док из коллекции, а нам надо получить тот док, который мы выбираем сами
     

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      324,8 КБ
      Просмотров:
      107
  12. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    ты когда в pickList что-то выбираешь, то создается коллекция выбранного, эта коллекция и возвращается.
    Следовательно dc.getfirstdocument вернет первый документ из коллекции выбранных документов в PickLIst
    А не отображает ничего, потому что вместо:
    Код (LotusScript):
     Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db.Filepath,"Dosrochno", "Выбор документа", "Выберите купон для изъятия полей", "ID_Rubl_obl")
    Должно быть:
    Код (LotusScript):
     Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db.Filepath,"Dosrochno", "Выбор документа", "Выберите купон для изъятия полей", <значение>)
    Это либо pdoc.GetItemValue("ID_Rubl_obl")(0) либо childDoc.GetItemValue("ID_Rubl_obl")(0)
    я не знаю относительно чего надо найти документы.
    Там должно быть значение поля, а не название поля.
     
  13. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    ура ура )) Спасибо тебе !
     
  14. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    savl,

    а если мне нужно поле документа со справочника(другой базы):
    Market_m - представление, в котором располагается документ,
    общее поле с pdoc - \"ID\",
    в параметрах ошибся?

    Базу данных нашел, в ней справочник виден, представление открывается, но документы в ней не видны...Поле общее я добавил в документ, котором нахожусь "ID".

    Код (LotusScript):
        'Выгрузка коллекции документов котировального списка
    Dim Market_m_doc As NotesDocument

    Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, "references.nsf", "Market_m", "Выбор документа", "Выберите документ для изъятия полей", pdoc.GetItemValue("ID")(0))
    If dc.Count = 0 Then
    MsgBox "Выбор не состоялся" , , "Info"
    Exit Sub
    Else
    'Пользователь кликнул на нужном документе
    '   MsgBox "Документ выбран!"
    Set Market_m_doc = dc.GetFirstDocument
    End If
     
  15. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Представление "Market_m" должно быть категоризировано, иначе не работает.
     
  16. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    "категоризованно" т.е?
     
  17. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
  18. Dimok-163rus

    Dimok-163rus Well-Known Member

    Регистрация:
    20 июн 2013
    Сообщения:
    88
    Симпатии:
    0
    там просто по одному документу все, категория то не нужна... т.е если категории не проставлю, у меня агент не увидит документов?
     
  19. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    эта треда уже становится похожей на переписку с поддержкой
     
  20. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Список не будет ограничен. ТЫ вызываешь функцию, которая должна отобразить список документов, которые находятся в определенной категории.
    Категории в представлении нет - список пуст.
    Если категории есть, но нет нужной - список пуст.
    Вот так отобразит все документы в представлении:
    Код (LotusScript):
    Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, "references.nsf", "Market_m", "Выбор документа", "Выберите документ для изъятия полей")
    Если надо только в пределах категории, то надо создать еще одно представление, сделать там категории и использовать в этой функции.
     
Загрузка...

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