Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/148: Рейтинг темы: голосов - 148, средняя оценка - 4.64
roymstor
1

Накосячил с полем типа Readers

12.08.2009, 13:05. Просмотров 26832. Ответов 23
Метки нет (Все метки)

Вобщем такая ситуация.

В документе есть поле AReaders (тип, соответственно, Readers). Поле многозначное.
При сохранении документа этому полю присваивается значение в зависимости от выбора радиобаттона. И я следующим образом присвоил значение этому полю:

If Source.FieldGetText("field1") = "var1" Then
Call Source.FieldSetText("AReaders", "[rol1]")
Call Source.FieldAppendText("AReaders", "[rol2]")
End If

И теперь я не могу ни просмотреть этот документ и вообще ничего-либо с ним сделать. Пробовал и на локальной копии и на сервере. Пробовал агентом и обновлять значение поля и удалять это поле. Ничего не помогает... Документ просто не отображается и все!

Помогите плиз.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2009, 13:05
Ответы с готовыми решениями:

Чтение формы с полем Readers
такая проблема, в лотусовой базе создал форму, внес туда данные и добавил людей вполе с типом...

поле типа Readers
Здравствуйте! Хотелось бы уточнить: в документе есть поле типа readers. Если я сделаю его пустым,...

Поля типа Readers и Authors
Я правильно понимаю что если в поле типа Readers или Authors попадается LN имя юзера, то этот юзер...

Поле типа Readers. Обрезаются данные.
Hi All! Столкнулся с такой проблемой: Есть форма, на ней есть поле "qwe" типа Readers. В...

23
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
12.08.2009, 13:09 2
ну дык назначь себе эти роли. делов-то
а вообще - заведи роль [Admin] и добавляй ее по умолчанию во все документы в поле AuthorsID. И назначь эту роль себе... или еще кому-нить
0
roymstor
12.08.2009, 13:11 3
Так эти роли назначены у меня В том-то и дело. И обе сразу назначал, и по отдельности каждую...
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
12.08.2009, 13:12 4
ну начнем с того что ты ридерс делал а надо было авторс
0
roymstor
12.08.2009, 13:14 5
Почему авторс должен быть? И что мне теперь делать с этим документом? Можно его как-то сделать видимым или хотя бы удалить?
0 / 0 / 0
Регистрация: 20.10.2008
Сообщений: 271
12.08.2009, 13:14 6
Цитата Сообщение от rainstor
Так эти роли назначены у меня В том-то и дело. И обе сразу назначал, и по отдельности каждую...
Серверный агент видит этот документ?

С Full Access Admininstration документ видно?
0
roymstor
12.08.2009, 13:16 7
Нет, агента запускал и на серверной и на локальной копии
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
12.08.2009, 13:19 8
Цитата Сообщение от rainstor
Почему авторс должен быть? И что мне теперь делать?
AuthorsID - поле предназначено для предоставления прав автора. т.е. если пользователь указан в этом поле - он получает возможность редактировать документ не только в UI но и в бекэнде
ReadersID - для предоставления прав на просмотр.

Если важны документы - попробуй сделать копию на локаль, но без наследования ACL. должно помочь.
Если и это не поможет - поменяй расширение базы на ntf и создай по этому "шаблону" новую базу

Ну и надеюсь понятно, что это все лучше делать с копией рабочей базы?

ну а вообще - разработку и тестирование надо вести на отдельной базе (шаблоне) а не сразу на боевой

Так.... что-то я пропустил... с этими ролями ты не видишь документ вообще? или просто не можешь его редактировать?
0
roymstor
12.08.2009, 13:34 9
Цитата Сообщение от abbatik
С Full Access Admininstration документ видно?
Я на сервере не являюсь администратором. Я просто программист


Цитата Сообщение от NickProstoNick
Если важны документы - попробуй сделать копию на локаль, но без наследования ACL. должно помочь.
Непомогло


Цитата Сообщение от NickProstoNick
Если и это не поможет - поменяй расширение базы на ntf и создай по этому "шаблону" новую базу
Непомогло


