powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Domino Designer. Как связать два документа?
25 сообщений из 54, страница 2 из 3
Domino Designer. Как связать два документа?
    #35077517
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GarrickСоздайте представление с формулой SELECT Form = "response". Галочку в свойствах представления "Отображать ответные документы в виде иерархии" (Show response document in a hierarchy) надо снять. Посмотрите есть ли в нём документы?

да блин я так делал, но вот галочку не убирал
данные есть и линк (желтый квадратик) на родитель работает

тока вот почему они (ответы) в представление All не видны?
и какая функция проверяет на наличие ответа на документ и если ответ существует то открывать его, а если нет то создать новый?
думал примерно так:
@If(@Responses=0; @Command([Compose];"";"response"); "" )
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35078035
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FManny
тока вот почему они (ответы) в представление All не видны?

Надо правильно его "готовить". Посмотрите в той же базе "Дискуссии", там для ответных документов в представлении есть специальный столбец.

FManny
и какая функция проверяет на наличие ответа на документ и если ответ существует то открывать его, а если нет то создать новый?
думал примерно так:
@If(@Responses=0; @Command([Compose];"";"response"); "" )

В хелпе к каждой формуле и функции есть примечание когда, где и как это работает. Так вот, там сказано что @Responses работает только в представлении, где эти responses документы представлены. Подозреваю, что в форме документа эта функция не работает. Всегда получить коллекцию ответных документов можно с помощью LotusScript функции NotesDocument.Responses, я уже "говорил" про это ранее.
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35078135
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как в найденной коллекции определить именно тот ли ответ на документ?
ведь может же быть такое что один документ имеет несколько ответов?
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35078497
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FMannyа как в найденной коллекции определить именно тот ли ответ на документ?
ведь может же быть такое что один документ имеет несколько ответов?

А как вы их различаете визуально? Есть же у них какие-то различия? Так же и программно - по значениям каких-то полей, имени формы и пр.
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35081377
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick

вот примерно так?

Sub Click(Source As Button)
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim currentResponse As NotesDocument
Dim workspace As NotesUIWorkspace
Dim docRes As NotesDocument
Set collection = doc.Responses
docRes.form = "response"
If collection.Count = 0 Then
Set currentResponse = collection.GetFirstDocument
While Not ( currentResponse Is Nothing )
Call workspace.DialogBox (currentResponse, True,True,False,False,False,False)
Set currentResponse = collection.GetNextDocument _
( currentResponse )
Wend
Else
Call docRes.MakeResponse(doc)
End If
End Sub

кажись dialogbox не в теме там стоит?
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35081472
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FManny
вот примерно так?


Извините, но здесь какая-то фигня понаписана. Этот код ничего делать недолжен.Чего вы хотели из сделать-то? На словах объясните.

P.S. А вы вообще какую-нибудь книжку по программированию Domino читали? Или ред-бук какой-нибудь?
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35081580
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все тоже самое
открыть из родича дочку если имеется, если нет то создать новую дочку
ну я же говорил что тока учусь создавать документы с ответом

Set collection = doc.Responses
найдет ли он ответы документа?
если да то как их открыть (вот проблема в этом)?

книги есть но они некчемные
самое главное куда копать не знаешь
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35081993
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FMannyвсе тоже самое
открыть из родича дочку если имеется, если нет то создать новую дочку
ну я же говорил что тока учусь создавать документы с ответом

Set collection = doc.Responses
найдет ли он ответы документа?
если да то как их открыть (вот проблема в этом)?

книги есть но они некчемные
самое главное куда копать не знаешь

Код: plaintext
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.
Dim session as New NotesSession
Dim ws as New NotesUIWorkspace
Dim db as NotesDatabase 'текущая база
Dim doc as NotesDocument 'текущий родительский документ
Dim col as NotesDocumentCollection 'коллекция дочерних документов
Dim res as NotesDocument 'дочерний документ
Dim found_doc as NotesDocument 'искомый дочерний документ

