Визуальное представление подчиненных элементов в NAV 2009.
Издавна злодеи критиковали Navision за отсутствие элемента управления “дерево”. Ведь в папочки очень удобно распихивать элементы и тем самым имитировать порядок. Хотя в значительном числе случаев основная масса элементов оказывалась в папке Прочее, что напрочь лишало всю древовидную затею смысла.
В классическом клиенте в целях визуального отображения подчиненности элементов использовался фокус с отступами. В качестве примера можно посмотреть на форму 18 G/L Account List.
Достигается такой эффект с помощью функции UPDATEINDENT, расположенной в триггере onFormat столбца Name
Name - OnFormat(VAR Text : Text[1024];) CurrForm.Name.UPDATEINDENT := Indentation * 220;
В ролеориентированном клиенте такого же эффекта можно добиться куда проще. Для этого используется свойства IndentationColumnName и IndentationControls.
Рассмотрим страницу 18 G/L Account List.
В классическом клиенте щелкните Tools>Object Deigner, чтобы открыть Object Designer.
В Object Designer щелкните кнопку Page, чтобы ввести на экран список страниц.
Найдите страницу с ID = 18 и щелкните кнопку Design, чтобы открыть Page Designer.
Свойства IndentationColumnName и IndentationControls можно задавать для элементов типа Group и подтипа Repeater. Как известно подтип Repeater используется для вывода записей в виде списка.
Установите курсор во вторую строку (элемент Control1) и щелкните View > Properties, чтобы открыть окно Properties.
В свойстве IndentationControls указано какие элементы (входящие в группу Control1) должны отображаться со сдвигом. Заполнение данного свойства производится с помощью кнопки AssistEdit, причем в это свойство можно включить несколько полей.
Свойство IndentationControls работает в паре со свойством IndentationColumnName. IndentationControls говорит какие поля должны иметь отступ, а в свойстве IndentationColumnName задается база для расчета отступа.
Для страницы 18 G/L Account List, которая базируется на таблице 15 G/L Account в данном свойстве можно было бы указать имя поля Indentation.
Однако по какой-то причине разработчики решили иначе, и вместо этого использовали переменную NameIndent.
В триггере onAfterGetRecord происходит присвоение переменной NameIndent значения поля Indentation. Причина довольно банальна: в свойстве IndentationColumnName группы можно включать только поля, входящие в группу. Поле Indention включать в группу разработчики не стали – пользователь не должен иметь возможности вывести данное поле на экран, ни к чему оно ему.
Поэтому вместо включения поля Indention в группу Contorl1 используется отдельная переменная. Обратите внимание, что для переменной включено свойство IncludeInDataset.
Вот как выглядит план счетов в ролеориентированном клиенте:
Но вернемся в Page Designer. Невозможно пройти мимо любопытного свойства: ShowAsTree
Это свойство также используется для визуального отображения вложенности. Оно также как и свойство IndentationControls задается для элементов типа Group и подтипа Repeater, и также работает в паре со свойством IndentationColumnName.
Выглядеть в результате страница с планом счетом будет так:
В контекстном меню (вызывается правой кнопкой мыши) появились новые пункты:
- Expand All – развернуть все
- Collapse All – свернуть все
- Expand/Collapse – развернуть/свернуть
Очень симпатичненько.
Однако в классическом клиенте использовалось выделение жирным шрифтом. А как же ролеориентированный клиент, какие возможности по выделению данных он предоставляет.
В NAV 2009 SP1 у полей появились два новых свойства, которые как раз и должны решить вопрос с визуальным оформлением.
Это свойства:
- Style (тип option, значения: None, Strong, Attention, Favorable, Unfavorable)
- StyleExpr (тип Boolean, как и для свойств Visible и Editable в данном свойстве можно указать переменную и таким образом динамически управлять стилем).
Вот как выглядят стили в списочной форме (слева направо Strong, Attention, Favorable, Unfavorable):
Как сообщают коллеги, в карточной форме стили применяются только в режиме редактирования. В режиме просмотра в карточке цвета не отображаются. Т.е.:
- Strong действительно выглядит как Strong (жирный черный шрифт)
- Attention выглядит словно стиль не применялся (обычный черный шрифт).
- Favorable выглядит как Strong (жирный черный шрифт)
- Unfavorable выглядит как Strong с курсивом (жирный черный шрифт с курсивом)
Вот как выглядят стили в карточной форме (сверху вниз Strong, Attention, Favorable, Unfavorable):
Но вернемся к плану счетов (странице 18 G/L Account List).
Откройте окно свойств для поля No., установите следующие значения свойств:
- Style = Strong
- StyleExpr := “No.Emphasize”
Откройте окно свойств для поля Name, установите следующие значения свойств:
- Style = Strong
- StyleExpr := NameEmphasize
Сохраните и запустите страницу.
К недостаткам стоит отнести отсутствие возможности использовать в одном поле разные стили, например в поле Income/Balance нельзя отображать значение Balanse Sheet как Favorable, а Income Statement как Unfavorable.
Метки: Андрей Панько









19 Апрель 2010 в 19:50
Хм. Оказалось что древовидный список есть в стандарте - страница Chart of Accounts Overview (634)