Создание отчетов в Navision на базе временной таблицы

Обычно, когда вы создаете отчет, он работает на базе одной или нескольких таблиц.

А иногда у вас есть временная табличка (например, какая-нибудь сортировка или группировка) – и надо вывести эти данные в отчет. Проблема состоит в том, что временную табличку нельзя прямо указать как источник данных в DataItem’е отчета. Ему нужны только т.н. «реальные» таблицы из БД.

Решение – в использовании таблицы Integer (в русской версии – Целое) + написать код, который будет отрабатывать триггер OnAfterGetRecord.

OnPreDataItem()

FOR i := 1 TO 80 DO BEGIN
  tmpItem.INIT;
  tmpItem."No." := FORMAT(i);
  tmpItem.Description := 'Item description ' + FORMAT(i);
  tmpItem."Unit Price" := i * 1000;
  tmpItem.INSERT;
END;

tmpItem.RESET;
SETRANGE(Number,1,tmpItem.COUNT);
OnAfterGetRecord()

IF Number = 1 THEN
  tmpItem.FIND('-')
ELSE
  tmpItem.NEXT;

При создании макета отчета (расположения заголовка, тела отчета) используйте свой DataItem-Целое.

Однако, формочку со списком полей вы использовать не сможете – придется каждый раз прописывать название переменной, хранящей временную таблицы  вместе с именем поля (например, tmpItem.Description).

В результате мы получаем приятный глазу отчет:

Автор:

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

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

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