7. Шаблоны

Примеры шаблонов См. также статью.

Шаблон - это специальным образом подготовленный документ для вывода данных формы на печать. Шаблоны создаются в каком-либо текстовом редакторе, поддерживающий один из форматов: DOCX, DOCM, XML (MS Word), ODT, ODS, HTML. Это может быть Microsoft Word, OpenOffice Writer и т. д. Документ состоит из произвольного текста, таблиц, рисунков (документ может иметь любую структуру).

Пример шаблона

Хранение шаблонов

Файлы шаблонов хранятся в отдельной папке. По умолчанию это папка «templates», расположенная в папке программы. Вы можете изменить расположение папки шаблонов в настройках программы. Путь может быть абсолютный или относительный (т. е. папка может находится в папке программы). Открыть папку шаблонов можно из меню «Файл-Шаблоны-Папка шаблонов». Папка открывается в проводнике системы.

Привязка шаблонов

К форме может быть привязано один или несколько шаблонов. Привязка шаблонов осуществляется в дизайнере через свойство формы Шаблоны. Еще одним способом привязки шаблона к форме является стандартное действие для кнопки «Печать». Кроме того связь шаблонов и формы может быть настроена с помощью расширений.

Печать полей, управляющие теги

Поля формы, вычисляемые поля и надписи пишутся в квадратных скобках. В дальнейшем под словом «поле» будем подразумевать любой из названных компонентов. Пример записи полей:

[Дата], [Сотрудник|ФИО], [Сумма прописью]

Из примера видно, что обращение к полю объекта осуществляется так же, как в выражениях - через вертикальную черту. Перед именем поля может стоять префикс (символ «:» или «!»), который указывает к какой форме принадлежит поле (см. Префиксы в именах полей).

Управляющие теги указывают данные какой формы или запроса должны быть выведены на печать или выполняют иное действие. Управляющих тегов всего пять: form, grid, group, end, pivotgrid. Записываются они в фигурных скобках.

Тег form

Тег form предназначен для печати множества записей указанного источника данных. Источником данных может быть главная форма, подчиненная форма или запрос. Пишется тег следующим образом:

{form|Имя источника данных}
...
{end}

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

При печати важно, чтобы структура документа не была нарушена. Поэтому, на самом деле, началом печатаемой области будет не тег form, а начало абзаца документа. В свою очередь концом области будет не тег end, а конец абзаца. Например: Демонстрация тега form А вот, что получается при печати: Демонстрация тега form

Теги могут быть вложенными. Каждый тег form должен находится в своем абзаце. Несколько тегов form в одном абзаце не допускается. Пример:

{form|Закупка}
{form|Товары}...{end}{end}

Нельзя, чтобы один из тегов находился в ячейке таблицы, а другой вне ее. Чтобы не нарушить структуру документа, теги должны быть в одной ячейке. Пример неправильного использования:

{form|сотрудники}{end}

А так будет правильно:

{form|сотрудники} … {end}

Не пишите в одном абзаце поля из разных источников данных, т. к. это приведет к ошибкам (программа будет сообщать, что поле не найдено). Так будет неправильно:

... [дата] ... {form|товары} ... [наименование] ... [количество] ... {end} [сумма]

Чтобы напечатать данные другого источника данных, используйте префиксы в именах полей. Например, предыдущий пример можно записать так:

... {form|товары} ... [!дата]... [наименование] ... [количество] ... [!сумма]{end}

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

Тег grid

Тег grid, так же как и form, используется для печати множества записей источника данных. Отличие заключается в том, что grid применяется для печати данных в таблице документа. Пишется тег следующим образом:

{grid|имя источника данных}
{end}

Так схематично показана таблица документа, в ячейках которой пишутся теги grid и end. Теги определяют участок таблицы, который будет напечатан множество раз, равное количеству записей в источнике данных. Печать начинается с первой записи. Теги grid и end могут располагаться на одной строке. В этом случае повторяться будет только одна строка таблицы.

Рекомендуется указывать тег grid в первой колонке, а тег end в последней. Но это необязательно. Дело в том, что все равно будут напечатаны все ячейки, находящиеся на строках вместе с тегами grid и end. По другому просто и быть не может, потому что в противном случае структура документа нарушится и его невозможно будет открыть. Теги обязательно должны быть указаны в ячейках таблицы, а не вне ее, иначе структура документа будет нарушена.

Теги могут быть вложенными. Каждый тег grid должен находится в разных строках. Несколько тегов grid в одной строке не допускается. Пример:

{grid|Закупка}
{grid|Товары} …{end}{end}

Также допускается вложенная комбинация тегов form и grid:

{grid|Закупка} {form|Товары}…{end} {end}

Печать текущей записи главной формы

Если в шаблоне поля встречаются вне управляющих тегов form и grid, то программа считает, что данные относятся к текущей записи главной формы и печатается только одна текущая запись. Обратите внимание, что нельзя напечатать текущую запись подчиненной формы или запроса.

Префиксы в именах полей

Теги form и grid определяют данные какого источника будут напечатаны. Встретив поле в документе, программа будет искать его в указанном источнике. При печати данных подчиненных форм и запросов может возникнуть необходимость напечатать поля родительской формы или формы, на которой расположен запрос. Для этого перед именем поля пишется префикс - специальный символ, указывающий к какой форме относится поле. Чтобы указать, что поле принадлежит родительской форме, поставьте перед именем поля восклицательный знак. Двоеточие перед именем указывает, что поле находится в текущей форме. Двоеточие используется, когда печатаются данные запроса и среди них есть данные формы. Примеры полей:

