|
|
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Lotus Domino 7.02. Подскажите (скорее всего это делается примитивно), как реализовать следующую задачу. База, дискуссионного типа. Есть родительские документы, есть ответы на них. Шапка для всех документов одна и та же, поэтому она вынесена как Subform-a. В данной шапке есть поля, которые хотелось бы переносить автоматом в дочерние документы (как то Тема, Статус .. может быть чего нибудь еще и добавится!!) Логически я вижу такой алгоритм При создании нового ответа, или ответа на ответ в данном поле подформы надо использовать DefaultValue, в котором будет проверяться Если документ типа Отевет или ОтветНаОтвет, то забрать из родительского документа значение этого поля и записать сюда. И дополнительно еще хотелось бы еще такую задачку спросить. В родительском документе есть поле статус (решается или решено). Как бы вы посоветовали автоматически менять данное состояние в дочерних документах, когда пользователь поменял его в родительском! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 11:48 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
1. Если в дочернем документе есть поля, имеющие наименования идентичные полям в родительском, а на форме этого документа стоит соответствующая галочка (не помню точно, но что-то типа "Наследовать значения полей из родительского документа...") то всё происходит само собой, т.е. автоматически. 2. Т.к. Лотус система не реляционная, то изменение полей в дочерних документах само собой не произойдёт. Можно это сделать самому, если написать соответствующий код в QuerySave основного документа. Но надо понимать, что у пользователя должны быть права на изменение этих дочерних документов, иначе для этого придётся писать специального агента, кот. запускается на сервере с административными правами и имеет такой доступ. Это уже другая история. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 17:29 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
Garrick1. Если в дочернем документе есть поля, имеющие наименования идентичные полям в родительском, а на форме этого документа стоит соответствующая галочка (не помню точно, но что-то типа "Наследовать значения полей из родительского документа...") то всё происходит само собой, т.е. автоматически. 2. Т.к. Лотус система не реляционная, то изменение полей в дочерних документах само собой не произойдёт. Можно это сделать самому, если написать соответствующий код в QuerySave основного документа. Но надо понимать, что у пользователя должны быть права на изменение этих дочерних документов, иначе для этого придётся писать специального агента, кот. запускается на сервере с административными правами и имеет такой доступ. Это уже другая история. Спасибо, получилось! В догонку такой вопрос.. Шо то доку рою а не могу сообразить.. есть задача блокировать документ, если у него статус "Закрыто" . объясню как я делал.. событие формы Postmodechange Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. при изменении и пересохранении документа вроде бы начинат ругатся Object variable not set но дает сделать изменение в документе.. поэтому вопрос - где я туплю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 17:59 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
Сам спросил - сам ответил! :)) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 18:40 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
Alexandr Tесть задача блокировать документ, если у него статус "Закрыто" . Если я правильно понял надо сделать документ Read-only (а то ведь и просто спрятать можно). Мне кажется выбран не совсем верный концептуальный подход к решению данной задачи. А если всё же когда-нибудь потребуется внести изменения в такой документ? Без правки кода ничего не получится. Я бы советовал использовать права доступа к документу, поля типа Authors/Readers. Yj Но помните, что всегда в любой базе должен быть какой-нибудь пользователь (администратор, менеджер - называйте как хотите) с полным доступом, на всякий случай. Это легко делается если во все поля Authors, во всех документах программно, на форме, вписать какую-то роль [Administrator] или [Manager] - называйте как хотите. Потом эта роль назначается нужному человеку в ACL базы и вот он главный! В вашем случае алгоритм следующий - изначально поле Authors имеет значение "*", т.е. все могут править этот документ. При изменении статуса одновременно меняется значение поля Authors, на "[Manager]", теперь после сохранения документа, его смогут править только пользователи обладающие этой ролью в ACL базы. Никакого кода в Postmodechange писать не надо Lotus сам отслеживает права доступа к документу. Если поиграться с полями Readers, то не все пользователи смотут видеть все документы, часто это очень нужно. А когда вы "доиграитесь" с полями Readers и никто из пользователей не сможет получить доступ к документу, вам на помощь придёт эта-самая супер роль из ACL, которую вы заблаговременно заложили в поле Authors. Желаю удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2008, 10:15 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
Забыл предупредить. Изменения на форме значений полей Authors/Readres никак не отразится на уже имеющихся в базе документах. Для изменения этих документов их надо будет "пересчитать", как-то программно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2008, 10:19 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
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. Единственная проблема - есть при этом возможность удалить документ.. но я щас с этим пытаюсь разобраться.. Если Вы это дочитали до конца то скажите пожайлуста - где у меня принципиально неправильный подход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2008, 11:47 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
По поводу как сделать документ Read-Only я уже написал ранее. По поводу доступа на чтение, я бы сделал следующим образом. На форме документа имеется скрытое поле типа Readers с вычисляемым значением "[all_readers]". Ещё на форме имеется редактируемое поле типа Readers, которое пользователь заполяет списком читателей самостоятельно. При определении доступа к документу Lotus Notes суммирует все поля Authors/Readers, которых в одном документе может быть много. Таким образом доступ на чтение к документу получат все пользователи указанные в редактируемом поле, плюс те пользователи, у которых в ACL базы есть роль [all_readers]. Код в PostSave уже не нужен. К тому же ваш код может создавать множество одинаковых полей "Readers" в одном документе. Вы же не проверяете есть ли уже такое поле, а просто добавляете новое, Lotus Notes позволяет в одном документе иметь несколько полей с одинаковыми именами. По поводу удаления. Не помню точно, но вроде как если у пользователя нет прав на редактирование, то и удалить он этот документ не сможет. Проверьте. А вообще, удаление документов можно отследить в событии QueryDocumentDelete в Database Script. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2008, 16:02 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
а скажите плиз, как получить список пользователей , которые "включены" в какую то определенную роль!? а то не @UserRoles не @UserNamesList не могут этого сделать!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2008, 18:50 |
|
||
|
LOTUS, DOMINO 7. передача значения поля в дочерний документ!
|
|||
|---|---|---|---|
|
#18+
Alexandr Tа скажите плиз, как получить список пользователей , которые "включены" в какую то определенную роль!? а то не @UserRoles не @UserNamesList не могут этого сделать!! А для чего вам это? Lotus Notes сам отслеживает права доступа. Списки пользователей, их права доступа и роли видны в ACL базы, там же назначаются или отбираются. Можно проверить роль текущего (или какого-нибудь другого пользователя) @IsMember("[Role]"; @UserRoles). Вообще старайтесь больше использовать предоставление прав с помощью групп пользователей и ролей - потом меньше будет головной боли с часто вновь принимаемыми на работу и увольняющимися сотрудниками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2008, 10:19 |
|
||
|
|

start [/forum/topic.php?fid=56&fpage=24&tid=2015930]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 404ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...