Как создать 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.