31.01.2011, 15:12 | #1 |
Участник
|
Привет всем!
У меня есть некая форма (точнее, 118-General Ledger Setup) Задача состоит в том, чтобы при открытии формы почти всем пользователям запрещалось редактировать 99% контролов (а точнее, все контролы, кроме одного). И нескольким оставшимся пользователям допускалось бы редактировать сразу всё. Для этого на триггере OnOpenForm вызывается простенькая ф-ция, сравнивающая USERID с нужным И далее что-то типа CurrForm."Allow Posting From".EDITABLE:=FALSE; CurrForm."Allow Posting To".EDITABLE:=FALSE; CurrForm."Local Address Format".EDITABLE:=FALSE; ... и идёт длинное-длинное перечисление всех контролов на форме. Решение, само по себе работает, но какое-то оно "неряшливое" Можно ли как-то это оптимизировать? Фактически всё сводится к управлению одним единственным контролом, который должен быть Enabled на фоне всей остальной Disabled-формы. Но тупо присвоить всей форме Disabled, а потом одному-единственному контролу Enabled Navision мне не позволяет ;( Подскажите, как это можно оптимизировать? Чтобы не указывать в коде названия всех-всех контролов. ЗЫ: Пока додумался только переносить контролы на каждой вкладке в отдельные фреймы. И этим фреймам уже ставить св-во Disabled. Так писанины получается гораздо меньше. Но! Возможно, есть какое-то более продвинутое решение (Control ID в цикле. Или как-то через RecordRef можно до них всех добраться?) |
|
31.01.2011, 15:24 | #2 |
Участник
|
|
|
31.01.2011, 15:40 | #3 |
Участник
|
Возможно, подойдет вариант на OnModify таблицы проверять CurrFieldNo?
|
|
31.01.2011, 17:03 | #4 |
Administrator
|
ах, какая хорошая у нас среда разработки!
|
|
01.02.2011, 10:24 | #5 |
Участник
|
А в 2009 эта проблема можно сказать решена
Там свойству VISIBLE, EDIABLE можно сопоставить (в свойствах контрола) булевскую переменную, значение которой можно потом изменять в коде. Сопоставляешь с несколькими контролами одну переменную и вперед. |
|
02.02.2011, 00:45 | #6 |
Участник
|
Цитата:
Словом, я не совсем понял, как это организовать на практике? NAV 2009 R2 в своей же справке по "Editable Property" с упорством идиота продолжает утверждать, что: Property Value Yes if the field, form, or control can be edited; otherwise, No. The default value is Yes. Ни о каких булёвых переменных в свойствах контрола на форме Мелкософт ничего не пишет. Или я не в туда смотрю? Поясните, пожалуйста. ЗЫ: Надеюсь, речь шла не о доисторической ф-ции UPDATEEDITABLE(), а именно о новых св-вах контролов в 2009. |
|
02.02.2011, 10:05 | #7 |
Участник
|
Цитата:
На странице RTC для контрола поставить в свойство EDITABLE TextBox-a переменную уже получилось, страница компилируется, но при запуске получаю сообщение: "The identifier 'EditControls' could not be found." EditControls это boolean переменная... В интернетах нашел решение этой проблемы))Вот |
|
02.02.2011, 10:46 | #8 |
Участник
|
|
|
02.02.2011, 11:42 | #9 |
Участник
|
Цитата:
Хотя, действительно, этот шлак (я имею ввиду RTC) проглатывает имя переменной после изменения её св-ва IncludeInDataset. Странно, что классика такого делать не умеет (точнее, не хочет, хотя это новое свойство булёвых переменных в обычном клиенте тоже вроде бы как есть и его можно было бы разумно использовать) Всем спасибо. |
|