Таблица 4. Функции общего назначения
Синтаксис функции |
Описание функции |
IF(<Условие>,<Выражение1>, |
Если <Условие> истинно, то результат функции - <Выражение1>, иначе - <Выражение2> IF({Таблица.Поле} > 0, 1, 2) |
ISNULL(<Поле>) |
Проверяет <Поле> на значение null или пустую строку. Обычно применяется в сочетании с IF: IF(ISNULL({Таблица.Поле}), 'Пустое', 'Заполнено') |
EXEC_SCRIPT(<Имя скрипта>[,<Параметр1>,<Параметр2>,...]) |
Функция позволяет выполнить скрипт (меню Статистика / Скрипты). Результат функции: 1 – скрипт выполнен, 0 –скрипт не выполнен. Функция доступна в макроподстановках. {=EXEC_SCRIPT('ADDRESS')} |
QUERY(<Имя запроса>, <Имя возвращаемого поля> [,<Параметр1>,<Параметр2>,...]) |
Функция позволяет выполнить запрос (зарегистрированный в справочнике Статистика / Скрипты) и возвращает значение поля, указанного в параметре <Имя возвращаемого поля>. Если запрос возвращает более одной строки, при выполнении функции возникает ошибка. QUERY('{QUERY_ED_VALUE}','EXAM_TEMPLATE','MODELS_GR','MODELS_ID='+ numstr({MOTCONSU.MODELS_ID})+' and MODELSGROUP_ID=1') |
EXPR(<Выражение> [,<Тип результата>]) |
Функция вычисления <Выражения>, указанного в качестве аргумента. Аргумент функции, а также результирующее выражение может содержать функции и обращения к полям таблиц, локальных запросов и т.д. <Тип результата> может принимать следующие значения (по умолчанию - STRING): STRING - строка; NUMERIC - число, дата; BOOL - логический. Примеры: 1. EXPR({Таблица.Поле}) - вычисляет значение выражения, содержащегося в поле: ·если в поле содержится '2+3', выражение вернет 5, ·если в поле содержится 'IF ({Пациенты.Пол}=1,1,0)', выражение в зависимости от пола пациента вернет 1 или 0, ·если в поле содержится 'IF({Пациенты.Пол} = 1, {Таблица.Формула1}, {Таблица.Формула2})', функция вернет результат выполнения выражения, заданного в поле Формула1 или Формула2. 2. EXPR('{Таблица.Поле}') - возвращает значение поля. Если в поле содержится '2+3', выражение вернет '2+3'. Подвыражения Подвыражение представляет собой аналог функции EXPR(), при этом текст подвыражения выносится за основную формулу. Примеры: 1. <$expr {Таблица.Формула1} /> IF ($EXPR = true, 'Температура повышена', '') Если поле Формула1 содержит текст {{R}[T]STATUS PRAESENS.Температура тела}>37, то результат аналогичен вычислению формулы IF ({STATUS PRAESENS.Температура тела} > 37, 'Температура повышена', ''). 2. <$expr1 IF ({Пациенты.Пол} = 1, {Таблица.Формула1}, {Таблица.Формула2}) /> <$expr2 '{Таблица.Значение}' /> IF ($EXPR1 = 'true', $EXPR2, '') Если пациент - женщина и поле Формула1 содержит формулу {{R}[T]STATUS PRAESENS. Температура тела}>37, а поле Значение содержит 'Температура повышена', то результат аналогичен вычислению формулы: IF ({STATUS PRAESENS. Температура тела} > 37, 'Температура повышена', '') |
CHAR(<Код символа>) |
Возвращает символ по его коду. Некоторые коды символов приведены в таблице 5.2 CHAR(13)+CHAR(10) – символ переноса строки |
AGE(<Дата> [,Формат возраста для детей]) |
Функция вычисления возраста пациента. Возраст рассчитывается на указанную дату. Задание формата возраста позволяет показать, сколько пациенту лет и месяцев. AGE({=Дата текущей записи}, '%Y г. %M мес.') - возвращает возраст пациента в виде "1 г. 8 мес." |
CUR_INTORG_FIELDVAL(<Имя поля>) В качестве имени поля подставляется поле из таблицы Организации (FM_ORG) |
Возвращает значение указанного поля для текущего филиала. CUR_INTORG_FIELDVAL('LABEL') |
LANGUAGE() |
Возвращает код языка, с которым в данный момент запущена МИС МЕДИАЛОГ. О коде языка см. "Перевод МИС МЕДИАЛОГ" (DBKernel.pdf). |
TRANSLITERATE(<Строка>) |
Возвращает транслитерированное значение <Строки>. Таблица транслитерации определяется в текущем файле перевода (для русского языка - Automedi.rus) в секции [SYSTEM_BEGIN]: Alphabet=абвгдеёжзийклмнопрстуфхцчшщъыьэюя Transliteration=a,b,v,g,d,e,e,zh,z,i,y,k,l,m,n,o,p,r,s,t,u,f,h,c,ch,sh,sch,_,y,_,e,yu,ya |
PREPAREPHONE(<телефон>, <код страны по умолчанию>, <код региона по умолчанию>) |
Функция преобразует полученный номер телефона (<телефон>) по следующим правилам: ·если получен пустой <телефон>, функция также возвращает пустое значение; ·если длина полученного номера = 7 знакам, то в номер добавятся <код страны по умолчанию> и <код региона по умолчанию>; ·если длина полученного номера = 10 знакам, то в номер добавится <код страны по умолчанию>; ·если длина полученного номера = 11 знакам и первый символ '8', то он будет заменен на '+7'; ·если полученный <телефон> некорректен, возвращается строка без преобразования. PREPAREPHONE('123-45-67', '7', '495') - возвращает '+74951234567' PREPAREPHONE('89061112233', '7', '') - возвращает '+79061112233' PREPAREPHONE('123', '7', '495') - возвращает '123' |
CDSToText(<DataSet>,<Разделитель столбцов>,<Разделитель строк>) |
Функция выводит полученный набор данных в виде строки с указанными разделителями строк и столбцов. Как правило, используется для вывода результата функции CUR_DIR_SERV(). CDSToText(CUR_DIR_SERV('FM_SERV.FM_SERV_ID, FM_SERV.LABEL'), '-', '; ') |
Таблица 5. Некоторые коды символов, используемые в функции Char()
Код символа |
Символ |
Комментарий |
10 |
|
Перевод строки |
13 |
|
Возврат каретки |
153 |
™ |
Знак (TM) |
160 |
|
Неразрывный пробел |
167 |
§ |
Знак параграфа |
169 |
© |
Знак копирайта |
172 |
¬ |
Знак отрицания |
174 |
® |
Знак (R) |
176 |
° |
Знак градуса |
177 |
± |
Знак "плюс минус" |
178 |
² |
Степень 2 |
179 |
³ |
Степень 3 |
182 |
¶ |
Знак абзаца |
183 |
· |
Точка-маркер |
185 |
¹ |
Степень 1 |
188 |
¼ |
Одна четвертая |
189 |
½ |
Одна вторая |
215 |
× |
Крестик |
247 |
÷ |
Знак деления |
9 |
|
Знак табуляции |