Диалоги Lotus developers

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

oshmianski

...
Событие QuerySave Задания:
Код:
@If(Otmetka="Выполнено";@SetDocField(DocID;"Status";"Success");"");
Я не могу понять почему меня это событие пропускает и изменяет поле Status, а других нет?
Есть ли какието привилегии Управляющего, ведь вручную я тоже не могу изменить Заявку?
ты уверен, что по ссылке DocID берется нужный докмент Заявки. можно переписать на LotusScript и посмотреть в дебагаре, что же это за документ и что там за поля читателей и редакторов.

An Authors field works in conjunction with Author access in the database ACL. If you assign users Author access in the ACL, they can read documents in the database but cannot edit their own documents. If you list those users in an Authors field, they can edit documents in the database.
Entries in an Authors field cannot override the database ACL; they can only refine it. Users who have been assigned No Access in an ACL can never edit a document, even if you list them in an Authors field. Users who already have Editor (or higher) access in the ACL are not affected by an Authors field. Authors fields affect only users who have Author access in the ACL.

You must enter the user's full hierarchical name in the Authors field.
=If you manually enter a name in the Authors field, Domino expands and stores, for example, John Smith/ACME/West is stored as (CN=John Smith/OU=ACME/O=West) in its hierarchical form. The name displays in its abbreviated form.
=If you programmatically enter a name, you must use the full canonical form such as CN=John Smith/OU=ACME/O=West.

т.е., если доступ в ACL = Editor и выше, то поля типа Authors пофигу - это как раз то, почему ты можешь изменять документы.
видимо пользователи не могут, т.к. не являются авторами дока, т.е. не входят в поля типа Authors.
советую таки переписать сохранение дока Задания на LS и в дебагере посмотреть что за Заявку ты пытаешься изменить и что там за поля.

кроме того, обрати внимание на
You must enter the user's full hierarchical name in the Authors field...
 
F

fvoice

где находится код: на сервере или клиенте?

на клиенте

ты уверен, что по ссылке DocID берется нужный докмент Заявки. можно переписать на LotusScript и посмотреть в дебагаре, что же это за документ и что там за поля читателей и редакторов.

Да, потому что когда я изменяю документ все проходит нормально

Для oshmianski и всех кто помогал в поисках правильного решения БОЛЬШОЕ СПАСИБО!!!

Похоже я понял. Я сейчас попробую сначала дать пользователю Editor-а если не пройдет значит
You must enter the user's full hierarchical name in the Authors field..
т.к. действительно пользователь у меня записывется в виде John Smith/ACME/West, хотя для получения прав на чтение документа этого достаточно ;) !
 
F

fvoice

Дал пользователю доступ Editor, все встало на свои места. ;)
Выходит вся загвоздка в поле Authors.

Может мне кто нибудь поянить почему это поле не видно в свойствах документа?
Или оно появляется только когда в него вносят имя пользователя?

Извините за лишний треп. Разобрался.
 
O

oshmianski

Дал пользователю доступ Editor, все встало на свои места. ;)
Выходит вся загвоздка в поле Authors.

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

Gogan.exe

В общем, есть следующая задача:
В базе создается всегда два документа – главный и ответ. После изменения главного документа, нужно найти созданный на него ответ, удалить и создать новый ответ. Каким скриптом это можно сделать?

В скриптах я не силен и хотя я и уверен в том, что ничего сложного в этом нет, но даже с чего начать не знаю. Поможете?

Нужно чтобы это сегодня-завтра уже работало :/
 
G

GROMILA

СКРИПТ не проверял, сам протестишь :(

' Параметр: pRootDoc As NotesDocument - твой родитель

Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set dc = pRootDoc.Responses
Call dc.RemoveAll(True)

Set doc = db.CreateDocument
Call doc.MakeResponse( pRootDoc )
doc.Form = "ТвойРеспонс"
Call doc.Save( True, True )
 
G

Gogan.exe

не-а. не пашет :(

Отредактировал следующим образом:
Dim session As NotesSession
Dim ws As NotesUIWorkspace
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim uidoc As NotesUIDocument
Dim parentDoc As NotesDocument

Sub Initialize
Set session = New NotesSession
Set db = session.CurrentDatabase
Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
Set parentDoc = uidoc.Document
Set dc = parentDoc.Responses
Call dc.RemoveAll(ture)
Call uidoc.Close
End Sub

Ничего не происходит. ни ошибок, ничего...

Вызываю по кнопке в тулбаре из документа

Может кто поможет? Очень нужно!
 
K

Kee_Keekkenen

твой скрипт удаляет респонсы и все, а что ты еще хотел ?!
теперь по образу и подобию скрипта выше подиши создание респонс документа(ов), если, конечно, в этом есть необходимость..
 
G

Gogan.exe

Я же говорю, что ничего не происходит. и удаления тоже.
только что сообразил, что своим Call dc.RemoveAll(ture)
Я видимо просто отчищаю коллекцию
переделал на следущее:

Sub Initialize
Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set col = doc.Responses

For i%=0 To col.Count
Set docres = col.GetNthDocument(i%)
docres.RemovePermanently( True )
Next
End Sub

Тоже толку 0. ничего не удаляется. Что не так у меня в коде!?
 
G

Gogan.exe

Ну короче пока сам не смекнул - никто бы мне не помог.
Код писал в initialize а не в click :(
спасибо всем за внимание ;)
 
G

Gogan.exe

Если кому интересно будет потом - вот рабочий код.
Удаляет все ответы на данный документ

Sub Click(Source As Button)
Dim ws As NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim docres As NotesDocument
Dim col As NotesDocumentCollection
Dim newDoc As NotesDocument

Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document

Set col = doc.Responses

If(Not uidoc.IsNewDoc) Then
For i%=1 To col.Count
Set docres = col.GetNthDocument(i%)
Call docres.RemovePermanently( True )
Next
End If
End Sub


Теперь осталось написать скриптик на создание нового ответа.

На

Set newDoc = db.CreateDocument
Call newDoc.MakeResponse( doc )
newDoc.Form = "формаОтвета"
Call newDoc.Save( True, True )

Ругаеться следующим матом:
Varient does not contain an object
 
F

fvoice

Проверь правильно ли определяются db и doc

Кнопка где? В представлении или документе?
 
G

Gor

Для: Gogan.exe
по коду вроде бы как db не определено - Set newDoc = db.CreateDocument

Dim db As NotesDatabase
Set db = session.CurrentDatabase
 
G

Gogan.exe

Отлично! Все заработало! Всем огромное спасибо!
 
O

Ogion7

Усем привет. Вопрос такой -- есть вьюв, в нем отмечены документы. При нажатии кнопки нужно выполнять некоторые действия над отмечеными документами. Как это сделать?
 
M

morpheus

UnprocessedDocuments + HELP. там подробно описано .. кто получает и что получает и при каких условиях )))
 
I

Ifrit

Приветствую.
Небольшой ламерский вопрос: каким образом можно дизэйблить(или активировать) поле для редактирования после произведения пользователем определённого действия(например, выбора нужного значения из выпадающего списка)? Оба поля расположены на одной и той же форме.
Свойство "Hide paragraph if formula is true" не годится, т.к. поле надо делать "серым", но не невидимым.

Заранее спасибо.
 
K

Kee_Keekkenen

обычно делаю два поля - одно с требуемыми свойствами и отображаемое при отсутствии "условия" и скрываемое при наличи "условия", и, рядом второе - компутет фо дисплай поле серого цвета, которое отображает значение первого с "условиями" отображения/скрытия противоположными "условиям" отображения/скрытия первого поля.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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