Файл-шаблон - это обычный файл формата 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, т.е. как правило необходимо использовать Формат отображения в паре с Аггрегатными функциями
Выражение, которое может использоваться вместо имени поля обязательно должно выдавать числовой результат. С другими типами выражений данный генератор не работает. Это не относится собственно к полям таблицы. Поля могут иметь любой допустимый тип данных. Кроме того, в качестве имен полей или выражений могут выступать зарезервированные слова
|