set database = session.CurrentDatabase
set col = doc.Responses 'получаем коллекцию дочерних документов
If col.Count >  0  then 'коллекция не пустая
   set res = col.GetFirstDocument 'первый документ коллекции
   Do While not res is Nothing 'цикл по всем документам коллекции
      if .... then ' что-то там проверяете, а тот ли это документ
          Set found_doc = res ' если всё совпадает и документ найден
          Exit Do 'выходм из цикла, т.к. документ уже найден 
      end if
    Loop
End If   

If found_doc is Nothing Then 'дочерний документ не был найден
    Set found_doc = New NotesDocument(db) 'создаём новый документ
End If

found_doc.Form = "ИМЯ ФОРМЫ ДОЧЕРНЕГО ДОКУМЕНТА"
'Здесь можно заполнить ещё какие-то поля значениями по умолчанию
found_doc.MakeResponse(doc) 'делаем его дочерним
Call ws.EditDocument(found_doc, True) 'открываем на редактирование

Да, и если хотите в дочернем документе иметь ссылку на родительский в виде жёлтого квадратика, то вам её следует добавить самостоятельно. См. в хелпе метод AppendDocLink у класса NotesRichTextItem, там есть примеры. Да и матчасть всё же поучить следует, без этого ничего путного не получится. Книжку себе купите или вот эту почитайте Domino Designer 6: A Developer's Handbook
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35084645
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
Sub Click(Source As Button)
	Dim session As New NotesSession
	Dim ws As New NotesUIWorkspace
	Dim db As NotesDatabase
	Dim doc As NotesUIDocument 
	Dim col As NotesDocumentCollection 
	Dim res As NotesUIDocument 
	Dim found_doc As NotesUIDocument 
	Dim undoc As NotesItem 
	Dim unres As NotesItem 
	Set doc = ws.CurrentDocument
	Set db = session.CurrentDatabase
	Set col = doc.Responses 
	Set undoc = doc.GetItemValue (main_id)
	If col.Count >  0  Then 
		Set res = col.GetFirstDocument 
		Do While Not res Is Nothing 
			If res.IsResponse Then
				unres=	res.GetItemValue (par_id)
				
				If undoc.Text  = unres.Text  Then 
					Set found_doc = res 
					Call ws.EditDocument(found_doc, False,False)
					Exit Sub 
				Else
					Set res = col.GetNextDocument 
				End If
			End If
		Loop
	End If   
	
	If found_doc Is Nothing Then 
		Set found_doc = New NotesDocument(db) 
	End If
	
	found_doc.Form = "response"
	found_doc.MakeResponse(doc)
	Call ws.EditDocument(found_doc, True) 
	
End Sub

выводит ошибку Not a member: RESPONSES
как быть?

ответ на документ существует
открываю с дочки
Код: plaintext
@If(@IsNewDoc; @Unavailable; $Ref)
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35085029
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, да не
Код: plaintext
Dim doc As NotesUIDocument
надо, а
Код: plaintext
Dim doc As NotesDocument
Если в лотусовом редакторе набирать - он сам подскажет как правильно. И ещё надо добавить
Код: plaintext
Set doc = ws.CurrentDocument.Document
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35085092
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь пишет
object variable not set

а так там без ошибок сохранил!
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35085784
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FMannyтеперь пишет
object variable not set

а так там без ошибок сохранил!

В вашем коде
Код: plaintext
1.
Dim undoc As NotesItem 
Dim unres As NotesItem 
c
Код: plaintext
Set undoc = doc.GetItemValue (main_id)
и
Код: plaintext
unres=	res.GetItemValue (par_id)
никак не сочетается - это невозможно. Читайте учебник! Как получить значение поля. GetItemValue возвращает не NotesItem, а массив значений поля. Объявляйте undoc и unres как String и считывайте их как doc.GetItemValue("ИМЯ ПОЛЯ")(0)

