powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / LOTUS, DOMINO 7. передача значения поля в дочерний документ!
10 сообщений из 10, страница 1 из 1
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35353536
Alexandr T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Lotus Domino 7.02.
Подскажите (скорее всего это делается примитивно), как реализовать следующую задачу. База, дискуссионного типа. Есть родительские документы, есть ответы на них. Шапка для всех документов одна и та же, поэтому она вынесена как Subform-a. В данной шапке есть поля, которые хотелось бы переносить автоматом в дочерние документы (как то Тема, Статус .. может быть чего нибудь еще и добавится!!) Логически я вижу такой алгоритм
При создании нового ответа, или ответа на ответ в данном поле подформы надо использовать DefaultValue, в котором будет проверяться

Если документ типа Отевет или ОтветНаОтвет, то забрать из родительского документа значение этого поля и записать сюда.

И дополнительно еще хотелось бы еще такую задачку спросить. В родительском документе есть поле статус (решается или решено). Как бы вы посоветовали автоматически менять данное состояние в дочерних документах, когда пользователь поменял его в родительском!
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35354753
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Если в дочернем документе есть поля, имеющие наименования идентичные полям в родительском, а на форме этого документа стоит соответствующая галочка (не помню точно, но что-то типа "Наследовать значения полей из родительского документа...") то всё происходит само собой, т.е. автоматически.

2. Т.к. Лотус система не реляционная, то изменение полей в дочерних документах само собой не произойдёт. Можно это сделать самому, если написать соответствующий код в QuerySave основного документа. Но надо понимать, что у пользователя должны быть права на изменение этих дочерних документов, иначе для этого придётся писать специального агента, кот. запускается на сервере с административными правами и имеет такой доступ. Это уже другая история.
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35367855
Alexandr T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick1. Если в дочернем документе есть поля, имеющие наименования идентичные полям в родительском, а на форме этого документа стоит соответствующая галочка (не помню точно, но что-то типа "Наследовать значения полей из родительского документа...") то всё происходит само собой, т.е. автоматически.

2. Т.к. Лотус система не реляционная, то изменение полей в дочерних документах само собой не произойдёт. Можно это сделать самому, если написать соответствующий код в QuerySave основного документа. Но надо понимать, что у пользователя должны быть права на изменение этих дочерних документов, иначе для этого придётся писать специального агента, кот. запускается на сервере с административными правами и имеет такой доступ. Это уже другая история.

Спасибо, получилось!

В догонку такой вопрос.. Шо то доку рою а не могу сообразить.. есть задача блокировать документ, если у него статус "Закрыто" .
объясню как я делал..
событие формы Postmodechange

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub Postmodechange(Source As Notesuidocument)
	Dim doc As  NotesDocument
	Dim stat As String
	
	
	stat = doc.GetItemValue( "status" )	
	If stat="Закрыто" Then EditMode=False	
	
End Sub

при изменении и пересохранении документа вроде бы начинат ругатся Object variable not set
но дает сделать изменение в документе.. поэтому вопрос - где я туплю?
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35367990
Alexandr T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам спросил - сам ответил! :))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Postmodechange(Source As Notesuidocument)
	
	Dim stat As String
	
	
	stat= Source.FieldGetText( "status" )	
	If stat="Закрыто" Then  source.EditMode=False	
	
	
	
End Sub
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35368749
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr Tесть задача блокировать документ, если у него статус "Закрыто" .


Если я правильно понял надо сделать документ Read-only (а то ведь и просто спрятать можно). Мне кажется выбран не совсем верный концептуальный подход к решению данной задачи. А если всё же когда-нибудь потребуется внести изменения в такой документ? Без правки кода ничего не получится. Я бы советовал использовать права доступа к документу, поля типа Authors/Readers. Yj Но помните, что всегда в любой базе должен быть какой-нибудь пользователь (администратор, менеджер - называйте как хотите) с полным доступом, на всякий случай. Это легко делается если во все поля Authors, во всех документах программно, на форме, вписать какую-то роль [Administrator] или [Manager] - называйте как хотите. Потом эта роль назначается нужному человеку в ACL базы и вот он главный!

В вашем случае алгоритм следующий - изначально поле Authors имеет значение "*", т.е. все могут править этот документ. При изменении статуса одновременно меняется значение поля Authors, на "[Manager]", теперь после сохранения документа, его смогут править только пользователи обладающие этой ролью в ACL базы. Никакого кода в Postmodechange писать не надо Lotus сам отслеживает права доступа к документу.

Если поиграться с полями Readers, то не все пользователи смотут видеть все документы, часто это очень нужно. А когда вы "доиграитесь" с полями Readers и никто из пользователей не сможет получить доступ к документу, вам на помощь придёт эта-самая супер роль из ACL, которую вы заблаговременно заложили в поле Authors.

Желаю удачи!
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35368761
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл предупредить. Изменения на форме значений полей Authors/Readres никак не отразится на уже имеющихся в базе документах. Для изменения этих документов их надо будет "пересчитать", как-то программно.
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35369060
Alexandr T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick Alexandr Tесть задача блокировать документ, если у него статус "Закрыто" .


