В системе "Дебет Плюс" вся информация подается на экран в виде списков. Формат вывода каждого из этих списков предопределен системой и в общем случае не может быть изменен. Однако, по просьбам многочисленных пользователей "Дебет Плюс", это ограничение было послаблено для отдельных видов списков, например, для "Справочника номенклатуры" и "Прайс-листов"
(полный набор можно увидеть запустив из меню "Справочники" пункт "Экранные формы"). Это связано с тем, что пользователю бывает необходимо видеть определенные поля в одном месте экрана, а не собирать их по всей ширине списка, иногда весьма разбухшего (за счет новых расширений). Именно для таких случаев в систему были включены так называемые "экранные формы".
ПРИМЕЧАНИЕ: Если Вы уже имели опыт работы с формами печати, то с экранными формами трудностей не возникнет, так как они работают по подобной схеме.
Создание нового шаблона экранной формы.
Предположим, Вы решили создать свой собственный шаблон какой-нибудь экранной формы. Создадим, например, экранную форму справочника номенклатуры. Опишем пошагово Ваши действия:
1.Войдем в поодсистему "Учиет ТМЦ", так как экранные формы можно редактировать только в той подсистеме, в которой они используються.
Как уже было сказано, управление экранными формами происходит через команду "Экранные формы" главного меню системы из подменю "Справочники". Зайдем туда. Перед нами появляется список строк справочника экранных форм. Эти строки бывают трех типов:
- строки заголовков групп экранных форм. Они выделяются желтым цветом и
содержат метку группы, описание и набор модификаторов (назначение
модификаторов будет описано чуть ниже).
- строки стандартных экранных форм (белого цвета) и
- строки пользовательских экранных форм (голубого цвета). Здесь
указывается номер формы, заголовок и прочая информация по конкреной
экранной форме.
ПРИМЕЧАНИЕ: Стандартные формы обычно не используются, и входят в поставку только как примеры возможных экранных форм, на базе которых пользователь может создавать свои специфичные формы.
Найдем группу форм, соответствующих справочнику номенклатуры. Метка у этой группы - CL_NMK. Если все формы выключены (перед названием формы стоит '-'), то данный список выводится стандартными средствами без использования экранных форм. Это сделано из-за того, что экранные формы немного замедляют процесс вывода.
Посмотрим как работают экранные формы на примере стандартной формы. Для этого установите маркер на форму под номером 30 и нажмите ENTER. В появившемся меню выберите пункт "Включить форму" (если вместо этого пункта там есть "Выключить форму", то это значит, что форма уже включена, и ничего делать не надо). Теперь, когда форма включена, Вы можете посмотреть на нее в действии. Зайдите в "Справочник номенклатуры" (подменю
"Справочники"). Появится сообщение "Загружается список CL_NMK30" и Вы окажетесь в привычном для Вас справочнике номенклатуры. Единственное его отличие заключается в том, что он построен на экранной форме. Если Вас вполне устраивает такой вид справочника номенклатуры, вернитесь в справочник экранных форм и выключите все формы, под меткой CL_NMK, так как стандартные средства выводят этот список точно так же. Имеет смысл использовать их вместо экранных форм, ввиду их быстродействия.
2. Если же вы решили изменить форму вывода списка на экран, в справочнике экранных форм выберите ту форму, на базе которой Вы будете создавать свою. Установите на нее маркер, нажмите ENTER и выберите "Копирование"
(или просто нажмите ALT+INS). Программа запросит номер для формы. Введите число в интервале 1-29 (номера от 30 зарезервированы за стандартными формами). Создастся новый шаблон экранной формы с указанным Вами номером, содержащим информацию из базового шаблона, и сам он откроется для редактирования.
Шаблон экранной формы - это текстовый файл, по своей структуре напоминающий шаблон формы печати. Имена таких файлов состоят из метки экрана, двузначного номера и расширения ".LST", например: "PRICE01.LST". Эти файлы лежат в каталоге \D_LST. Они призваны описывать формат вывода неких списков на экране. За каким именно списком закреплен шаблон экранной формы, определяется меткой в имени файла. Ниже описана внутренняя структура LST-файла:
* Описание шаблона экранной формы
* Строки, начинающиеся с символа '*' содержат комментарии
.EXPRESSION
* Данный раздел описывает пользовательские переменные
<переменная1> = <выражение1>
<переменная2> = <выражение2>
...
.COLOR
* Описание цветов
<переменная1> = <цвет1> && цвет задается в формате FoxPro
<переменная2> = <цвет2>
...
* Описание первой полосы экрана
#OFFSET 0
<Строка1 шапки>
<Строка2 шапки>
...
.LINE
<Строка1 вывода записи>
<Строка2 вывода записи>
...
* Вторая полоса экрана
#OFFSET 1
...
...
* Смещение X указывает на то, что здесь будет задаваться первый
* столбец, который будет учавствовать при выводе расширений
#OFFSET X
...
Вот пример описание шаблона экранной формы для вывода справочника номенклатуры:
* Справочник номенклатуры
.EXPRESSION
&tv = iif(&vid="S", "Усл.", "ТМЦ")
.COLOR
^reserv = G+
&tv = BG
#OFFSET 0
-----------T-------------------------------------------T----T-----T----------¬
#if UKR
¦ Код ¦ Найменування ¦ Од.¦ Вид ¦ Резерв ¦
#else
¦ Код ¦ Наименование ¦ Ед.¦ Вид ¦ Резерв ¦
#endif
+----------+-------------------------------------------+----+-----+----------+
.LINE
@if &IsGr
@color GR+
¦&nmk...... - &tnmk...................................? ¦
@else
¦&nmk...... &tnmk.....................................? &ed.. &tv..^reserv.. ¦
@endif
#OFFSET 1
-----------T----T----T----------T---T---T---T---T----------------------------¬
#if UKR
¦ Код ¦ Од.¦Од.1¦ Коеф. 1 ¦Пст¦Пр1¦Тар¦Прс¦ ¦
#else
¦ Код ¦ Ед.¦Ед.1¦ Коеф. 1 ¦Пст¦Пр1¦Тар¦Прс¦ ¦
#endif
+----------+----+----+----------+---+---+---+---+----------------------------+
.LINE
@if &IsGr
@color GR+
@endif
¦&nmk...... &ed. &ed1 ^ediKf1.. &ps &pn &ta &pr ¦
#OFFSET 2
-----------T----T-------T----T-------T----T-------T----T-------T----T--------¬
#if UKR
¦ Код ¦Фас1¦Коеф.1 ¦Фас2¦Коеф.2 ¦Фас3¦Коеф.3 ¦Фас4¦Коеф.4 ¦Фас5¦Коеф.5 ¦
#else
¦ Код ¦Фас1¦Коеф.1 ¦Фас2¦Коеф.2 ¦Фас3¦Коеф.3 ¦Фас4¦Коеф.4 ¦Фас5¦Коеф.5 ¦
#endif
+----------+----+-------+----+-------+----+-------+----+-------+----+--------+
.LINE
@if &IsGr
@color GR+
@endif
¦&nmk...... &f1. ^fk1... &f2. ^fk2... &f3. ^fk3... &f4. ^fk4... &f5. ^fk5... ¦
#OFFSET X
------------T
¦ Код ¦
+-----------+
.LINE
@if &IsGr
@color GR+
@endif
¦&nmk.......
Ниже приводится описание ключевых элементов экранной формы:
- Переменные
Переменные формы начинаются с символов:
'&' - обычная переменная
'$' - переменная выводится в денежном формате
'^' - переменная выводится в формате количества
При выводе переменных под нее отводится место длиной в ее имя. Чтоб
продолжить вывод переменной дальше, оставшиеся позиции заполните
точками. Знак вопроса (?) указывает на то, что если переменная не
уместилась в отведенную ей область, она продолжает выводится в
следующей строке.
Переменные бывают стандартные и пользовательские. Список стандартных
переменных для формы можно увидеть в справочнике экранных форм, став на
форму, нажав ENTER, и выбрав пункт "Переменные формы".
- Раздел ".EXPRESSION"
Раздел описания переменных пользователя. Строки этого раздела
определяют новые переменные в виде:
<переменная> = <выражение>
Выражение может быть построено из стандартных переменных при помощи
арифметических операций и функций пользователя.
- Раздел ".COLOR"
Раздел описания цветов для вывода переменных в виде.
<переменная> = <цвет>
Если переменной не задан цвет, то она выводится цветом по умолчанию.
Цвет по умолчанию можно изменить командой:
@color <цвет>
Эта команда должна стоять в отдельной строке. Она определяет цвет по
умолчанию до конца текущей записи.
Параметр <цвет> может принимать следующие значения:
N - Черный
B - Голубой
GR - Коричнивый
BG - Бирюзовый
G - Зеленый
RB - Фиолетовый
R - Красный
W - Белый
GR+ - Желтый
Суффикс '+' указывает на повышенную яркость цвета.
- Директива "#OFFSET <номер экрана>"
С этой директивы начинается описание одного экрана списка. Список может
состоять из нескольких экранов, переключение между которыми
осуществляется при помощи клавиш {Влево} и {Вправо}. Номерация экранов
начинается с нуля. Для описания экранов для вывода расширений вместо
номера экрана поставьте символ X ("икс").
Следующие после данной директивы строки описывают шапку указанного
экрана.
- Раздел ".LINE"
В этом разделе описываются непосредственно строки списка.
- Условные операторы имеют вид
@if <условие>
<строки>
@else
<строки>
@endif
В зависимости от условия будут выполнятся соответствующие строки.
Условие проверяется в момент вывода.
Если вместо '@' используется '#', то условие будет проверено один раз
во время загрузки.
3. Для более сложных списков используются модификаторы. Они позволяют
на один и тот же список "навесить" несколько шаблонов экранных форм, в
зависимости от ситуации. Например, при выводе прайс-листа, у Вас может
возникнуть желание различные типы прайс-листов задавать по разному. Для
этого к одной из экранных форм прайс-листа Вы можете привязать
несколько типов прайс-листов, при выводе которых будет использоваться
данная форма.
В справочнике экранных форм станьте на форму, к которой Вы желаете
привязать модификаторы. Нажите ENTER и выберите пункт "Модификаторы".
Здесь Вы можете для каждого из модификаторов задать список его
значений. В прайс-листах модификатором выступает тип прайс-листа. К
примеру, если форма должна использоваться для прайс-листов типов A, B и
D, то введите строку "A,B,D". Теперь если при загрузке списка
прайс-листа в справочнике будет найдена форма, соответсвующия его типу,
он будет выведен по ее шаблону, иначе будут использованы стандартные
средства вывода. Форма с пустым модификатором соответствует всем
прайс-листам. Если в справочнике существуют несколько форм, которые
удослетворяют заданному условию, будет использована та, у которой
меньше номер.