ПЕЧАТНЫЕ ФОРМЫ

Печатная форма - это шаблон, на основе которого происходит распечатка списка. При распечатке списка появляется меню, в котором перечислены варианты печати. Каждому варианту соответствует одна форма (если меню не появляется, то для списка определена только одна форма). О том, как добавлять свои формы описано в теме "Написание собственных форм".

Программа печати списка определяет ряд переменных (См. тему

"Переменные списка в печатных формах"), а в форме задается, в каком месте и как они должны печататься. Каждая форма состоит из нескольких разделов, которые описаны в теме "Структура печатных форм".

Различают разделы двух видов:

1) разделы описания переменных (FORMAT, EXPRESSION, DOUBLE)

2) разделы описания вывода переменных (все остальные)

В каждом из разделов можно писать строки примечаний, которые должны начинаться с символа '*'. Кроме того, в любой строке, все, что стоит после символов '&&' игнорируется.

РАЗДЕЛЫ ОПИСАНИЯ ПЕРЕМЕННЫХ

В этих разделах указывается информация о выводимых переменных. Существует ряд переменных, которые определены при печати любой формы. Список этих переменных приведен в разделе "Предопределенные переменные печатных форм". Обычно имена переменных данного списка начинаются с символа '&'.

РАЗДЕЛЫ ОПИСАНИЯ ВЫВОДА ПЕРЕМЕННЫХ

В этих разделах указывается информация о том, как выводить переменные. По умолчанию под переменную отводится место длинной в ее имя. Дополнительное место задается с помощью специальных символов после имени переменной:

для всех переменных:

. - продолжить вывод переменной еще на один символ (две точки -

два символа, и т.д.);

для численных переменных

, - поместить в данной позиции десятичную точку (по умолчанию

предполагается, что число целое);

для строковых переменных

! - выводить текстовую переменную до исчерпания текста,

если переменная встречается посреди строки, то остаток

строки продолжится непосредственно после завершения данной

переменной, т.е. строка раздвинется или "схлопнется";

? - выводить текстовую переменную в прямоугольной области (от

символа "&" до символа "?" и вниз, вниз ...);

@<A..Z> - поместить в переменную &<A..Z> остаток выводимого

текста.

Иногда в имени переменной можно задать формат ее вывода. Так, если переменная начинается с символа '$', то предполагается, что в ней хранится число, которое по смыслу является денежной суммой. В этом случае точность вывода (с/без копеек) зависит от установки общих параметров системы. Аналогично, префикс "^" предполагает вывод количества, '~' - вывод цены.

В каждом из разделов, кроме EXPRESSION, DOUBLE, FORMAT, можно использовать условные операторы вида:

@if <условие>

<строка>

@elseif <условие>

<строка>

@else

<строка>

@endif

<условие> создается на основе определенных при печати формы переменных, операторов и встроенных функций FoxPro, а также предоставляемых разработчиками функций. Выводимый текст будет зависеть от того, какое из условий будет выполняться. Условие проверяется в момент вывода соответствующей части текcта.

Если оператор начинается с символа '#', то условие будет определяться в момент загрузки формы. Например, язык вывода формы не меняется от строки к строке, поэтому условие 'if UKR' обычно стоит с символом '#'. Такие условия уменьшают объем обрабатываемых строк формы и ускоряют вывод.

ПРЕДОПРЕДЕЛЕННЫЕ ПЕРЕМЕННЫЕ В ПЕЧАТНЫХ ФОРМАХ

Существует ряд переменных, которые определены при печати любой формы:

&D - текущая дата,

&T - текущее время,

&P - номер текущей страницы,

&L - номер текущей строки таблицы,

&Ekz - номер экземпляра

&OWNER - имя текущей организации,

&OWNER_COD - код ОКПО.

Кроме того, в условных операторах внутри форм и в разделе EXPRESSION могут использоваться следующие переменные:

UKR - текущий язык системы (.T./.F.)

ПЕРЕМЕННЫЕ ПОЛЬЗОВАТЕЛЯ В ПЕЧАТНЫХ ФОРМАХ

Вы можете задать ряд переменных, которые будут определены при печати любой формы. Для этого существует режим "Переменные пользователя" в подсистеме "Администратор". При входе в этот режим

Вы попадаете в список, в котором можно задать имя и значение переменной. Существует ряд предопределенных переменных, для которых

Вы можете менять только их значения. Эти переменные выделены цветом на экране.

НАПИСАНИЕ СОБСТВЕННЫХ ФОРМ

При печати списка во временном каталоге той системы, из которой производится печать, создается файл с расширением .frm (форма). Имя этого файла состоит из шаблона и номера формы (например, price1).

Для того, чтобы эта форма появлялась в меню выбора вариантов печати списка, созданный файл необходимо перенести в подкаталог D_FRM. Номер формы можно менять в диапазоне от 1 до 20, при этом, если существует стандартная форма с таким номером, то новая форма будет появляться

ВМЕСТО нее, иначе новая форма будет добавлена в меню выбора форм. После этого Вы можете изменять форму и быть увереным, что вносимые изменения появятся при печати.

СТРУКТУРА ПЕЧАТНЫХ ФОРМ

* <Название формы>

* Пример:

* СПРАВОЧНИК

.HEADER

* Раздел, строки которого печатаются в начале каждой страницы.

* Пример:

&D...... СТРАНИЦА &P.

.PREFIX

* Раздел, строки которого печатаются в начале всего документа (на

* первой странице).

* Пример:

СПРАВОЧНИК

.TITLE

* Шапка таблицы (печатается на каждой странице)

* Пример:

-----------T-------------------------------------------------------¬

¦ НОМЕР ¦ НАИМЕНОВАНИЕ ¦

+----------+-------------------------------------------------------+

.LINE

* Строки таблицы

* Пример: Строки с номерами, кратными 100, пропечатываем дважды

@IF &L%100=0

¦&N........¦&TN...................................................?¦

@ELSE

¦&L........¦&Txt..................................................?¦

@ENDIF

.SEPARATOR

* Разделитель строк таблицы

* Пример:

+----------+-------------------------------------------------------+

.BORDER

* Нижняя часть таблицы (печатается на каждой странице)

* Пример: L----------+--------------------------------------------------------

.SUFFIX

* Раздел, строки которого печатаются в конце всего документа

* (на последней странице).

* Пример:

ИТОГО НАИМЕНОВАНИЙ: &L.......

.FOOTER

* Раздел, строки которого печатаются в конце каждой страницы.

* Пример:

&OWNER........................................................@A

&A.................................................................?

&OWNER_COD!

.FORMAT

* Раздел описания форматов вывода переменных.

* Формат переменных задается последовательностью строк вида:

* <переменная>=<формат>

* где <формат> - записанное по стандарту PICTURE (FoxPro) выражение.

* Кроме того, формат переменных может задаваться при выводе

* (См. "Разделы описания вывода переменных").

* Пример:

&N = @Z 99999

.EXPRESSION

* Раздел создания переменных.

* Новые переменные создаются на основе определенных при печати формы

* переменных, операторов и встроенных функций FoxPro, а также

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

* Переменные задаются последовательностью строк вида:

* <переменная>=<выражение>

* Созданную в форме переменную можно использовать в любом ее разделе.

* Пример:

&N = &L

&TN = &Txt

.DOUBLE

* Раздел описания переменных, которые выделяются двойной пропечаткой.

* Переменные задаются последовательностью строк вида:

* <переменная>{[,<переменная>]}

* Пример:

&N, &TN