закрыть
Создание шаблона
 

Файл-шаблон - это обычный файл формата RTF, но со встроенными управляющими блоками. Эти управляющие блоки заключены в квадратные скобки. Управляющие блоки делятся на 2 вида:

Не печатаемые управляющие блоки

Управляющие блоки предназначены для того, чтобы файл отчета "понял" откуда собственно следует брать данные и как их группировать.

Управляющие блоки обязательны должны быть парными. Т.е. должен быть открывающий управляющий блок и закрывающий управляющий блок. Открывающий управляющий блок начинается с символа "меньше" (<), а закрывающий управляющий блок должен завершаться символом "больше" (>). Для удобства распознования, рекомендуется распологать управляющие блоки в отдельных строках отчета. Т.е. в общем случае это выглядит так:

Тело отчета
[<НаименованиеБлока] - открытие управляющего блока
Тело отчета
[НаименованиеБлока>] - закрытие управляющего блока
Тело отчета

Всего предусмотрено 3 типа управляющих блоков:

  • Имя файла DBF из которого собственно следует брать информацию
  • Имя поля таблицы DBF, по содержимому которого следует группировать данные в отчете
  • Специальное ключевое слово Detal, являющееся признаком того, что далее следует организовать перебор записей

Таким образом, в самом общем виде отчет выглядит следующим образом

      Текст до того, как информация будет взята из какой-либо таблицы (заголовок отчета)
[ <Table1.dbf]
      Заголовочная часть при открытии таблицы Table1.dbf
[<FieldGroup]
      Заголовочная часть при открытии группы по полю FieldGroup таблицы Table1.dbf
[<FldSubGrp]
      Заголовочная часть при открытии группы по полю FldSubGrp таблицы Table1.dbf
[<Detal]
      собственно отображение содержимого таблицы Table1.dbf
[Detal>]
      Заключительная часть при закрытии группы по полю FldSubGrp таблицы Table1.dbf. Отображение итогов по данной группе
[FldSubGrp>]
      Заключительная часть при закрытии группы по полю FieldGroup таблицы Table1.dbf. Отображение итогов по данной группе
[FieldGroup>]
      Заключительная часть при закрытии таблицы Table1.dbf. Отображение итогов по таблице Table1.dbf
[Table1.dbf>]
      Текст после того, как информация будет взята из таблицы Table1.dbf, но до того, как информация будет взята из таблицы Table2.dbf
[<Table2.dbf]
      Заголовочная часть при открытии таблицы Table2.dbf
      ...
      Заключительная часть при закрытии таблицы Table2.dbf. Отображение итогов по таблице Table2.dbf
[Table2.dbf>]
      Текст после того, как информация будет взята из какой-либо таблицы (подвал отчета)

Важные замечания

  • Недопустимо делать "пересечение" блоков - т.е. и "открытие" и "закрытие" блока должны происходить только внутри таких же "скобок" другого блока. Блоки обязательно должны быть вложены друг в друга как матрешки.
  • Недопустимо открыть внутри уже открытого табличного блока другой табличный блок - т.е. внутри информации из одной таблицы нельзя вывести информацию из другой. Только по очереди.
  • В блоках описания отчета может отсутствовать блок детализации ("Detal"). В этом случае отчет все равно пройдет по всем записям указанной таблицы и распечатает исключительно заключительную часть при закрытии таблицы. Т.е. в нем можно указать итоговую часть отчета.
  • Если блок отчета содержит блоки группировок, то блок детализации ("Detal") обязательно должен присутствовать.

Управляющие блоки рекомендуется распологать на отдельных строках исключительно для удобства. Однако в случае необходимости их можно расположить и в одну строку, например:

[<Table1.dbf] Итого по таблице Table1.dbf [Table1.dbf>] дополнительный текст [<Table2.dbf] Итого по таблице Table2.dbf [Table2.dbf>]


Печатаемые блоки-выражения

Печатаемые блоки-выражения могут использоваться только внутри блока открытой таблицы. Вне блока таблицы они не имеют смысла. Печатаемые блоки также заключены в квадратные скобки как и не печатаемые управляющие блоки, но они не парные. Печатаемые блоки могут состоять из 3 частей:

При этом Формат отображения обязательно предваряется символом процента (%), а завершается двоеточием, а Аггрегатная функция также обязательно завершается двоеточием. Таким образом, в самом общем виде печатаемый блок имеет следующий формат:

[%Формат отображения:Аггрегатная функция:Имя поля или выражение]

Здесь обязательным является только Имя поля или выражение, а Формат отображения и Аггрегатная функция можно и не указывать. Они используются только по мере необходимости.

Если не задан Формат отображения, то используется некий формат по-умолчанию

Аггрегатная функция используются для подсчета итогов. Т.е. это функции типа "подсчитать сумму по полю", "подсчитать количество записей". Следует иметь в виду, что в результате использования аггрегатных функций итоговое значение принимает тип Double, т.е. как правило необходимо использовать Формат отображения в паре с Аггрегатными функциями

Выражение, которое может использоваться вместо имени поля обязательно должно выдавать числовой результат. С другими типами выражений данный генератор не работает. Это не относится собственно к полям таблицы. Поля могут иметь любой допустимый тип данных. Кроме того, в качестве имен полей или выражений могут выступать зарезервированные слова