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

Dimok-163rus

Well-Known Member
20.06.2013
89
0
#1
Нахожусь в документе "сущ.факты"(одна из вкладок в общ.документе"рублевые облигации").
В "рублевых облигациях" имеется много вкладок/документов, один из которых купонный период(в нем встроенное представление"купон.период встр"),народ, как мне добраться до полей этого встроенного представления?
У меня есть общее связывающее звено этих документов ID.
Поля "существ.фактов" я нахожу обращаясь к док-ту pdoc,
поля на любой вкладке "рублевой облигации" могу найти через childdoc.
А как вытащить поле из встроенного представления, не могу додуматься...прилагаю код(в агенте) и парочку фото, чтоб поскорей разобраться

Код:
%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
во встроенном представлении "купонный период встр" будет сгенерировано несколько купонных периодов, мне нужно вывести диалоговоое окно пользователю, с этим встроенным представлением "купонный период встр", чтобы пользователь выбрал именно какой из всей серии купонных периодов ему взять и уже оттуда мне нужно изъять некоторые поля
 

Вложения

  • 327.4 КБ Просмотры: 241
  • 388.8 КБ Просмотры: 242

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#2
да точно также.

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

Dimok-163rus

Well-Known Member
20.06.2013
89
0
#3
да точно также.

0. Имеем рублевый, открытый на экране.
1. Получаем существенный факт из рублевых
2. Получаем купоны из существенных, так же как существенные из рублевых, только ключ другой и представление (если получается через представление.)
Если на экране открыт существенный факт, то просто получаем купон/купоны по ключу.
Но если требуется только для этого:


То смотри NotesUIWorkspace.PickLIstCollection, возвращает коллекцию выбранных документов в диалоге.
С параметрами думаю разберешся, главное тебе надо использовать Single Category
"сущ.факт" идет тоже как отдельный документ, поэтому его поля не находятся в полях рублевых облигаций(если на пустом месте в "рублевых облигациях" кликнем мышью по свойствам -> тут не увижу ни нужных полей из существенных фактов" ни полей из "купонного периода встр."

1) нахожусь в сущ.фактах:
беру поля
Код:
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?
мне сначала бы нужно поле увидеть на этом встроенном представлении, а потом уже капать глубже, к коллекциям купонов из этого встроен.представления
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#4
чтобы получить "купон.период встр.", находясь в сущ.фактах, ключ используем тот же?
Используем ключ, который связывает купоны с существ фактами.
 

Dimok-163rus

Well-Known Member
20.06.2013
89
0
#5
Тоесть, если хочу получить доступ к какому то другому доку, который имеет свой ID, нужно добавить поле ID в доке(котором нахожусь) и по этому полю ID, по средствам:
Код:
'получаем ссылку на "сущ.факты" по общему Unid
Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("поле ID")(0))
работать с полями childdoc?

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

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

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#6
Если существует(необходима) любая связь между документами - всегда надо иметь коле-ключ.

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

Dimok-163rus

Well-Known Member
20.06.2013
89
0
#7
Если существует(необходима) любая связь между документами - всегда надо иметь коле-ключ.

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

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

Вложения

  • 309.8 КБ Просмотры: 123

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#8
А хелпе не посмотрел?)
Set notesDocumentCollection = notesUIWorkspace.PickListCollection( type% [, multipleSelection ], server$, databaseFileName$, viewName$, title$, prompt$ [, Singlecategory$ ] )
databaseFileName$ = db.Filepath
 

Dimok-163rus

Well-Known Member
20.06.2013
89
0
#9
Диалоговое окно возникает, документ выбираю из коллекции, теперь не могу взять значения трех полей выбранного документа, в коде вроде все пошагово прописал, а в примерах не могу найти ничего подобного блин, если есть время, кидаю код, может где наглядная ошибка у меня?

Код:
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
После выбора документа из диалога, отрабатывает по ифу в коде строка:

Код:
MsgBox "Документ выбран!"
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#10
не верно!
Код:
 Set childdoc_2 = uidoc.Document ' получить документ из открытого документа на экране
а нам надо из коллекции, которую мы получили из PickList, следовательно надо работать с объектом dc
Код:
Set childdoc_2 = dc.GetFirstDocument()
 

Dimok-163rus

Well-Known Member
20.06.2013
89
0
#11
не верно!
Код:
 Set childdoc_2 = uidoc.Document ' получить документ из открытого документа на экране
а нам надо из коллекции, которую мы получили из PickList, следовательно надо работать с объектом dc
Код:
Set childdoc_2 = dc.GetFirstDocument()
так тоже делал, он не отображает ни одного документа в childdoc_2

а нам надо из коллекции, которую мы получили из PickList, следовательно надо работать с объектом dc
Set childdoc_2 = dc.GetFirstDocument()
этим самым мы же получаем первый док из коллекции, а нам надо получить тот док, который мы выбираем сами
 

Вложения

  • 324.8 КБ Просмотры: 107

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#12
ты когда в pickList что-то выбираешь, то создается коллекция выбранного, эта коллекция и возвращается.
Следовательно dc.getfirstdocument вернет первый документ из коллекции выбранных документов в PickLIst
А не отображает ничего, потому что вместо:
Код:
 Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db.Filepath,"Dosrochno", "Выбор документа", "Выберите купон для изъятия полей", "ID_Rubl_obl")
Должно быть:
Код:
 Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db.Filepath,"Dosrochno", "Выбор документа", "Выберите купон для изъятия полей", <значение>)
Это либо pdoc.GetItemValue("ID_Rubl_obl")(0) либо childDoc.GetItemValue("ID_Rubl_obl")(0)
я не знаю относительно чего надо найти документы.
Там должно быть значение поля, а не название поля.
 

Dimok-163rus

Well-Known Member
20.06.2013
89
0
#14
savl,

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

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

Код:
	'Выгрузка коллекции документов котировального списка
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
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#15
Представление "Market_m" должно быть категоризировано, иначе не работает.
 

Dimok-163rus

Well-Known Member
20.06.2013
89
0
#18
там просто по одному документу все, категория то не нужна... т.е если категории не проставлю, у меня агент не увидит документов?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#19
эта треда уже становится похожей на переписку с поддержкой
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#20
Список не будет ограничен. ТЫ вызываешь функцию, которая должна отобразить список документов, которые находятся в определенной категории.
Категории в представлении нет - список пуст.
Если категории есть, но нет нужной - список пуст.
Вот так отобразит все документы в представлении:
Код:
Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, "references.nsf", "Market_m", "Выбор документа", "Выберите документ для изъятия полей")
Если надо только в пределах категории, то надо создать еще одно представление, сделать там категории и использовать в этой функции.