Это явно лишнее
Код: plaintext
If res.IsResponse Then
мы же уже получили коллекцию только дочерних документов, зачем каждый документ отдельно проверять ещё раз?

И вот это в цикле
Код: plaintext
1.
2.
3.
Call ws.EditDocument(found_doc, False,False)
					Exit Sub 
				Else
замените на
Код: plaintext
Exit Do
код, выполняющий это есть ниже.
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35086624
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот все изменил сохраняет без ошибок
Код: plaintext
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.
Sub Click(Source As Button)
	Dim session As New NotesSession
	Dim ws As NotesUIWorkspace
	Dim db As NotesDatabase
	Dim doc As NotesDocument 
	Dim col As NotesDocumentCollection 
	Dim res As NotesDocument 
	Dim found_doc As NotesDocument 
	Dim undoc As NotesItem   
	Dim unres As  NotesItem 
	Set doc = ws.CurrentDocument.Document
	Set db = session.CurrentDatabase
	Set col = doc.Responses 
	Set undoc = doc.GetFirstItem ("main_id")
	If col.Count >  0  Then 
		Set res = col.GetFirstDocument 
		Do While Not res Is Nothing 
			Set unres=res.GetFirstItem ("par_id")
			If undoc.Text = unres.Text  Then 
				Set found_doc = res 
				Call ws.EditDocument(found_doc, False,False)
				Exit Do 
			Else
				Set res = col.GetNextDocument(res) 
			End If
		Loop
	End If   
	
	If found_doc Is Nothing Then 
		Set found_doc = New NotesDocument(db) 
	End If
	
	found_doc.Form = "response"
	Call 	found_doc.MakeResponse(doc)
	Call ws.EditDocument(found_doc, True) 
	
End Sub

когда запускаю с родака опять пишет
object variable not set

и когда открываю через дочку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub Click(Source As Button)
	Dim s As New NotesSession 
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Set db = s.CurrentDatabase
	If doc.IsResponse Then
		Call  db.GetDocumentByUNID(doc.ParentDocumentUNID)
	End If
End Sub

тоже самое пишет

а через желтый квадратик
Код: plaintext
@If(@IsNewDoc; @Unavailable; $Ref)
открывает

блин скажите почему не работает?
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35086886
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оно же говорит object variable not set . Это значит не инициализирована объектная переменная. Объект не создан до обращения к его методам или свойствам. Если бы вы прошли свой код в отладчике, то он вам даже показал бы в какой строке кода это происходит. Скорее всего, это Set doc = ws.CurrentDocument.Document . Потому, что ws объявлен Dim ws As NotesUIWorkspace , но не создан. Раньше в моих примерах, да и в вашем же коде было правильно Dim ws As New NotesUIWorkspace.
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35087064
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GarrickОно же говорит object variable not set . Это значит не инициализирована объектная переменная. Объект не создан до обращения к его методам или свойствам. Если бы вы прошли свой код в отладчике, то он вам даже показал бы в какой строке кода это происходит. Скорее всего, это Set doc = ws.CurrentDocument.Document . Потому, что ws объявлен Dim ws As NotesUIWorkspace , но не создан. Раньше в моих примерах, да и в вашем же коде было правильно Dim ws As New NotesUIWorkspace.
все равно не работает
выдает ту же ошибку

но когда сохраняешь форму он не выдает ошибку!
а почему не работает скрипт выложенный выше которая открывает родителя с дочки???
а другой код который ниже работает но почему то неправильно, выдает не тот родитель???
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35087832
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь вот еще
хотел создать ответ так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub Click(Source As Button)
	Dim session As New NotesSession
	Dim ws As New NotesUIWorkspace 	
	Dim db As NotesDatabase
	Dim docA As NotesDocument
	Dim docB As NotesDocument 
	Set db = session.CurrentDatabase
	docA.form  = "Document" 	
	Set docB = New NotesDocument(db) 
	Call docB.MakeResponse( docA )
	docB.Form = "Response"
	Call ws.EditDocument (True, docB)
