Как создать MatrixBox в Navision

Пример 1. Клиенты и товары

Первая форма (Form 50000) покажет нам, как создать MatrixBox с нуля (матрица покажет объемы проданных товаров (и каких именно) по клиентам за определенный период.

Шаги по созданию матрицы описаны и в этой заметке, и в самой форме в секции Documentation.

Просмотр/редактирование 2-мерного массива

Вторая форма (50001) – пример использования матрицы для просмотра и изменений двумерного массива. В секции Documentation идет описание, куда какой код вставить, а также список измененных свойств.

Процесс создания матричной формы по шагам

Глобальные функции

  • функция GetData (простой создайте пустую функцию с типом возвращаемого значения Text 250);
  • Функция MakeLabel (просто создайте пустую функцию с типом, который вам нужен, обычно Text 250).

Форма

Свойство “Source Table” = Customer;

Добавьте MatrixBox, его свойства:

  • «MatrixSourceTable» =Item
  • «HorzGlue»,»VertGlue» (=Both)
  • «Editable» (=No)
  • «Name» (=matMatrix)

Добавьте поля в левой части MatrixBox (=»No.»,Name).

Добавьте одно текстовое поле в правой части MatrixBox:

  • свойство «SourceExpr» (=decAmount)

Добавьте текстовое поле в качестве метки предыдущего:

  • Свойство «SourceExpr» (=MakeLabel());
  • Выделите метку этого поля, сделайте ее шире, чтобы вмещались 2 строки;
  • Выделите и сдвиньте ее влево, так чтобы было видно больше, чем один столбец;
  • «OnFormat» в ячейке матрица

Теперь напишите код к функциям «MakeLabel» and «GetData»

Напишите триггер в поле «TexDateFilter» : OnAfterValidate

Напишите триггер в поле «TexItemFilter» : OnAfterValidate

Небольшая хитрость для того, чтобы не пользоваться данным фильтром. Поместите курсор на метку столбца матрицы (не на строку), нажмите Ctrl+F7. Теперь вы сможете накладывать фильтры на таблицу, которая используется для определения столбцов.

В случае, если матрицу необходимо редактировать :

  • MatrixBox: Свойство : «Editable» (=Yes или оставьте его пустым);
  • MatrixBox: «No.»,»Name» : Property : «Editable» (=No);
  • «Text Box» DecAmount : «OnValidate» : Проверка на допустимость значения;
  • «OnAfterValidate» : Запись данных в базу (используйте «No.» (=rec.»No.») и CurrForm.matMatrix.MatrixRec.»No.» для определения нужной записи).

Пример для скачивания доступен здесь.

Примечание – все формы сделаны в Navision 4.0SP1.

Оригинал статьи называется «How To create a Matrix-form in Navision?«

Автор:

В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.

Количество статей, опубликованных автором: 86.

Добавить комментарий