Работа с профильными документами

azzza

Well-Known Member
26.04.2011
65
0
41
#1
Добрый день !

Прошу помощи. Знаю что где-то зашился, но не пойму где

Пытался реализовать следующее :
по клику на документе в Календарной вьюхе в соседнем фрейме отображение значений документа

1. Создал форму Detail в ней 3 поля RTF, 1 простое, 4 скрытых поля (одно из них авторское, по-умолчанию UserName)
2. обращаюсь к профдоку с ключом юзера из события вьюхи onSelect и заполняю поле Descript
3. Если форма Detail имеет крыж форма по-умолчанию, то все работает только на клиентах 8 и выше, на 7 нет доступа к доку
4. Если нет крыжа то не работает

по идее проф док для текущего юзверя должен создаваться по конструкции db.GetProfileDocument
доступ регламентируется правом ACL у юзера выше Author и наличием поля Authors в проф доке.
Как же тогда влияет крыж орма по-умолчанию и чего нехватает юзеру - почему он не имеет доступа к проф доку?

Помогите пожалуйста задание горит... :unsure:

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"код события on Select "</div></div><div class="sp-body"><div class="sp-content">Sub Onselect(Source As Notesuiview)
Код:
	Dim s As New NotesSession
Dim db As NotesDatabase
Dim uidb As NotesUIDatabase
Dim doc As NotesDocument
Dim det As NotesDocument
Dim uidoc As NotesUIDocument
Dim caret As String
Dim rtitem As NotesRichTextItem
Dim ws As New NotesUIWorkspace
Dim item As notesitem

' находимся на доке?	
caret = Source.CaretNoteID

If caret = "0" Then Goto endy

Set db = Source.View.Parent
Set doc = db.GetDocumentByID(caret)
Set view = source.View

Call ws.SetTargetFrame("bottom")
Set det =db.GetProfileDocument("Detail",s.username)
Set uidoc = ws.EditDocument(False,det)


Set adoc = db.GetDocumentByUNID(doc.addid(0))
If adoc Is Nothing Then Goto togo
det.addtype=adoc.tip(0)
togo:
det.gor=doc.gor_ob(0)
det.stnum=doc.stnum(0)
det.prior=doc.importance(0)
If Isnull(doc.fdstart(0)) Then
dt=doc.dstart(0)
Else
dt=doc.fdstart(0)
End If
If Isnull(doc.fdend(0)) Then
edt=doc.dend(0)
Else
edt=doc.fdend(0)
End If
Dim ddt As New NotesDateTime(dt)
Dim eddt As New NotesDateTime(edt)
If doc.Form(0)="Appointment" And ddt.TimeOnly="06:00:00" Then
det.dat="00:00:00"+ Chr$(13)+eddt.TimeOnly
Else
det.dat=ddt.TimeOnly+ Chr$(13)+eddt.TimeOnly
End If


Call det.Save(True,True)

Set ortitem = New NotesRichTextItem( det, "detail_1" )
Dim richStyle As NotesRichTextStyle
Set richStyle = s.CreateRichTextStyle
richStyle.bold = True
richStyle.Italic = False
richStyle.FontSize=10
richStyle.NotesColor=COLOR_RED
Call ortitem.AppendStyle(richStyle)
Call ortitem.AppendText("Заявка № "+doc.number(0)+Chr$(13))
richStyle.FontSize=1
richStyle.NotesColor=COLOR_BLACK
Call ortitem.AppendStyle(richStyle)
Call ortitem.AppendText(""+Chr$(13))
richStyle.FontSize=8
richStyle.NotesColor=COLOR_BLACK
Call ortitem.AppendStyle(richStyle)
Call ortitem.AppendText("Клиент :"+Chr$(13))
richStyle.NotesColor=COLOR_MAGENTA
Call ortitem.AppendStyle(richStyle)
Call ortitem.AppendText(doc.owner(0)+Chr$(13))
Call ortitem.AppendText("тел.: "+doc.ownerPhone(0))
Call ortitem.Update
Set rtitem = New NotesRichTextItem( det, "detail" )
richStyle.FontSize=8
richStyle.NotesColor=COLOR_BLACK
Call rtitem.AppendStyle(richStyle)	
Call rtitem.AppendText("Заказ : ")
richStyle.NotesColor=COLOR_BLUE
Call rtitem.AppendStyle(richStyle)
Call rtitem.AppendText(doc.mk(0)+Chr$(13))
richStyle.NotesColor=COLOR_BLACK
Call rtitem.AppendStyle(richStyle)
Call rtitem.AppendText("параметр : ")
richStyle.NotesColor=COLOR_BLUE
Call rtitem.AppendStyle(richStyle)
Call rtitem.AppendText(doc.gnum(0)+Chr$(13))
richStyle.NotesColor=COLOR_BLACK
Call rtitem.AppendStyle(richStyle)
Call rtitem.AppendText("параметр1 : "+Chr$(13))
richStyle.NotesColor=COLOR_BLUE
Call rtitem.AppendStyle(richStyle)
Call rtitem.AppendText(doc.drv(0)+Chr$(13))
Call rtitem.AppendText("тел.: "+doc.drvPhone(0))
Call rtitem.Update
Set prtitem = New NotesRichTextItem( det, "detail_2" )
Set richStyle = s.CreateRichTextStyle
richStyle.bold = True
richStyle.Italic = False
richStyle.FontSize=8
richStyle.NotesColor=COLOR_BLACK
Call prtitem.AppendStyle(richStyle)
Call prtitem.AppendText("("+doc.gor_ob(0)+") Пункт назначения : ")
richStyle.NotesColor=COLOR_BLUE
Call prtitem.AppendStyle(richStyle)
Call prtitem.AppendText(doc.kuda(0)+Chr$(13))
richStyle.FontSize=8
richStyle.NotesColor=COLOR_BLACK
Call prtitem.AppendStyle(richStyle)
Call prtitem.AppendText("Цель : ")
richStyle.FontSize=8
richStyle.NotesColor=COLOR_BLUE
Call prtitem.AppendStyle(richStyle)
Call prtitem.AppendText(doc.cel(0)+Chr$(13))
richStyle.FontSize=8
richStyle.NotesColor=COLOR_BLACK
Call prtitem.AppendStyle(richStyle)
Call prtitem.AppendText("Количество сотрудников "+Cstr(doc.kol(0))+" чел."+Chr$(13))
richStyle.FontSize=8
richStyle.NotesColor=COLOR_BLACK
Call prtitem.AppendStyle(richStyle)
Call prtitem.AppendText("Планируемый адрес подачи :")
richStyle.FontSize=8
richStyle.NotesColor=COLOR_BLUE
Call prtitem.AppendStyle(richStyle)
Call prtitem.AppendText(doc.adress(0))
Call prtitem.Update
Call det.Save(True,True)
det.saveoptions="0"
unid = det.UniversalID
Call uidoc.close
Call ws.SetTargetFrame("bottom")
Call ws.EditDocument(False, det, False,,False)
Call ws.ViewRefresh

