NAV2009: Страницы с фиксированной разметкой
В Dynamics NAV 2009 пользователи получили новые возможности по управлению интерфейсом. Теперь они могут гибко настраивать свое рабочее окружение, которое включает меню, ролевые центры, а также индивидуальную настройку списков и карточек. К сожалению, за все нужно платить.
В ролеориентированном клиенте используется новый объект Страница (Page), который используется вместо объекта Форма (Form). Страницы, в отличие от форм формируются системой динамически, в то время как для форм разработчик рисовал разметку вручную, указывая местоположение каждого элемента.
Начнем рассмотрение с наиболее простых форм – форм с разметкой имитирующей таблицу.
Формы с псевдо-табличной разметкой.
Элементы управления на таких формах расположены таким образом, что форма напоминает таблицу со столбцами и строками. Примером может быть закладка Sales формы 151 Customer Statistics. В этом случае размещение каждой текстовой зоны очень важно (причем как по горизонтали, так и по вертикали), иначе понять, что обозначает содержащееся в текстовой зоне значение, будет невозможно.
Посмотрим теперь на соответствующую страницу – это страница 151 (Microsoft рекомендует при создании страниц использовать тот же идентификатор, что и у формы). Откроем ее из Object Designer.
Первый элемент с типом Group и подтипом Content Area – это главный контейнер, в нем находятся два элемента c типом Group и подтипом Group – это закладки General и Sales. Элементы на закладке Generals отображаются динамически, поэтому не будем заострять на них внимание, т.к. ничего нового нет в них подразумевается. Вместо этого посмотрим на элементы закладки Sales.
Первым элементом в группе является элемент с типом Group и подтипом FixedLayout. Уровнем ниже идут элементы типа Group и подтипа Group – они обозначают столбцы, в свойстве Caption этих элементов указываются названия столбцов. В качестве названий строк используются Caption элементов, входящих в первую группу.
Любопытный факт. Если в первую группу входит меньше элементов, чем в последующие, то у строки, для которой нет элемента первой группы (в конце) не будет названия.
В упрощенном виде окно Page Designer должно было выглядеть так:
Name | Caption | Type | SubType | SourceExpr |
Control1 | Control1 | Container | ContentArea | |
Control2 | General | Group | Group | |
Balance (LCY) | Balance (LCY) | Field | “Balance (LCY)” | |
… | ||||
Control5 | Sales | Group | Group | |
Control6 | Control6 | Group | FixedLayout | |
Control7 | This Period | Group | Group | |
Control8 | Sales (LCY) | Field | CustSalesLCY[1] | |
… | ||||
Control10 | This Year | Group | Group | |
Control11 | Control11 | Field | CustSalesLCY[2] | |
… |
Однако почему-то в Page Designer есть еще элементы:
-
CustDateName - Field - CustDateName[1] -
Control120 - Field - Text001.
Разберемся в их предназначении. Дело в том, что изначально в форме 151 в качестве заголовка первого столбца использовалась переменная, которая отображала на форме название текущего периода, например, Январь.
Было:
January | This year | … | |
Sales (LCY) | 100 | 500 | … |
… |
Но элемент с типом Group не может содержать выражение (свойство SourceExpr должно быть пусто), поэтому строку заголовка разделили на две.
Стало:
Таким образом, первый элемент с типом Group и подтипом Group показывает название столбца – This Period, а первый элемент в группе показывает переменную, содержащую название периода (CustDateName[1]), имитируя, таким образом, название состоящее из двух строк.
А чтобы показатели, размещенные во втором столбце, не сместились на одну строку вверх, первый элемент второго столбца показывает текстовую строку из текстовой переменной text001. В этой текстовой переменной содержится текст PLACEHOLDER. Но данный текст не отображается на экране т.к. у элемента в свойстве Visible установлено значение FALSE (т.е. он не видим, а только занимает место).
Вот таким образом создаются формы с фиксированной разметкой.
Примечание.
Так как для совместимости с предыдущими версиями в Microsoft Dynamics NAV 2009 поддерживаются оба клиента: классический (как в Dynamics NAV 5) и ролеориентированный, то разработчикам требуется поддерживать оба представления сущности – в виде формы и в виде страницы. Чтобы как-то сократить объем работ Microsoft рекомендует вначале создавать форму, а потом с помощью специального инструментария преобразовывать ее в страницу. Поэтому если с помощью Object Designer открыть форму 151, то можно увидеть «лишние» текстовые зоны, основное предназначение которых – упростить процедуру трансформации формы в страницу.
Метки: Андрей Панько
12 Февраль 2009 в 0:10
Еще статьи про формы/страницы в Dynamics NAV 2009. Рассмотрены вопросы использования матричных форм.
Альтернативная реализация матричных форм в Microsoft Dynamics NAV 2009
http://navision.mazzy.ru/lib/nav2009-matrix-form-tobe/
Как реализованы матричные формы в Microsoft Dynamics NAV 2009?
http://navision.mazzy.ru/lib/nav2009-matrix-form/