AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.01.2011, 15:12   #1  
jopagames2 is offline
jopagames2
Участник
 
151 / 11 (1) +
Регистрация: 11.02.2010
Привет всем!

У меня есть некая форма (точнее, 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  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от jopagames2 Посмотреть сообщение
Фактически всё сводится к управлению одним единственным контролом, который должен быть Enabled на фоне всей остальной Disabled-формы.
Фрейм.

ПС. Сорри, не дочитал до конца -(
Старый 31.01.2011, 15:40   #3  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Возможно, подойдет вариант на OnModify таблицы проверять CurrFieldNo?
Старый 31.01.2011, 17:03   #4  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
ах, какая хорошая у нас среда разработки!
Старый 01.02.2011, 10:24   #5  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
А в 2009 эта проблема можно сказать решена
Там свойству VISIBLE, EDIABLE можно сопоставить (в свойствах контрола) булевскую переменную, значение которой можно потом изменять в коде.
Сопоставляешь с несколькими контролами одну переменную и вперед.
Старый 02.02.2011, 00:45   #6  
jopagames2 is offline
jopagames2
Участник
 
151 / 11 (1) +
Регистрация: 11.02.2010
Цитата:
Сообщение от Fordewind Посмотреть сообщение
А в 2009 эта проблема можно сказать решена
Там свойству VISIBLE, EDIABLE можно сопоставить (в свойствах контрола) булевскую переменную, значение которой можно потом изменять в коде.
"Можно сказать, что проблема решена" и "проблема решена" - немного разные вещи.
Словом, я не совсем понял, как это организовать на практике?

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  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Цитата:
Сообщение от jopagames2 Посмотреть сообщение
ЗЫ: Надеюсь, речь шла не о доисторической ф-ции UPDATEEDITABLE(), а именно о новых св-вах контролов в 2009.
Подозреваю, что речь о страницах RTC, на форме классического клиента в свойство EDITABLE TextBox-a поставить переменную не получается...
На странице RTC для контрола поставить в свойство EDITABLE TextBox-a переменную уже получилось, страница компилируется, но при запуске получаю сообщение:
"The identifier 'EditControls' could not be found."
EditControls это boolean переменная...
В интернетах нашел решение этой проблемы))Вот
Старый 02.02.2011, 10:46   #8  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Подозреваю, что речь о страницах RTC
Да. Старую среду С/SIDE никто по-моему и не дорабатывал особо.
Старый 02.02.2011, 11:42   #9  
jopagames2 is offline
jopagames2
Участник
 
151 / 11 (1) +
Регистрация: 11.02.2010
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Подозреваю, что речь о страницах RTC
Да. Старую среду С/SIDE никто по-моему и не дорабатывал особо.
Честно говоря, когда я писал свой вопрос, то имел ввиду обычного "толстого клиента".

Хотя, действительно, этот шлак (я имею ввиду RTC) проглатывает имя переменной после изменения её св-ва IncludeInDataset.
Странно, что классика такого делать не умеет (точнее, не хочет, хотя это новое свойство булёвых переменных в обычном клиенте тоже вроде бы как есть и его можно было бы разумно использовать)

Всем спасибо.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:48.