Цитата Сообщение от NickProstoNick
ну а вообще - разработку и тестирование надо вести на отдельной базе (шаблоне) а не сразу на боевой
Я в курсе об этом. Просто база - небольшая, вспомогательная и не особо важная. С другими базами так и делаю


Цитата Сообщение от NickProstoNick
Так.... что-то я пропустил... с этими ролями ты не видишь документ вообще? или просто не можешь его редактировать?
Вообще не вижу документ, которому присвоены эти роли.

А вообще роли я правильно присвоил? В смысле по коду?
0 / 0 / 0
Регистрация: 08.08.2009
Сообщений: 178
12.08.2009, 13:37 10
Запусти Lotus Administator.
Открой сервер, где находится база.
Включи режим Administration->Full Access Administrator. (Предполагается, что ты прописан в поле Full Access Administrators на вкладке Security в настройках сервера)
После перезахода в базу ты сможешь видеть все документы в базе.

Как уже сказали, на будущее заведи в базе роль, которую прописывай в поле типа Readers для всех документов с непустым полем типа Readers.

Update: если ты не имеешь права администрирования сервера, то попроси проделать все вышеописанное администратора.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
12.08.2009, 13:45 11
Программист с обрезанными правами это круто!!!!



Цитата Сообщение от rainstor
If Source.FieldGetText("field1") = "var1" Then
Call Source.FieldSetText("AReaders", "[rol1]")
Call Source.FieldAppendText("AReaders", "[rol2]")
End If
меня терзают смутные сомнения по поводу правильности кода. Такие манипуляции надо делать в бекэнде
Почитай хелп по NotesItem class.
Обрати внимание на свойства IsAuthors, IsNames, IsReaders
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
12.08.2009, 13:51 12
Программист с обрезанными правами это круто!!!!
Вообще-то это правильно.
0
roymstor
12.08.2009, 14:18 13
Что интересно, если полю AReaders присваивать значение следующим образом и убрать multiple value, то все нормально роли работают:

If Source.FieldGetText("field1") = "var1" Then
Call Source.FieldSetText("AReaders", "[rol1]:[rol2]")
End If
0 / 0 / 0
Регистрация: 08.08.2009
Сообщений: 178
12.08.2009, 14:23 14
Насчет правильности кода:
1. Действительно, не рекомендуется это делать UI методами.
2. По результатам работы кода в поле будет одно значение "[rol1][rol2]" потому что notesUIDocument.FieldAppendText добавляет текст, а не новое значение. Чтобы данный код работал, нужно дополнительно добавить любой из разделителей, указанных в свойствах поля. Поскольку впоследствие вы легко можете решить изменить в поле разделитель, используемый для ввода, и не вспомните, что это разделитель еще где-то используется, то мы приходим к одному из обоснований пункта 1.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
12.08.2009, 14:24 15
Цитата Сообщение от rainstor
Что интересно, если полю AReaders присваивать значение следующим образом и убрать multiple value, то все нормально роли работают
хм... интересно... у меня установлено multiple value и все работает без проблем

просто тут

Код
If Source.FieldGetText("field1") = "var1" Then
Call Source.FieldSetText("AReaders", "[rol1]")
Call Source.FieldAppendText("AReaders", "[rol2]")
End If
не правильно написано. по итогам этих операций у тебя будет установлена "[rol1][rol2]". И multiple value тут не при чем
0
roymstor
12.08.2009, 14:37 16
Цитата Сообщение от Divankin
1. Действительно, не рекомендуется это делать UI методами.
Тогда вопрос. Какими еще методами можно это сделать при сохранении документа? (Сильно не пинайте - я в Лотусе новичек )


Цитата Сообщение от Divankin
2. По результатам работы кода в поле будет одно значение "[rol1][rol2]" потому что notesUIDocument.FieldAppendText добавляет текст, а не новое значение. Чтобы данный код работал, нужно дополнительно добавить любой из разделителей, указанных в свойствах поля. Поскольку впоследствие вы легко можете решить изменить в поле разделитель, используемый для ввода, и не вспомните, что это разделитель еще где-то используется, то мы приходим к одному из обоснований пункта 1.
Я так и понял что метод добавляет текст - поэтому в заголовке и написал что накосячил
Т.о. у меня сейчас в поле AReaders всего 1 значение ("[rol1][rol2]")? И соответсвенно такую роль мне никогда не создать...
Но что самое противное, во вью, категоризованному по дате, отображается дата создания этого документа, а сам документ нет (он 1 в этой дате), и соответственно в тоталсах этот документ также считается... И как убрать это теперь, я не знаю. Сам документ я создам заново за 1 мин


