Проблемы С Inputenable

Shandrik

Well-Known Member
Lotus team
30.12.2010
268
26
#1
Решил поэкспериментировать с опцией поля Input Enable - создал настроечный документ, где выбираю юзеров, которым дается право редактировать определенное поле в документе.
В поле в документе в Input Enable делаю @DBLookup к этой настройке. При открытии документа курсор начинает дергаться, в левой части статусбара мигает молния. Через какое-то время лотус молча падает.
Поставил в Queryrecalc и Postrecalc: Print Getthreadinfo(1) & " " & Now, но в статусбар ничего не выводится.
Кто использовал Input Enable? Что за грабли?
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#2
Проще (да даже правильнее) сделать группу таких пользователей и проверять состоит ли пользователь в этой группе.
Или не только сделать группу, а еще и роль отдельную и проверять эту роль у данного сотрудника.
Кто использовал Input Enable? Что за грабли?
Никаких граблей, просто там должна быть наиболее простая логическая функция.
Если 1 - редактируем, если 0 - нельзя.
Так же стоит добавить в эту функцию @IsDocBeingEdited, чтобы редактировать только в режиме редактирования.
Если сделать 1, то в открытии "на четние" поле будет выглядеть как "редактируемое"
 

Shandrik

Well-Known Member
Lotus team
30.12.2010
268
26
#3
Проще (да даже правильнее) сделать группу таких пользователей и проверять состоит ли пользователь в этой группе.
Или не только сделать группу, а еще и роль отдельную и проверять эту роль у данного сотрудника.
Я отдаю базу в отдел и хочу, чтобы они сами её настраивали. Манагерский доступ им давать не хочу и уж тем более не хочу изменять состав группы всякий раз, как им захочется добавить ещё одного сотрудника.
Вот изменять поле в настроечном документе - ради богу.



Никаких граблей, просто там должна быть наиболее простая логическая функция.
Куда уж проще-то:

@If(@IsMember("[Supervisor]";@UserRoles);@Return(@True);"");
ReviewersListEditors:=@DbLookup("":"NoCache";""; "(SettingsAndClassif)";"privilegium";"ReviewersListEditors");
ReviewersListEditors:=@If(@IsError(ReviewersListEditors);"";ReviewersListEditors);
@IsMember(@Name([Canonicalize];@UserName);@Name([Canonicalize];ReviewersListEdit
ors))

Тут именно какая особенность InputEnable.
Сейчас попробую вычислить редакторов dblookup-ом в cfd-поле и уже с ним работать.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 492
367
#4
проще создать форму с сабформами и на основании доступа подгружать редактируемую или нет
 

Shandrik

Well-Known Member
Lotus team
30.12.2010
268
26
#5
Так же стоит добавить в эту функцию @IsDocBeingEdited, чтобы редактировать только в режиме редактирования.
Если сделать 1, то в открытии "на четние" поле будет выглядеть как "редактируемое"
Нет, в режиме чтения просто текст - без ковычек и выбора из АB

Добавлено: Вынес DBLookup в CFD-поле и уже с ним сравниваю юзера. Всё работает без глюков!
Вобщем, будьте осторожны с InputEnable!

Добавлено:
проще создать форму с сабформами и на основании доступа подгружать редактируемую или нет
Да, тоже решение, хотя и не уверен, то более простое.
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#7
Тут и особенность @DbLookup.
Для вычисления постоянно лезет к представлению, причем не кэшируя записи.
Возможно стоит сделать кэширование, не думаю, что список будет меняться каждый час.
Еще стоит добавить в DbLookup слово: [FAILSILENT]
Вернет пустую строку, если ничего не найдет.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#8
дблукап неправильный - отсюда и проблема
 

Shandrik

Well-Known Member
Lotus team
30.12.2010
268
26
#9
Что с ним не так? Будучи вынесенным в отдельное поле исправно работает.

Добавлено:
Тут и особенность @DbLookup.
Для вычисления постоянно лезет к представлению, причем не кэшируя записи.
Возможно стоит сделать кэширование, не думаю, что список будет меняться каждый час.
На этапе разработки без этого никак - постоянно настройки правлю.
А если и забуду перед релизом убрать - так там вьюшка мизерная.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#10
Что с ним не так? Будучи вынесенным в отдельное поле исправно работает.

Добавлено:
На этапе разработки без этого никак - постоянно настройки правлю.
А если и забуду перед релизом убрать - так там вьюшка мизерная.
параметр сервер:файл должен быть 2х значным а не ""
если в поле работает поставь это поле перед тем а в нипутенеблед ссылайся на 1е поле
 

Shandrik

Well-Known Member
Lotus team
30.12.2010
268
26
#11
параметр сервер:файл должен быть 2х значным а не ""
To perform the lookup on the current database (the same database in which the formula is being evaluated), specify "" as the entire argument to the function.


если в поле работает поставь это поле перед тем а в нипутенеблед ссылайся на 1е поле
Ну я так и сделал - см. выше.


Долго думал - причем тут путен? :D