Визуальное представление подчиненных элементов в NAV 2009.

Издавна злодеи критиковали Navision за отсутствие элемента управления “дерево”. Ведь в папочки очень удобно распихивать элементы и тем самым имитировать порядок. Хотя в значительном числе случаев основная масса элементов оказывалась в папке Прочее, что напрочь лишало всю древовидную затею смысла.
В классическом клиенте в целях визуального отображения подчиненности элементов использовался фокус с отступами. В качестве примера можно посмотреть на форму 18 G/L Account List.

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.

Page Designer

Свойства IndentationColumnName и IndentationControls можно задавать для элементов типа Group и подтипа Repeater. Как известно подтип Repeater используется для вывода записей в виде списка.

Установите курсор во вторую строку (элемент Control1) и щелкните View > Properties, чтобы открыть окно 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.

IncludeInDataset

Вот как выглядит план счетов в ролеориентированном клиенте:

G/L Account List

Но вернемся в Page Designer. Невозможно пройти мимо любопытного свойства: ShowAsTree
Это свойство также используется для визуального отображения вложенности. Оно также как и свойство IndentationControls задается для элементов типа Group и подтипа Repeater, и также работает в паре со свойством IndentationColumnName.

Выглядеть в результате страница с планом счетом будет так:

G/L Account List

В контекстном меню (вызывается правой кнопкой мыши) появились новые пункты:

  • Expand All – развернуть все
  • Collapse All – свернуть все
  • Expand/Collapse – развернуть/свернуть

Очень симпатичненько.
Однако в классическом клиенте использовалось выделение жирным шрифтом. А как же ролеориентированный клиент, какие возможности по выделению данных он предоставляет.
В NAV 2009 SP1 у полей появились два новых свойства, которые как раз и должны решить вопрос с визуальным оформлением.
Это свойства:

  • Style (тип option, значения: None, Strong, Attention, Favorable, Unfavorable)
  • StyleExpr (тип Boolean, как и для свойств Visible и Editable в данном свойстве можно указать переменную и таким образом динамически управлять стилем).

Вот как выглядят стили в списочной форме (слева направо Strong, Attention, Favorable, Unfavorable):

Style: Strong, Attention, Favorable, Unfavorable

Как сообщают коллеги, в карточной форме стили применяются только в режиме редактирования. В режиме просмотра в карточке цвета не отображаются. Т.е.:

  • Strong действительно выглядит как Strong (жирный черный шрифт)
  • Attention выглядит словно стиль не применялся (обычный черный шрифт).
  • Favorable выглядит как Strong (жирный черный шрифт)
  • Unfavorable выглядит как Strong с курсивом (жирный черный шрифт с курсивом)

Вот как выглядят стили в карточной форме (сверху вниз Strong, Attention, Favorable, Unfavorable):

Style: Strong, Attention, Favorable, Unfavorable

Но вернемся к плану счетов (странице 18 G/L Account List).
Откройте окно свойств для поля No., установите следующие значения свойств:

  • Style = Strong
  • StyleExpr := “No.Emphasize”

Откройте окно свойств для поля Name, установите следующие значения свойств:

  • Style = Strong
  • StyleExpr := NameEmphasize

Сохраните и запустите страницу.

G/L Account List

К недостаткам стоит отнести отсутствие возможности использовать в одном поле разные стили, например в поле Income/Balance нельзя отображать значение Balanse Sheet как Favorable, а Income Statement как Unfavorable.

Метки:



Комментариев: 1

  1. apanko пишет:

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

Оставьте свой отзыв!