Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/119: Рейтинг темы: голосов - 119, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112

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

25.08.2013, 16:10. Показов 21977. Ответов 23
Метки нет (Все метки)

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


.SpoilerTarget">Спойлер: Раскрывающийся Текст


LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
%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 ytm As NotesRichTextItem
Set ytm = pdoc.GetFirstItem("Sfakt")
If Not ytm Is Nothyng 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"},Nothyng,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") Создание объекта Worda
Call Word.documents.add(tmppth_str & "\" & CStr(pth_str$)) Создаем новый документ на основе соответствующего шаблона
Set WordDoc = Word.activedocument
 
 
Присваивание полям-Worda значений из полей 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
во встроенном представлении "купонный период встр" будет сгенерировано несколько купонных периодов, мне нужно вывести диалоговоое окно пользователю, с этим встроенным представлением "купонный период встр", чтобы пользователь выбрал именно какой из всей серии купонных периодов ему взять и уже оттуда мне нужно изъять некоторые поля
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2013, 16:10
Ответы с готовыми решениями:

Как программно добраться до свойств поля Rich Text Lite
Скажите пожалуйста как программно добраться до свойств поля Rich Text Lite и изменить размер рисунка.

Как можно добраться до содержимого поля если документ еще не сохранен
Lotus Script. ... Dim ws As New NotesUIWorkspace Dim uidoc As NotesUIDocument главный документ на клиенте Set uidoc =...

Как добраться до документа через форму списка документа?
есть форма списка документа, вставляю обработчик события ПередУдалением. Нужно перед удалением документа организовать просмотр его...

23
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
25.08.2013, 16:26
да точно также.

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


во встроенном представлении "купонный период встр" будет сгенерировано несколько купонных периодов, мне нужно вывести диалоговое окно пользователю, с этим встроенным представлением "купонный период встр", чтобы пользователь выбрал именно какой из всей серии купонных периодов ему взять и уже оттуда мне нужно изъять некоторые поля
То смотри NotesUIWorkspace.PickLIstCollection, возвращает коллекцию выбранных документов в диалоге.
С параметрами думаю разберешся, главное тебе надо использовать Single Category
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
25.08.2013, 16:44
Цитата Сообщение от savl
да точно также.

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


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

1) нахожусь в сущ.фактах:
беру поля

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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?
мне сначала бы нужно поле увидеть на этом встроенном представлении, а потом уже капать глубже, к коллекциям купонов из этого встроен.представления
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
25.08.2013, 17:04
чтобы получить "купон.период встр.", находясь в сущ.фактах, ключ используем тот же?
Используем ключ, который связывает купоны с существ фактами.
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
25.08.2013, 17:14
Тоесть, если хочу получить доступ к какому то другому доку, который имеет свой ID, нужно добавить поле ID в доке(котором нахожусь) и по этому полю ID, по средствам:

LotusScript
1
2
получаем ссылку на "сущ.факты" по общему Unid
Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("поле ID")(0))
работать с полями childdoc?

А если нужно:

.SpoilerTarget">Спойлер: Раскрывающийся Текст
во встроенном представлении "купонный период встр" будет сгенерировано несколько купонных периодов, мне нужно вывести диалоговое окно пользователю, с этим встроенным представлением "купонный период встр", чтобы пользователь выбрал именно какой из всей серии купонных периодов ему взять и уже оттуда мне нужно изъять некоторые поля

Заюзать NotesUIWorkspace.PickLIstCollection, вернуть коллекцию док-тов, с помощью диалогового окна пользователь кликом на нужный купон.период выбирает нужный док, беру его ID и по средствам того же

LotusScript
1
2
получаем ссылку на "сущ.факты" по общему Unid
Set childdoc = db.GetDocumentByUNID(pdoc.GetItemValue("поле ID")(0))
работать дальше? Правильно понял?
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
25.08.2013, 17:26
Если существует(необходима) любая связь между документами - всегда надо иметь коле-ключ.

NotesUIWorkspace.PickLIstCollection вернет коллекцию документов, которые были отражены.
То есть если для отображения будут купоны, то вернется коллекция купонов (один или несколько документов, зависит от выбора).
Следовательно не надо будет играться через связи, можно сразу получить документ купона:

LotusScript
1
2
3
Set KuponColl = NotesUIWorkspace.PickLIstCollection(...)
if KuponColl.Count < 1 then exit Sub  Нажали Cancel
set kupon = KuponColl.GetFirstDocument  Вернет первый купон в коллекции, если выбран один документ, то это будет именно он.
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
29.08.2013, 12:03
Цитата Сообщение от savl
Если существует(необходима) любая связь между документами - всегда надо иметь коле-ключ.

NotesUIWorkspace.PickLIstCollection вернет коллекцию документов, которые были отражены.
То есть если для отображения будут купоны, то вернется коллекция купонов (один или несколько документов, зависит от выбора).
Следовательно не надо будет играться через связи, можно сразу получить документ купона:

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


.SpoilerTarget">Спойлер: Раскрывающийся Текст


LotusScript
1
2
3
4
5
Выгрузка коллекции документов
Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db, "Dosroch_pogash", "Выбор документа", "Выберите купон для изъятия полей", "Num_period")
If dc.Count = 0 Then
MsgBox "Выбор не состоялся" , , "Info"
End If
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
29.08.2013, 12:31
А хелпе не посмотрел?)