End Sub

все ту же ошибку пишет
может где какой класс неправильный?
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35088075
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запусти свой код в дебагере - сразу увидишь.
Как дебагер включить-то знаешь?
Меню "Файл"-"Сервис"-"Отладчик LotusScript"
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35091421
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот спасибо за советы!
разобрался!
и вправду не знал что здесь есть дебаггер! :))

еще один момент
как перейти на родителя с дочки если он открыть?
точнее как проверить открыть ли он если да то перейти если нет открыть его?
а то получается столько не нужный окон открываетсяъ

заранее спасибо!
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35091660
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще момент
создаю ответ на док с MakeResponse поля не наследуются
чтоб приписать в поля дочки пишу следующее

Код: plaintext
1.
2.
3.
4.
fmain = uidoc.FieldGetText( "main_id" )
found_doc.Form = "response"
Call found_doc.MakeResponse(doc)
Call ws.EditDocument(True,found_doc) 
Call found_doc.FieldSetText ( "f2", Cstr( fmain))

тута:
fmain - стрин
found_doc - NotesDocument
f2 - поле в дочке
main_id - поле в родителе
uidoc - NotesUIDocument

но дебаггер выдает ошибку на последней строчке FieldSetText
"Illegal use of PROPERTY"
я думаю он требует чтоб found_doc был NotesUIDocument (или что-то другое)?
когда делаю через команд композ все ок!
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35091818
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FManny
еще один момент
как перейти на родителя с дочки если он открыть?
точнее как проверить открыть ли он если да то перейти если нет открыть его?
а то получается столько не нужный окон открывается
заранее спасибо!

У NotesUIWorkspcae.EditDocument есть параметры, см. хелп.
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35091843
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FManny
но дебаггер выдает ошибку на последней строчке FieldSetText
"Illegal use of PROPERTY"


У NotesUIDocument нет метода FieldSetText, используй ReplaceItemValue. В редакторе же после точки отображаются доступные варианты, не надо ничего туда от себя дописывать - работать всё равно не будет. При создании документов через Lotus Script содержимое полей не наследуется, нужно все поля заполнять скриптом.
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35093407
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GarrickУ NotesUIDocument нет метода FieldSetText

а хелп говорит что есть
Syntax
Call notesUIDocument.FieldSetText( fieldName$, textValue$ )
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35093438
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за советы!

GarrickУ NotesUIWorkspcae.EditDocument есть параметры, см. хелп.

но с дочки открываю через
Код: plaintext
@If(@IsNewDoc; @Unavailable; $Ref)

пытался открыть с дочки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub Click(Source As Button)
Dim s As New NotesSession 
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = s.CurrentDatabase
Set doc = ws.CurrentDocument.Document 
Call  db.GetDocumentByUNID(doc.ParentDocumentUNID)
End Sub
дебаггер ошибки не дает но форма не открывается

есть ли какая либо формула (собачки) которая проверяет открыть ли родитель если да то переходит если нет то открывает?
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35093532
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GarrickУ NotesUIWorkspcae.EditDocument есть параметры, см. хелп.

он не подходит потому что у клиента 5-ый релиз стоит а он вышел тка в 6-ом релизе

есть еще какие либо функции или т.п.?
...
Рейтинг: 0 / 0
Domino Designer. Как связать два документа?
    #35093535
FManny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick FManny
но дебаггер выдает ошибку на последней строчке FieldSetText
"Illegal use of PROPERTY"


У NotesUIDocument нет метода FieldSetText, используй ReplaceItemValue. В редакторе же после точки отображаются доступные варианты, не надо ничего туда от себя дописывать - работать всё равно не будет. При создании документов через Lotus Script содержимое полей не наследуется, нужно все поля заполнять скриптом.
с этим уже разобрался!
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Domino Designer. Как связать два документа?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]