endy:
End Sub
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#2
Сходу - перед этим кодом задать форму "Detail", по которой документ будет открываться.
Set uidoc = ws.EditDocument(False,det)
У вновь созданного профайла нет айтема формы. Либо открытие на редактирование переделать под диалогбокс с явным указанием "Detail".
Возможно, надо будет еще до открытия заполнить авторс-поля.
 

azzza

Well-Known Member
26.04.2011
65
0
41
#3
Сходу - перед этим кодом задать форму "Detail", по которой документ будет открываться.
Set uidoc = ws.EditDocument(False,det)
У вновь созданного профайла нет айтема формы. Либо открытие на редактирование переделать под диалогбокс с явным указанием "Detail".
Возможно, надо будет еще до открытия заполнить авторс-поля.
Спасибо огромное OKEN !!!! Попробую сделать как посоветовал... :( :unsure:
Форму прописал, у мну робит и без дефолт крыжа, завтра отпишусь что у юзверей будет...

Жаль не вижу как тебя Спасибками закидать для рейты :)
 

azzza

Well-Known Member
26.04.2011
65
0
41
#4
Сходу - перед этим кодом задать форму "Detail", по которой документ будет открываться.
Set uidoc = ws.EditDocument(False,det)
У вновь созданного профайла нет айтема формы. Либо открытие на редактирование переделать под диалогбокс с явным указанием "Detail".
Возможно, надо будет еще до открытия заполнить авторс-поля.
Благодаря твоему совету OKEN избавился от "формы по умолчанию" , прописал заранее авторс поле и все же
:unsure: - попробовал у юзеров все так же под 7 недоступны поля, под 8 работает на ура
В чем же косячек , где еще копнуть ковшечком экскаватора....
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#5
у юзеров все так же под 7 недоступны поля, под 8 работает на ура
Читаем справку дизайнера:
Onselect event

Occurs when the row highlight moves to a new row within a view, or rows are selected/deselected. The CaretCategory and CaretNoteID properties can be used to identify which row is newly highlighted. The Documents property can be used to detect which documents are selected.

Note This event is new with Release 8.
Можно попробовать на собаках через Target Frame (single click)

Добавлено
Обсуждение тут: http://codeby.net/ipb.html?s=&sh...st&p=141346
 

azzza

Well-Known Member
26.04.2011
65
0
41
#6
Читаем справку дизайнера:

Можно попробовать на собаках через Target Frame (single click)

Добавлено
Обсуждение тут: http://codeby.net/ipb.html?s=&sh...st&p=141346
Спасибо огромное nvy, жаль, 8 не ставим из-за "нагрузки на машину" у нас считают что 8 нужно минимум 2 метра памяти (не знаю насколько это аргумент, но раз поставлен в таки рамки).
Попробую извернуться через Inviewedit :) уже есть така вью - просто 2 раза нужно хлопать мышью с запретом Continue :)
Либо нехай 8 ставят и усе тут :))))

Еще раз спасибо всем кто откликнулся +++...+++ Вам