Цитата Сообщение от NickProstoNick
хм... интересно... у меня установлено multiple value и все работает без проблем
Да я думаю и у меня будут работать, просто когда пробовал снял эту галку.
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
12.08.2009, 14:53 17
Цитата Сообщение от rainstor
Тогда вопрос. Какими еще методами можно это сделать при сохранении документа? (Сильно не пинайте - я в Лотусе новичек smile.gif)
Заводишь на форме скрытые поля со всеми нужными аттрибутами. Выставляешь опцию Computed when Composed
И в свойстве Value пишешь "[rol1]":"[rol2]"
0
0 / 0 / 0
Регистрация: 08.08.2009
Сообщений: 178
12.08.2009, 15:05 18
1. Что делать со старым документом, я написал выше: нужно пойти к администратору и проделать вышеописанные действия на его машине.
2. Как программно, рекомендуемо сделать поле типа Readers с нужным значением.

Const READERS_FIELD = "Readers"
Dim doc As NotesDocument объект через который делаются все операции чтения/записи полей документа гуру Лотуса
Dim itReaders As NotesItem

Set doc = uidoc.Document считаем, что объект типа NotesUIDocument был уже получен ранее
Set itReaders = doc.ReplaceItemValue(READERS_FIELD, "")
itReaders.IsReaders = True
Всякие роли, группы и конкретные пользователи, которые должны иметь доступ
Call itReaders.AppendToTextList("[rol1]")
Call itReaders.AppendToTextList("[rol2]")
Call itReaders.AppendToTextList("1-я Группа пользователей")
Call itReaders.AppendToTextList("2-я Группа пользователей")
Call itReaders.AppendToTextList("CN=Конкретный Пользователь/OU=Наша фирма")
Call itReaders.AppendToTextList("CN=Другой Пользователь/OU=Наша фирма")
If itReaders.Text <> "" Then
Если поле непустое, то обязательно добавляем группу видящих все документы в базе.
Call itReaders.AppendToTextList("[ReadAll]")
End If

P.S. И не плодите поля типа Readers в документе. Таких полей должно быть максимум одно
0
roymstor
12.08.2009, 15:16 19
Ясно, спасибо.
И еще 1 вопросик. Почему в локальной копии (скопировал на уровне файловой системы) я не могу что-то делать с этими документами. Насколько я знаю на локальной машине не работает ACL. Или я ошибаюсь?


Цитата Сообщение от Divankin
1. Что делать со старым документом, я написал выше: нужно пойти к администратору и проделать вышеописанные действия на его машине.
Админ щас в отпуске :(. Да и живет он в другом городе совсем, поэтому выцепить его - маловероятно...
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
12.08.2009, 15:45 20
Цитата Сообщение от Divankin
P.S. И не плодите поля типа Readers в документе. Таких полей должно быть максимум одно
Плохой совет. Очень плохой совет. Это все конечно дело вкуса, но в 100% приложений что я видел, везде используют несколько ридерских/авторских полей. И я сам использую всегда несколько, ибо с такой схемой работать гораздо проще и глюков меньше.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2009, 15:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с памятью: можно ли в массив объектов с полем типа "Родитель", вписать объекты с полем типа "Потомок"
Здравствуйте. Предположим, что у нас есть массив из структур в которых находиться класс Item и...

Проблемы с полем типа TIME
Имеем: Cервер: OS/2 EComStation, MySQL for OS/2 v4.0.18 Рабочая станция: Windows2000, драйвер...

Класс с полем типа map
Привет, можно ли сделать класс с полем типа map&lt;int,int&gt;? У меня это сделать не получается -...

Проблема с полем типа Date/time
В поисковике есть поле типа Date/Time Если я ввожу туда вместо даты - буквы, то у меня просто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.