[!Дата] [!Клиент|ФИО] [!Вычисляемое поле] [:Сумма] [:Вычисляемая надпись]

Печать изображений

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

Диалог вставки изображения в WordВставка изображения в шаблон

При печати программа может уменьшить изображения до размеров, указанных в свойстве Обработка при печати. Программа печатает изображения с сохранением пропорций. В результате одна из сторон изображения может быть меньше или больше «заглушки». Это зависит от того насколько отличаются пропорции изображения и «заглушки». При печати изображения сохраняются в одном из трех форматов: png, jpeg, tif. Если изображение имеет другой формат, то оно преобразуется в формат png. Изображения сохраняются внутри документа, кроме HTML-документов. В этом случае изображения сохраняются рядом с файлом в папке «images».

При печати изображений из запросов или отчетов настройки изображения (обработка при печати, способ хранения) берутся из первого источника. Для корректной печати изображений, способ хранения и папка хранения должны совпадать.

Группировка данных

Для группировки данных при печати используется тег group. Например:

{group|Группа услуг|Название}Группа: [Группа|Название]{end}

После group пишется название поля группировки без квадратных скобок. Это может быть поле формы или запроса, вычисляемое поле или надпись. Содержимое группы будет печататься всякий раз, когда изменяется значение поля группировки. Для корректного вывода данных на печать, данные должны сортироваться по полю группировки (сортировка по этому полю должна осуществляться в первую очередь).

Теги group используется внутри тегов form и grid. Допускается вложенная группировка. Для этого теги group должны идти друг за другом. Причем теги group должны быть в разных абзацах или разных строках таблицы. Пример:

{form|клиенты}{group|Страна|Название}Страна: [Страна|Название]{end}
{group|Буква}[Буква]{end}
[Имя], [Почта]{end}

Использование нескольких тегов group в одном абзаце или в одной строке таблицы недопустимо.

Теги group должны идти сразу за тегом form или grid. Все, что перед тегом group является содержимым группы и будет выведено на печать. На рисунке зеленым обведена печатаемая область группы первого уровня, красным - область группы второго уровня. Область группировки

Создание HTML шаблонов

Создание HTML-шаблонов имеет некоторые особенности. Кодировка файла должна быть в UTF-8. Если вы создаете шаблон вручную (например в блокноте), то необходимо помнить, что:

  • тег grid должен быть после тега tr, а тег end до тега /tr;
  • тег form должен быть после тега p, а тег end до тега /p;
  • рисунок-заглушка прописывается в теге img, имя поля изображения должно идти перед тегом.

Если в шаблоне используются скрипты, то возникнет конфликт с программой, т. к. в javascript используются символы [] и {}. Чтобы этого избежать, печатайте код javascript в вычисляемых полях.

HTML-шаблоны в сочетании с скриптами и веб-сервисами позволяют рисовать графики и диаграммы.

Печать сводных таблиц

Печать сводных таблиц поддерживается только в шаблонах HTML. Просто поместите тег pivotgrid в нужном месте. Пример:

{pivotgrid|dxPivotGrid1}

Через вертикальную черту пишется имя компонента сводной таблицы. Имя компонента можно увидеть в нижней части окна дизайнера. Таблица будет напечатана почти в том же виде, что и на экране. Отличаться может цвет линий заголовков, он одинаковый для всей таблицы. Перенос текста в ячейках будет работать независимо от настроек. В некоторых случаях, браузер может изменить ширину ячеек автоматически. Если для поля задана нулевая ширина, то в шаблоне все равно ячейки будут видны - ширина будет несколько пикселей.

Ошибки при печати

В процессе печати документа возможны ошибки: ошибки в выражениях, опечатки и т. п. Если в процессе печати возникли ошибки, программа открывает окно с описанием ошибок. Возможные ошибки:

Ошибка в вычисляемом поле. Допущена ошибка в выражении вычисляемого поля.

Поле не найдено. Поле формы или вычисляемое поле не найдено. Проверьте правильность имени поля.

Тег end без начального тега. В шаблоне присутствует тег end, а тег form или тег grid отсутствует.

Форма не найдена. В теге form или grid указано имя несуществующего источника данных.

Неизвестный тег. Программа знает только 5 тегов: form, grid, end, group, pivotgrid.

Из-за неправильного использования тегов документ и вовсе может не открыться в редакторе из-за нарушения структуры документа.

Мастер шаблонов

Окно мастера шаблонов Мастер шаблонов упрощает создание шаблонов. Открыть окно мастера шаблонов можно из меню «Файл-Шаблоны-Мастер шаблонов».

Мастер шаблонов показывает источники данных (таблицы, запросы) выбранной формы и их поля, в том числе вычисляемые поля. Вы можете перетаскивать поля из мастера шаблонов в текстовый редактор при помощи мыши. Также доступно контекстное меню с командами копирования готовых тегов в буфер обмена. При перетаскивании программа автоматически определяет что перетаскивается: поле, источник данных или сводная таблица. Соответственно будет вставлено поле, тег grid или тег pivotgrid.

На панели инструментов доступны следующие команды:

  1. Установить текущую форму - мастер шаблонов определяет какая закладка в настоящий момент активна в режиме пользователя или какая форма выбрана в режиме дизайнера и устанавливает ее в качестве текущей.
  2. Открыть папку шаблонов - открывает папку шаблонов в проводнике. Аналогична команде меню «Файл-Шаблоны-Папка шаблонов».
  3. Открыть шаблон - мастер шаблонов открывает выбранный файл шаблона в текстовом редакторе и устанавливает связанную с шаблоном форму в качестве текущей.