Расширенный формат Назад В начало Вперед

Расширенный формат в графических формах не используется.

Расширенный формат предназначен для установки некоторых параметров вывода поля в отчет.

Область действия расширенного формата ограничивается формой, в которой он задан.

Расширенный формат поля перекрывает формат, заданный в шаблоне поля.

<расширенный формат> ::= { " <ключ> : [<дополнение>] " }

Расширенный формат представляет собой произвольную комбинацию ключей с дополнениями (для некоторых ключей дополнение может отсутствовать). Между ключом и дополнением ставится двоеточие.

Любой ключ может отсутствовать. Последовательность ключей при описании расширенного формата не имеет значения.

Ключи разделяются запятой. Каждый элемент конструкции (ключ плюс дополнение) заключается в кавычки.

<ключ> ::= b | s | p | t | d | m | draw | sum | avg | max | min

Ключ в (сокращение от Blank) является директивой для заполнения пробелами шаблона поля при нулевом значении поля. Ключ в не имеет дополнения.

Ключ s (сокращение от Skip page) является директивой для перехода на новую страницу отчета в месте расположения шаблона поля, при этом шаблон поля остается незаполненным. Поле должно иметь имя 'True', заключенное в одинарные кавычки.

При этом, если в строке с шаблоном поля 'True' присутствуют другие элементы простой строки, то:

Ключ используется для перехода к новой странице до окончания предыдущей.

Ключ s не имеет дополнения.

Ключ p (или position) используется для корректировки положения поля в шаблоне, если поле занимает меньше позиций, чем ему отведено. Ключ p имеет три возможных дополнения:

<ключ t> ::= t : ( l | r | a | - )

Ключ t (или trim) используется для корректировки правил удаления пробелов. Если поле имеет пробелы до или после выводимого значения, они по умолчанию удаляются.

Ключ t дает возможность пробелы удалять, не удалять или удалять с одной стороны. Ключ t имеет четыре возможных дополнения:

Ключ d (или delete) обрезает поле, не уместившееся в шаблон. Действует для всех типов полей. Ключ d имеет два возможных дополнения:

Ключ m представляет собой формат вывода даты в отчет.

Ключ m имеет дополнение следующего вида:

<дополнение ключа M> ::= d{d}/m{m}/y{y}

День, месяц, год разделяются символом "/".

Количество символов, отведенных дню, месяцу, году, не ограничено.

Количество символов, отведенных полю даты в шаблоне поля, должно быть не меньше количества символов даты в расширенном формате.

Ключ draw позволяет подключить к описываемому полю графический файл. При исполнении отчета в шаблон данного поля будет выведен рисунок из подключенного файла. При необходимости высота строки таблицы Excel будет автоматически увеличена.

Ключ draw имеет дополнение следующего вида:

<дополнение ключа DRAW> ::= <имя графического файла>
<имя графического файла> ::= <строка> | <идентификатор>

Имя графического файла задается строкой или идентификатором. Имя файла может содержать путь на файл. Если путь не указан, то файл ищется в одном каталоге с исполняемой формой.

Ключ draw используется в формах, созданных в электронной таблице Excel.

Ключи sum, avg, max, min интерпретирует описываемое поле как агрегатное, что позволяет в шаблон данного поля выводить суммарное, среднее, максимальное или минимальное значение данного поля в цикле.

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

Перед первым входом в цикл значение агрегатного поля обнуляется.

Пример использования агрегатного поля для управляемых форм.

!  form := getForm('t', 't.out');
!  if form=nil then
!	exit;
!  for i:=1 to 10 do begin
!	form^.writeInt(i);
!  end;
!  form^.putEventById(feBreak,1);
!  GetReports(form);
.form t
.fields
  x
.endfields
.{
  x=^
.}
.endform
.linkform t1 prototype is t
.fields
  x
  x:'sum'
  x:'avg'
  x:'max'
  x:'min'
.endfields
Пример использования агрегатных полей
-------------------------------------
.{grou
  x=^
.}
		Всего   Среднее Максимум		Минимум
		 ^		 ^				^			^
.endform

В результате исполнения данной формы Вы получите следующий отчет:

Пример использования агрегатных полей
-------------------------------------
  x=1
  x=2
  x=3
  x=4
  x=5
  x=6
  x=7
  x=8
  x=9
  x=10
		Всего   Среднее Максимум		Минимум
		 55		5,5				10			 1

Пример использования агрегатного поля для автономных форм

.form 'ex3_0_1'
.ard
.var
  x:integer
.endvar
.table blank
.fields
x
  x:'sum'
  x:'avg'
  x:'max'
  x:'min'.grou' // в данном случае имя цикла можно не указывать
.endfields
 Пример использования агрегатных полей
--------------------------------------
.{while x<5;grou
.begin
  x:=x+1;
end.
  x = ^
.}
		всего   среднее максимум		минимум
		 ^		 ^				^			^
.endform

При исполнении данной автономной формы мы получим следующий отчет:

Пример использования агрегатных полей
-------------------------------------
  x=1
  x=2
  x=3
  x=4
  x=5
		Всего   Среднее Максимум		Минимум
		 15		3				 5			 1