Nasledovanie Polya

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

Guest

Я вызываю в событии PostSave родительской формы.
Мгм... даже не знаю что еще посоветовать. А можешь написать точную формулу отбора для этого вида?
И название подчиненных форм, в которых ты хочешь изменить значение поля.
 
O

Olga23

Aga, vot tut:
SELECT (Form ="Person" | Form ="EMail" | Form ="EMailSerien" |Form ="Notice" | Form ="Rapport" | Form ="Vertrag" | Form ="ToDo" | Form ="QSBlatt"), delo v tom,chto vse eti formi imeyut podformu,v kotoroj kak raz eto imenenie i proishodit...
 
D

Domino6

<!--QuoteBegin-Olga23+6:02:2006, 16:53 -->
<span class="vbquote">(Olga23 @ 6:02:2006, 16:53 )</span><!--QuoteEBegin-->SELECT (Form ="Person" | Form ="EMail" | Form ="EMailSerien" |Form ="Notice" | Form ="Rapport" | Form ="Vertrag" | Form ="ToDo" | Form ="QSBlatt"),
[snapback]30213" rel="nofollow" target="_blank[/snapback]​
[/quote]

оптимизация формулы

SELECT (Form ="Person":"EMail":"EMailSerien" :"Notice" :"Rapport" :"Vertrag" :"ToDo":"QSBlatt")
 
G

Guest

Для: Olga23
А какие из этих форм дочерние? Или все они дочерние?
Попробуй добиться простого вывода всех нужных подчиненных документов в виде (без поля @Text($ref)). Получается?
 
N

nor

Для: Olga23
Возможно при создании ответных документов эти документы фактически не являлись ответными на тот момент. Во всех формах ответных документов необходимо проверить тип формы. Тип формы должен быть "Response" или "Response to Response".
 
O

Olga23

net tip form -"dokument", ne response.
Kstati tut vot takaya fishka, v script library nashla est takie funkzii dlya sozdanija novogo dokumenta, v kotorom dopustim hranjatsya dannie o sotrudnike:
Sub CreatePerson ( CallFromView As Integer )
'Const language
Const HeaderLine = "New Contact"

'Globals
Dim ws As New NotesUIWorkspace
Dim ss As New NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim newdoc As NotesDocument

Set db = ss.CurrentDatabase
Set uidoc = ws.CurrentDocument

'Code
' berem View iz otkritogo uidoc
If Not GetDocFromViewOrUIDoc ( doc, uidoc, db, CallFromView ) Then Exit Sub
If doc.form(0) <> "Company" And doc.form(0) <> "Person" Then
Messagebox ErrorWrongDoc2, 0, ErrorHeaderWrongDoc
Exit Sub
End If

Set newdoc = db.CreateDocument
Call CopyStandardFields ( newdoc, doc )
newdoc.form = "Person"
newdoc.HeaderLineVar1_TC = HeaderLine
newdoc.Fax_T = doc.Fax_T
newdoc.CpyCoise_K = doc.Coise_K
newdoc.CpyProfil_K = doc.Profil_K
newdoc.CpyTurnover_K = doc.Turnover_K
newdoc.CpyEmploy_N = doc.Employ_N
newdoc.CpyCategory_K = doc.Category_K
Set uidoc = ws.editdocument( True, newdoc, False )
End Sub

I zdes kopirujutsya kak raz polya iz glavnogo dokumenta -CopyStandardFields; pole VerbandsG ya dobavila nedavno, takim obrazom pri sozdanii dokumenta,v nem sohranyaetsya eto pole...No vot kak bit so starimi dokami,v kotorie eto pole nado sohranit...Vot kod CopyStandardFields:
Sub CopyStandardFields ( childdoc As NotesDocument, maindoc As NotesDocument )
With childdoc
.CpyDocID_T = maindoc.CpyDocID_T
.CpyCode_T = maindoc.CpyCode_T
.IsCustomer_K = maindoc.IsCustomer_K
.Name1_T = maindoc.Name1_T
.Name2_T = maindoc.Name2_T
.Name3_T = maindoc.Name3_T
.AliasName_T = maindoc.AliasName_T
.Street_T = maindoc.Street_T
.Country_T = maindoc.Country_T
.Zip_T = maindoc.Zip_T
.City_T = maindoc.City_T
.CpyPhone_T = maindoc.Phone_T
.CpyFax_T = maindoc.Fax_T
.CpyEMail_T = maindoc.EMail_T
.Internet_T = maindoc.Internet_T
.POBox_T = maindoc.POBox_T
.ZipPOBox_T = maindoc.ZipPOBox_T
.Phone_T = maindoc.Phone_T
.VerbandsG=maindoc.VerbandsG
End With
End Sub


Vot est li u Vas soobragenija, kak mogno ispolzuja etot kod, sostavit agent ili deystvie, kotorij bi pomogal sohranyat eto pole?
 
G

Guest

Можно вывести все родительские доки в вид, потом агентом по ним пройдись и для каждого найди коллекцию подчиненных доков методом Searсh.
У главного и подчиненного дока долно быть какое-то поле для связи - этим и воспользуйся. :)
 
O

Olga23

Spasibo bolshoe za pomosch :) Vot chto poluchilos(agent):
Sub Initialize
Dim collection As NotesDocumentCollection
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim doc1 As NotesDocument
Dim view As NotesView


' View "AllByName"-eto View, gde vse Dokumenti, dokument Firmi dlya kagdoj Firmi, pod dok-tom firmi-dokumenti sotrudnikov, i drugie dokumenti

Set view = db.GetView( "AllByName" )
Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )

' hole alle Dokumente mit der CpyDocID_T
searchFormula$ = {Form != "Company" & CpyDocID_T = "" + cstr(doc.universalid)}

Set collection = db.Search(searchFormula$, Nothing,0)
Set doc1 = collection.GetFirstDocument()


While Not(doc Is Nothing)
doc1.VerbandsG = doc.VerbandsG
Call doc1.Save( True, False )
Set doc1 = collection.GetNextDocument(doc1)
Wend
Messagebox collection.Count, , "Child documents found"


Set doc = view.GetNextDocument( doc )
Wend

End Sub


Poluchilos kak bi zikl v zikle...Snachala mi berem rodit dok-t, dlya nego nahodim vse dochernie, u nih odno i toge znachenie CpyDocID... I potom menyaem pole VerbandsG dochernego na VerbandsG roditelya...I tak dlya vseh dokumentov...No zagvozdka vot v chem...Kogda zapuskayu agent, vihodit soobschenie-viberite dokument iz spiska, eto ladno, vibirayu...I potom oshibka:
"Object variable not set"...V debuddere smotrju, idet vse a posle Dim-ov stagu ge ostanavlivaetsya i dalshe ni odna knopka debuggera ne aktivna krome zavershit i vijti iz debuggera.... :) Chto ge mne teper s etim hozyajstvom delat to?Kto nibud, pomgite pogalujsta :)
 
G

Guest

Странно все это. :)
А что стоит в Target агента и способе вызова?

+ во второй строчке "While Not(doc Is Nothing)"
нужно не doc, а doc1 написать.

+ в виде, по которому будешь гонять агент, выводи просто документы с формой "Company". Зачем там еще и подчиненные делать? =)
или предварительно проверяй что за форма попалась и для != "Company" пропускай внутренний цикл.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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