Если я правильно понял надо сделать документ Read-only (а то ведь и просто спрятать можно). Мне кажется выбран не совсем верный концептуальный подход к решению данной задачи. А если всё же когда-нибудь потребуется внести изменения в такой документ? Без правки кода ничего не получится. Я бы советовал использовать права доступа к документу, поля типа Authors/Readers. Yj Но помните, что всегда в любой базе должен быть какой-нибудь пользователь (администратор, менеджер - называйте как хотите) с полным доступом, на всякий случай. Это легко делается если во все поля Authors, во всех документах программно, на форме, вписать какую-то роль [Administrator] или [Manager] - называйте как хотите. Потом эта роль назначается нужному человеку в ACL базы и вот он главный!

В вашем случае алгоритм следующий - изначально поле Authors имеет значение "*", т.е. все могут править этот документ. При изменении статуса одновременно меняется значение поля Authors, на "[Manager]", теперь после сохранения документа, его смогут править только пользователи обладающие этой ролью в ACL базы. Никакого кода в Postmodechange писать не надо Lotus сам отслеживает права доступа к документу.

Если поиграться с полями Readers, то не все пользователи смотут видеть все документы, часто это очень нужно. А когда вы "доиграитесь" с полями Readers и никто из пользователей не сможет получить доступ к документу, вам на помощь придёт эта-самая супер роль из ACL, которую вы заблаговременно заложили в поле Authors.

Желаю удачи!

ну если вам не трудно то просто вникните в суть задачи..
дисскусионная база данных.. (не с шаблона. Специально делаю с нуля что бы сделать именно то что надо будет, без лишних наворотов, плюс к тому же вникнуть в саму систему Лотуса)

Задача стоит следующая.. Различные сотрудники фирмы обсуждают общую проблему.. Кто то создает тему, у которой автоматически вычисляется поле Автор, явным образом указываются участвующие в обсуждении лица (поле Ридер).. далее еще есть поле с ориентирововчной датой решении проблемы (что бы сигнализировать когда просрочится), и Статус, о котором говорилось уже выше.. В ACL базы есть роль all_reader...Дополнительно я ввел еще поле типа Ридер.. дал ему значение [all_reader].. это сделано для того, что бы всегда была группа людей (условно скажем - это начальство), которые будут видеть все документы в данной базе.. для них есть событие PostSave

Код: plaintext
1.
2.
3.
4.
5.
Sub Postsave(Source As Notesuidocument)
	
	Set doc =Source.Document
	Set iReader = New NotesItem(doc, "Reader",  _
	"[all_reader]", READERS)
End Sub
Таким образом даже если пользователя явно не указали в списке участвующих лиц, с ролью all_reader он все равно будет видеть все документы..блокировка документа была описана раньше (по состоянию закрыто).

Единственная проблема - есть при этом возможность удалить документ.. но я щас с этим пытаюсь разобраться..

Если Вы это дочитали до конца то скажите пожайлуста - где у меня принципиально неправильный подход?
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35370052
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу как сделать документ Read-Only я уже написал ранее.

По поводу доступа на чтение, я бы сделал следующим образом. На форме документа имеется скрытое поле типа Readers с вычисляемым значением "[all_readers]". Ещё на форме имеется редактируемое поле типа Readers, которое пользователь заполяет списком читателей самостоятельно. При определении доступа к документу Lotus Notes суммирует все поля Authors/Readers, которых в одном документе может быть много. Таким образом доступ на чтение к документу получат все пользователи указанные в редактируемом поле, плюс те пользователи, у которых в ACL базы есть роль [all_readers]. Код в PostSave уже не нужен. К тому же ваш код может создавать множество одинаковых полей "Readers" в одном документе. Вы же не проверяете есть ли уже такое поле, а просто добавляете новое, Lotus Notes позволяет в одном документе иметь несколько полей с одинаковыми именами.

По поводу удаления. Не помню точно, но вроде как если у пользователя нет прав на редактирование, то и удалить он этот документ не сможет. Проверьте. А вообще, удаление документов можно отследить в событии QueryDocumentDelete в Database Script.
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35370500
Alexandr T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а скажите плиз, как получить список пользователей , которые "включены" в какую то определенную роль!? а то не @UserRoles не @UserNamesList не могут этого сделать!!
...
Рейтинг: 0 / 0
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
    #35373932
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr Tа скажите плиз, как получить список пользователей , которые "включены" в какую то определенную роль!? а то не @UserRoles не @UserNamesList не могут этого сделать!!

А для чего вам это? Lotus Notes сам отслеживает права доступа. Списки пользователей, их права доступа и роли видны в ACL базы, там же назначаются или отбираются. Можно проверить роль текущего (или какого-нибудь другого пользователя) @IsMember("[Role]"; @UserRoles). Вообще старайтесь больше использовать предоставление прав с помощью групп пользователей и ролей - потом меньше будет головной боли с часто вновь принимаемыми на работу и увольняющимися сотрудниками.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / LOTUS, DOMINO 7. передача значения поля в дочерний документ!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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