Set notesDocumentCollection = notesUIWorkspace.PickListCollection( type% [, multipleSelection ], server$, databaseFileName$, viewName$, title$, prompt$ [, Singlecategory$ ] )
databaseFileName$ = db.Filepath
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
29.08.2013, 14:35
Диалоговое окно возникает, документ выбираю из коллекции, теперь не могу взять значения трех полей выбранного документа, в коде вроде все пошагово прописал, а в примерах не могу найти ничего подобного блин, если есть время, кидаю код, может где наглядная ошибка у меня?


.SpoilerTarget">Спойлер: Раскрывающийся Текст


LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
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 ytm As NotesRichTextItem
Set ytm = pdoc.GetFirstItem("Sfakt")
If Not ytm Is Nothyng 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"},Nothyng,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") Создание объекта Worda
Call Word.documents.add(tmppth_str & "\" & CStr(pth_str$)) Создаем новый документ на основе соответствующего шаблона
Set WordDoc = Word.activedocument
 
Присваивание полям-Worda значений из полей 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
После выбора документа из диалога, отрабатывает по ифу в коде строка:


Code
1
MsgBox "Документ выбран!"
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
29.08.2013, 15:03
не верно!

LotusScript
1
 Set childdoc_2 = uidoc.Document  получить документ из открытого документа на экране
а нам надо из коллекции, которую мы получили из PickList, следовательно надо работать с объектом dc

LotusScript
1
Set childdoc_2 = dc.GetFirstDocument()
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
29.08.2013, 15:42
Цитата Сообщение от savl
не верно!

LotusScript
1
 Set childdoc_2 = uidoc.Document  получить документ из открытого документа на экране
а нам надо из коллекции, которую мы получили из PickList, следовательно надо работать с объектом dc

LotusScript
1
Set childdoc_2 = dc.GetFirstDocument()
так тоже делал, он не отображает ни одного документа в childdoc_2



а нам надо из коллекции, которую мы получили из PickList, следовательно надо работать с объектом dc
Set childdoc_2 = dc.GetFirstDocument()
этим самым мы же получаем первый док из коллекции, а нам надо получить тот док, который мы выбираем сами
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
29.08.2013, 15:47
ты когда в pickList что-то выбираешь, то создается коллекция выбранного, эта коллекция и возвращается.
Следовательно dc.getfirstdocument вернет первый документ из коллекции выбранных документов в PickLIst
А не отображает ничего, потому что вместо:

LotusScript
1
 Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db.Filepath,"Dosrochno", "Выбор документа", "Выберите купон для изъятия полей", "ID_Rubl_obl")
Должно быть:

LotusScript
1
 Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, db.Filepath,"Dosrochno", "Выбор документа", "Выберите купон для изъятия полей", <значение>)
Это либо pdoc.GetItemValue("ID_Rubl_obl")(0) либо childDoc.GetItemValue("ID_Rubl_obl")(0)
я не знаю относительно чего надо найти документы.
Там должно быть значение поля, а не название поля.
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
29.08.2013, 16:10
ура ура )) Спасибо тебе !
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
04.09.2013, 16:30
savl,

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

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


LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
    Выгрузка коллекции документов котировального списка
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
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
04.09.2013, 17:39
Представление "Market_m" должно быть категоризировано, иначе не работает.
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
04.09.2013, 20:16
Цитата Сообщение от savl
Представление "Market_m" должно быть категоризировано, иначе не работает.
"категоризованно" т.е?
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
05.09.2013, 09:24
да
0
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 112
05.09.2013, 10:08
там просто по одному документу все, категория то не нужна... т.е если категории не проставлю, у меня агент не увидит документов?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
05.09.2013, 10:41
эта треда уже становится похожей на переписку с поддержкой
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
05.09.2013, 10:42
Список не будет ограничен. ТЫ вызываешь функцию, которая должна отобразить список документов, которые находятся в определенной категории.
Категории в представлении нет - список пуст.
Если категории есть, но нет нужной - список пуст.
Вот так отобразит все документы в представлении:

LotusScript
1
Set dc = ws.PickListCollection(PICKLIST_CUSTOM, False, db.Server, "references.nsf", "Market_m", "Выбор документа", "Выберите документ для изъятия полей")
Если надо только в пределах категории, то надо создать еще одно представление, сделать там категории и использовать в этой функции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.09.2013, 10:42
Помогаю со студенческими работами здесь

Как добраться до селектора?
Добрый день.Есть меню вида &lt;ul&gt;&lt;a&gt;&lt;/a&gt; &lt;li&gt;&lt;a&gt;&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a&gt;&lt;/a&gt; &lt;ul&gt;&lt;a&gt;&lt;/a&gt; ...

Как добраться до MySql?
Люди, может кто подскажет, как из Делфи можно послать запрос к базе данных MySql? Есть ли для этого стандартные компоненты? Буду очень...

Как добраться до MySql?
Люди, может кто подскажет, как из Делфи можно послать запрос к базе данных MySql? Есть ли для этого стандартные компоненты? Буду очень...

Как добраться до пиксилей?
Есть изображение , и мне его по сути надо перегнать в массив для сканировки. В какую сторону гуглить???

как добраться до вершины ?
Привет ! Подскажите ,что нужно сделать что бы сайт http://empiredelgusto.narod.ru оказался на первой странице в поисковиках.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru