Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Цитата:
Сообщение от mazzy
а для каких задач может использоваться данный итератор?
Собственно, большинство решаемых задач описаны в этой ветке: - какие-то универсальные вещи, наподобие кнопки "увеличить точность отображения" в настройке форм (SysSetupForm) или уже обсуждавшаяся рихтовка свойств grid'ов различных форм;
- мелкая рихтовка вида контролов, которые входят в группы с AutoDataGroup = Yes (очень уж мне нравится это свойство, неохота от него отказываться из-за ерунды);
- более затейливые сценарии, когда, к примеру, "нужно сделать форму, доступную только на чтение", при том что у потенциального пользователя есть доступ к ключам контроля доступа с уровнем выше, чем чтение - в этом случае при запуске формы с определенным параметром помимо установки свойств datasource'ов еще можно пробежаться по всем кнопкам и те, у которых NeededAccessLevel больше View (т.е. действия которых могут изменять данные на форме), - скрыть. Можно возразить, что надо такие вещи решать настройками прав доступа, но, пардон, UAC в виндах решает примерно те же задачи: хочешь - работай под администратором, имея полные права на все, но по умолчанию в действиях будешь ограничен. Конечно, такой подход требует корректного выставления NeededAccessLevel на пунктах меню, но при "традиционной" настройке прав доступа это требование не менее актуально.
- сценарии, когда одна форма каких-нить журналов используется для ндцати (в моем случае - 10-и) немного отличающихся типов журналов, при этом одни и те же поля журналов для тех или иных типов могут иметь несколько отличающийся смысл, и пользователи хотят видеть там разные метки. В этом случае классы-наследники базового класса управления формой могут переопределить метод, возвращающий "нестандартную" метку для того или иного поля в строках журнала, а базовый класс дергает итератор, проходится по всем контролам, связанным с datasource'ом строк журнала, вызывает этот метод, возвращающий новую метку и, если возвращенное значение метки для поля, к которому привязан контрол, не пустое, устанавливает для контрола новую метку.
В общем, я лично с помощью итератора решаю в основном те задачи, которые при "традиционном" подходе требовали бы работы с каждым из заранее известного множества контролов в каждой из заранее известного множества форм, при том что эти множества на момент разработки могут быть еще неизвестны. "Традиционный" подход в таких случаях требует, как правило, слишком большого объема ручной работы, отказа от использования "автогрупп" контролов на основе табличных групп полей, внесения избыточных модификаций в стандартные формы (как с теми же гридами в AX 2009), плюс ко всему он еще и удорожает сопровождение сделанных модификаций.
|