Шаблон, как правило, состоит из двух листов. На листе MACRO задаются макросы (sql-выражения), которые в дальнейшем используются на втором листе. Макросы позволяют получать из базы данных информацию, которая напрямую в шаблоне отсутствует.
Рисунок 1. Пример vts-шаблона
Рассмотрим построение макросов на следующем примере. Требуется на форму талона добавить список пользователей - медперсонал талона.
Для этого на листе MACRO формируем макрос под названием %MED_PERSONAL (макрос может иметь произвольное имя, но обязательно должен начинаться с символа %). Также следует иметь ввиду, что FormulaONE не поддерживает строки длиной более 255 символов, поэтому рекомендуется макросы разбивать на более мелкие части. В нашем примере это %MED_PERSONAL1, %MED_PERSONAL2, %MED_PERSONAL3, %MED_PERSONAL4. При соединении мелких макросов в один нужно к имени макроса добавлять круглые скобки.
A |
B |
C |
%MED_PERSONAL1 |
|
SELECT (MEDECINS_1.NOM+' '+ MEDECINS_1.PRENOM) MED1, (MEDECINS_2.NOM+' '+MEDECINS_2.PRENOM) MED2 |
%MED_PERSONAL2 |
|
FROM FM_BILL LEFT OUTER JOIN MEDECINS MEDECINS_1 ON FM_BILL.MEDECINS2_ID=MEDECINS_1.MEDECINS_ID |
%MED_PERSONAL3 |
|
LEFT OUTER JOIN MEDECINS MEDECINS_2 ON FM_BILL.MEDECINS3_ID=MEDECINS_2.MEDECINS_ID |
%MED_PERSONAL4 |
|
WHERE FM_BILL.FM_BILL_ID=:BILL.FM_BILL_ID |
%MED_PERSONAL |
Медперсонал |
%MED_PERSONAL1() %MED_PERSONAL2() %MED_PERSONAL3() %MED_PERSONAL4() |
Пояснение к макросу: %MED_PERSONAL – макрос, который складывается из четырех подмакросов %MED_PERSONAL1() … %MED_PERSONAL4(). Наименования макросов пишутся в столбце A. В столбце B указывается имя-комментарий к макросу (заполнение не обязательно). В столбце C пишется SQL-выражение для макроса. Если с написанием выражения возникают сложности, можно сформировать требуемый запрос в модуле статистики МИС МЕДИАЛОГ, и скопировать оттуда получившееся SQL-выражение. После копирования нужно будет привести выражение под определенную структуру (добавить лэйбл поля и условие WHERE).
Структура SQL-выражения:
SELECT <ПОЛЕ ИЛИ ВЫРАЖЕНИЕ> <ЛЭЙБЛ_ПОЛЯ_ИЛИ_ВЫРАЖЕНИЯ>
FROM <ТАБЛИЦА>
WHERE <УСЛОВИЕ>
Рисунок 2. Макросы в vts-шаблонах
Если в условии необходимо обратиться к полю, которое возвращается самим vts-шаблоном, то обращение к нему идет через двоеточие, префикс, имя поля. В нашем примере таким полем является номер талона - :BILL.FM_BILL_ID. Список поддерживаемых полей с префиксами для каждого vts-шаблона можно увидеть в файле vts.xls.
Когда макрос готов, его можно использовать в шаблоне. Для этого на второй закладке в ячейке, куда необходимо разместить выражение, пишется следующее: [CALC.$Имя_макроса.Лэйбл_поля]. Обратите внимание, что здесь в имени макроса вместо символа % должен присутствовать символ $. В нашем примере выражение для первого пользователя-медперсонала будет выглядеть так: [CALC.$MED_PERSONAL.MED1].
Рисунок 3. Подстановка макроса в vts-шаблон
Для объединения ячеек в FormulaONE используется кнопка Center Across Cells. Чтобы длинные строки переносились по словам внутри группы объединенных ячеек, необходимо пометить начало и конец строки набором символов: в начале строки - <!#ww, в конце строки – ww#!>. |
Если при написании макроса были допущены синтаксические или иные ошибки, при попытке открыть vts-шаблон из МИС МЕДИАЛОГ будет выведено сообщение, в каком макросе допущена ошибка. Текст с некорректным SQL-выражением можно взять для отладки в файле rep_bad.sql в каталоге PROGRAM FILES\PMT\MEDIALOG (а в версиях ниже 6.20 – в корне системного диска).
Дополнительные возможности настройки и печати vts шаблонов: