Field $ref

  • Автор темы fvoice
  • Дата начала
Статус
Закрыто для дальнейших ответов.
F

fvoice

Подскажите пожалуйста, можно ли изменить родителя документа?
Какие еще поля отвечают за связь с родиетелем?
Можно ли изменить тип документа с "Документ" на "Ответ" программно у созданного уже документа?
 
F

fvoice

В общем мне необходимо чтобы, ранее созданный документ, становился ответным к вновь создаваемому документу. Как такое можно реализовать?
 
M

morpheus

А Вы пробовали заменить поле $ref ?
 
30.05.2006
1 345
12
BIT
0
В общем мне необходимо чтобы, ранее созданный документ, становился ответным к вновь создаваемому документу. Как такое можно реализовать?
Есть такой метод doc.MakeResponse parentDoc
На "собаках" тоже можно, но приемчик неочевидный: @SetDocField(childDocUNID; "$REF"; @DocumentUniqueID)
 
M

Mihal

<!--QuoteBegin-fvoice+3:11:2006, 06:53 -->
<span class="vbquote">(fvoice @ 3:11:2006, 06:53 )</span><!--QuoteEBegin-->Подскажите пожалуйста, можно ли изменить родителя документа?
Какие еще поля отвечают за связь с родиетелем?
Можно ли изменить тип документа с "Документ" на "Ответ" программно у созданного уже документа?
[snapback]47028" rel="nofollow" target="_blank[/snapback]​
[/quote]

Можно. MakeResponse, например. За родитель-дитёныш отвечает только $Ref.
 
F

fvoice

Просто замента поля $REF не дает результата, да к тому же скриптом он почему меняет его, а потом говорит что не может его найти.
MakeResponse подходит отлично. Почему то я этот метод сразу не нашел.
Из @-команд ComposeWithReference еще есть.
 
30.05.2006
1 345
12
BIT
0
Просто замента поля $REF не дает результата, да к тому же скриптом он почему меняет его, а потом говорит что не может его найти.
Потому что вы тип поля меняете с Reference на Text
Из @-команд ComposeWithReference еще есть.
Речь шла об изменении родителя у существующего док-та, так?
 
F

fvoice

Речь шла об изменении родителя у существующего док-та, так?

Да, но я просто не мог найти ни одного метода для изменения или создания ответного документа, а эту команду написал для общего обозрения, вдруг у кого-нибудь будет такая-же проблема, а здесь можно будет найти более подробное описание! :D


Потому что вы тип поля меняете с Reference на Text

Разве есть такой тип данных Reference? В отладчике поле имеет тип String. Использование itema тоже не приносит результатов. :blink:
 
30.05.2006
1 345
12
BIT
0
Разве есть такой тип данных Reference? В отладчике поле имеет тип String. Использование itema тоже не приносит результатов. :blink:
А ты посмотри не в отладчике, а просто в св-вах документа (ну, RMB) правильное поле $REF какого типа?
PS: там вообще много интересного можно увидеть. И не все это через API доступно
 
V

Veselinka

Не обязятельно использовать $REF, можно породить поле-линк с произвольным названием и не одно, а сколько угодно, и таким образом породить эн альтернативных иерархий. Для отображения во вью в формуле селекции перед ней надо написать:
DEFAULT $REF:=формула в которой определяется поле содержащее референс;
select....
 
30.05.2006
1 345
12
BIT
0
Не обязятельно использовать $REF, можно породить поле-линк с произвольным названием и не одно, а сколько угодно, и таким образом породить эн альтернативных иерархий. Для отображения во вью в формуле селекции перед ней надо написать:
DEFAULT $REF:=формула в которой определяется поле содержащее референс;
select....

Все равно без $REF трудно обойтись. Все равно сначала doc.MakeResponse parent создает $REF, которое копируется/переименовывается в другое поле.
В противном случае тип поля получается неправильный (НЕ reference) и трюк с DEFAULT $REF не работает
 
F

fvoice

MakeResponse работает нормально:
Код:
Sub Click(Source As Button)

Dim ws As New NotesUIWorkspace
Dim db As New NotesDatabase(MyGetServer("DBDoc"),MyGetDB("DBDoc"))
Dim uidoc As NotesUIDocument
Dim curdoc As NotesDocument
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim picklist As Variant

Set uidoc = ws.CurrentDocument
Set curdoc = uidoc.Document

If curdoc.SaveMode(0)="false" Then
picklist = ws.PickListStrings(PICKLIST_CUSTOM, 	True, MyGetServer("DBDoc"),MyGetDB("DBDoc"), "JOfZayavkaFailture", "Не выполненные заявки", 	"Выберите заявку:",	1)
If Isempty(picklist) Then
Else
Set doc = db.GetDocumentByUNID(Cstr(picklist(0)))
curdoc.DocID = picklist
Call doc.MakeResponse(curdoc)
...

но если перед выполдниться следующая процедура, сидящая на другой кнопке MakeResponse выдает ошибку "The documents must be in the same database!".
Вот код:
Код:
Sub Onchange(Source As Field)
Dim uidoc As NotesUIDocument
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim s As New NotesSession
Dim FIO As String
Dim doc As NotesDocument
Dim view As NotesView
Dim curdoc As NotesDocument
Dim nam As NotesName

Set uidoc = ws.CurrentDocument
Set curdoc= uidoc.Document
Set db = New NotesDatabase(MyGetServer("DBDoc"),MyGetDB("DBSpr"))
Set view = db.GetView("Sotr")

FIO = uidoc.FieldGetText("FIO")
Set doc = view.GetDocumentByKey( FIO )
Set nam = New NotesName(doc.LotusName(0))
Call uidoc.FieldSetText("Job" ,doc.Job(0)) 
Call uidoc.FieldSettext("Ispolnitel",nam.Common)
Call uidoc.FieldSettext("AnotherReaders",nam.Common)
Call uidoc.FieldSettext("FIOConst",curdoc.FIO(0))
Call uidoc.FieldSettext("JobConst",curdoc.Job(0))
Call uidoc.Refresh
End Sub
Документы точно находяться в одной БД.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--QuoteBegin-fvoice+3:11:2006, 09:21 -->
<span class="vbquote">(fvoice @ 3:11:2006, 09:21 )</span><!--QuoteEBegin-->В общем мне необходимо чтобы, ранее созданный документ, становился ответным к вновь создаваемому документу. Как такое можно реализовать?
[snapback]47029" rel="nofollow" target="_blank[/snapback]​
[/quote]
В свойствах формы есть пункт Versions. Тебе нужно "Prior versions become respones".
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!