Строковые
ABBR (x ; y; z)
Описание функции:
х - первая строковая переменная;
y - вторая строковая переменная;
z - максимальное количество символов.
Значение функции:
Если количество символов в строке х меньше или равно количеству z, то выводить строковое значение х. В случае если количество символов в строке х превышает количество z, то выводить строковое значение y.
Образец:
[ABBR([Показатели -> Наименование показателя];[Показатели -> Краткое наименование показателя];18)]
Если наименование показателя больше 18 символов, выводить краткое наименование показателя.
Пример:
Наименование показателя: Механические примеси (20 символов).
Краткое наименование показателя: Мех.примеси (12 символов).
[ABBR([Показатели -> Наименование показателя];[Показатели -> Краткое наименование показателя];18)]
- Результат: Мех.примеси
FORMAT (х; ц)
Описание функции:
х- переменная в формате «дата» или «время»;ц- число, соответствующее типу форматирования:1- дата в формате - ДД.ММ.ГГ;2- дата в формате – ДД месяц ГГ;3- дата в формате – ДД.ММ.ГГГГ;4- дата в формате – ДД месяц ГГГГ;5- время в формате – ЧЧ.ММ;6- время в формате – ЧЧ.ММ.СС;7- год в формате ГГГГ;8- число месяца – ДД;9- месяц в формате ММ;10- дата в формате – месяц ГГГГ;11- преобразованиехв дату или время. Внимание, преобразование текста со словами невозможно. Например, «25 января 2005» не преобразуется, а «25.01.2005» преобразуется;12- время в формате ЧЧ ч ММ мин.
Значение функции:
Используется, если нужно сравнить даты или время между собой (приведение в единый формат) или вывести в определенном формате.
Если такое форматирование не использовать, то время 00:00 исчезает в документе.
Для сравнения времени с числом используется преобразование: [INT([[ИЗСТРОКИ([Проба в документ -> Время отбора пробы])]*24.0)]
Примеры:
[FORMAT([Записи ЛЖ -> Дата отбора пробы];1 )]
- Результат: 25.01.05
[FORMAT([Записи ЛЖ -> Дата отбора пробы];2 )]
- Результат: 25 января 05
[FORMAT([Записи ЛЖ -> Дата отбора пробы];3 )]
- Результат: 25.01.2005
[FORMAT([Записи ЛЖ -> Дата отбора пробы];4 )]
- Результат: 25 января 2005
[FORMAT([Записи ЛЖ -> Время отбора пробы];5 )]
- Результат: 14:58
[FORMAT([Записи ЛЖ -> Время отбора пробы];6 )]
- Результат: 14:58:32
[FORMAT([Записи ЛЖ -> Дата отбора пробы];7 )]
- Результат: 2005
[FORMAT([Записи ЛЖ -> Дата отбора пробы];8 )]
- Результат: 25
[FORMAT([Записи ЛЖ -> Дата отбора пробы];9 )]
- Результат: 01
[FORMAT([Записи ЛЖ -> Дата отбора пробы];10 )]
- Результат: январь 2005
[FORMAT([Записи ЛЖ -> Примечание (стр: 25.01.2005)];11)]
- Результат: 25.01.2005
[FORMAT([Записи ЛЖ -> Время отбора пробы];12)]
- Результат: 14 ч 58 мин
Примечание:
Для перевода времени в Московское необходимо сначала сложить дату и время и вычесть разницу часовых поясов (в сутках).
Решение:
[Записи ЛЖ -> Время отбора пробы] = 13:00
[FORMAT([Записи ЛЖ -> Дата отбора пробы] + [Записи ЛЖ -> Время отбора пробы] – 4/24; 5)]Результат: 09:00
STR(х)
Описание функции:
х - любой формат данных: дата, время, число и т.п.
Значение функции:
Происходит преобразование не строкового формата (ц, ч, д, в) в строковый формат (с). Используется для предварительной подготовки данных, т.к. имеются функции, которые работают только со строками, например «Вырезать», «Длина» и т.п.
Пример:
STR([Результаты анализа -> Значение показателя (среднее)].Вырезать (ав;"в")
Описание функции:
ав - строка;
в - часть строки.
Значение функции:
Позволяет вырезать из строки ее часть в.
Следует помнить, что ту часть строки, которую следует вырезать, обязательно указывать в одинарных кавычках.
Пример:
Из наименования Массовая доля воды, % масс необходимо убрать единицу измерения.
Решение:
[Вырезать ([Массовая доля воды, % масс; ', % масс')]
- Результат: Массовая доля воды
Заменить(ав;"в";"г")
Описание функции:
ав - строка;
в - часть строки;
г - текст.
Значение функции:
Позволяет извлечь из строки ав ее часть в и заменить на г.
Следует помнить, что ту часть строки, которую следует вырезать и на какую заменить, обязательно указывать в двойных кавычках.
Пример:
Необходимо изменить единицу измерения с мг/дм3 на г/см3 в наименовании показателя.
Решение:
[ЗАМЕНИТЬ ([Запрос -> Наименование показателя]; мг/дм3; г/см3)]
- Результат: Показатель, г/см3
TRIM (строка)
Значение функции:
Обрезает лишние пробелы в строковом представлении результата. Обрезание лишних нулей если число представлено строкой.
Пример 1:
Имеется строка с текстом Определение хлорид-иона (серый фон указывает длину строки с учетом лишних пробелов).
Решение 1:
[TRIM(строка с текстом)]
- Результат: Определение хлорид-иона
Пример 2:
В строковом формате записаны числа 120,000 и 120,100.
Решение 2:
[TRIM(120,000)]
- Результат: 120
[TRIM(120,100)]
- Результат: 120,1
UPCASE (строка)
Значение функции:
Переводит строки в ЗАГЛАВНЫЕ буквы.
Пример:
[UPCASE([Результаты анализа → Наименование показателя])]
- Результат: ХЛОР, ФТОР и т.д.
Длина (строка)
Значение функции:
Определяет количество символов внутри текста. Возвращает длину строки (количество символов в строке).
Образец:
[Длина ([Показатели -> Наименование показателя])]
Пример:
[Длина ('Механические примеси')]
- Результат: 20
Норма ( ; ;)
Оформление:
[НОРМА([Показатели -> Дополнение к 1-й норме]+[Показатели -> Дополнение ко 2-й норме]; [Показатели -> 1-я норма];[Показатели -> 2-я норма])]Значение функции:
В БД пояснения к нормам отмечены как «не более» и «не менее». Функция «Норма» преобразует нормы показателей к символьному формату <,-, >.
Пример:
[НОРМА([Показатели -> Дополнение к 1-й норме]+[Показатели -> Дополнение ко 2-й норме]; [Показатели -> 1-я норма]; [Показатели -> 2-я норма])]Результат:
< 10(не более 10).0,1 - 10(не менее 0,1 не более 10).>0,1(не менее 0,1).
Данные (a;b;c;d)
Значение функции:
Выбирает (и возвращает) из таблицы а, значение из поля b, при условии, что поле c = значению d. Значение c и d могут быть пустыми.
В случае если выбирается данных больше, чем 1 строка, то берётся всегда первая строка при прямой сортировке по полю b.
Пример 1:
[ДАННЫЕ("Формы док";"Названиеформы";"Идентификатор записи";340)]
- Результат: Внутрилабораторнаяпрецинзионность. Сводный журнал
[ДАННЫЕ("Формы док";"Классификация";"Дата модификации";"13.07.2005 9:54:37")]
- Результат: Внутрилабораторнаяпрецинзионность. Сводный журнал
[ДАННЫЕ("Формы док";"Готов";"Дата модификации";"13.07.2005 9:54:37")]
- Результат: Да
[ДАННЫЕ("Отчет по удалениям записей";"Причина";"ФИО";"Администратор")]
- Результат: Удалена утилитой архивирования
Пример 2:
Та же задача с использованием переменной:
['x':='340']
[ДАННЫЕ("Формы док";"Названиеформы";"Идентификатор записи";{x})]- Результат: Внутрилабораторнаяпрецинзионность. Сводный журнал
ВБД(Ид; "Название таблицы"; "ПолеИД"; "ПолеВставки"; Значение)
Описание функции:
Название таблицы - имя таблицы из дерева ЛИС. Так как тип поля строковый, названия должны точно совпадать вплоть до количества символов. Наименование таблицы, как и любая другая строковая константа, указывается в кавычках "" "".
Ид– Идентификатор записи (0-если в таблице нужно создать новую запись, цифра – если нужно перезаписать существующую запись) в таблице с названиемНазвание таблицы.ПолеИД– название поля-идентификатора из выбранной таблицы дерева ЛИС. По данному полю происходит поиск нужной записи на основании указанного идентификатораИд.ПолеВставки– название поля из выбранной таблицы дерева ЛИС, значение которого планируется перезаписать (поле, в которое будет вставляться записьЗначение). Важно: тип поля (формат)ПолеВставкииЗначениядолжны совпадать.Значения- значение, которое будет установлено вПолеВставки. Значение может быть пустым, в этом случае вПолеВставкибудет записано пустое значение.
Значение функции:
Функция возвращает число – значение Ид, если это значение на входе не равнялось нулю, а если равнялось нулю, то – новое значение из поля ПолеИД.
СБРОС(название запроса)
Значение функции:
Сбрасывает значение запроса в начальное состояние. Функция бесконечна, поэтому нужно завершать цикл. Рекомендуется использовать вместе с присвоением переменных.
Например, имеется запрос «данные» Д и в нем переменная «значение» ЗN, для которой есть N значений, допустим N=3. В дизайнере помещают на страницу раздел «данные» и прямоугольник с текстом: [данные→значение].
Запрос будет отрабатываться таким образом: при запуске происходит 1-ое обращение к запросу «данные» и возвращает значение1. Когда получено значение1, снова во 2-ой раз происходит обращение к запросу «данные» и возвращает значение2, и т.д. N раз. В данном случае - 3 раза.
Пример 1:
['i':=0]['i':={i}+1][if {i}<4][СБРОС("данные")][данные -> значение][else][данные -> Тип объекта][endif]
Присваивается переменная i, и далее через нее отрабатывается подсчет строк запроса. Как только i станет больше или равна 4, работа функции Сброс прекратится.
Запрос будет отрабатываться таким образом:
- при запуске происходит 1-ое обращение к запросу «данные»
i=1и возвращаетзначение1. - Когда получено значение 1, снова во 2-ой раз происходит обращение к запросу «данные»
i=2, видит функциюСброс, сбрасывает запрос на 1-ую запись и снова возвращаетзначение1, - затем в 3-ий раз происходит обращение к запросу «данные»
i=3, снова функцияСбросизначение1. - Затем обращение происходит в 4-ый раз
i=4, возвращаетзначение2 - и в 5-ый раз
i=5возвращаетзначение3.
Схема 1:
Запуск → 1оеД → З1 → 2оеД → З1 → 3еД → З1 → 4оеД → З2 → 5оеД → З3 → Конец
Применение, пояснения 1:
База МТЭЦ документ КГ расчет по МУ, шаги.
В таблице построения КГ (2 столбца и 100 строк) реализована возможность разбивки длинной таблицы на 3 части, что позволяет экономить бумагу.
Пояснения 2:
Если в документе используется запрос с функцией for, а потом из него же выводится значение в прямоугольнике, не вложенном в раздел этого же запроса, то в прямоугольнике будет выводиться ПОСЛЕДНЕЕ значение из запроса, а не первое. Если в таком случае необходимо вывести первое значение запроса необходимо перед ним ввести функцию СБРОС.
Следующая("название запроса")
Значение функции:
Возвращает каждую последующую запись запроса:
[данные→значение][Следующая(данные)]
Запрос будет отрабатываться таким образом:
- при запуске происходит 1-ое обращение к запросу «данные» и возвращает
значение1. - Когда получено
значение1, снова во 2-ой раз происходит обращение к запросу «данные», переходит на значение2, затем на функцию «Следующая» и возвращаетзначение3. - Затем переходит на
значение4и возвращаетзначение5 - и т.д
N-раз (N-число записей в запросе).
Применение, пояснения:
Позволяет размещать данные таблиц на листе более компактно, а также выводить только четные или только нечетные номера записей.
Если нужно вывести только четные записи:
[Следующая(данные)][данные→значение]
Только нечетные:
[данные→значение][Следующая(данные)]
Пример:
Нужно разбить таблицу из 2-ух столбцов и 100 строк на 2 таблицы по 50:
Решение:
На страницу помещают запрос и в нем 2 прямоугольника:
[данные→значение][Следующая("данные")]
|
[данные→значение]
|
Обязательным условием является расположение прямоугольника с функцией «Сброс» выше по дереву, чем основные данные. Результат будет выглядеть следующим образом:
| 1-я запись | 2-я запись |
| 3-я запись | 4-я запись |
| ... | ... |
| 99-я запись | 100-я запись |
МногоСтрок (стр; "символ")
Описание функции:
стр– строка, которую необходимо разбить на несколько строк;символ– строка, состоящая из одного или нескольких символов.
Значение функции:
Функция делает из стр строку, состоящую из нескольких строк, разделённых произвольным символом (или группой символов) символ.
Возможное применение:
Большинство форм (в частности, справочник Часто используемые значения) не позволяют вставить разрыв строки в текстовые поля. Данная функция позволяет обойти это и разбить любую строку из БД на несколько строк.
Если в стр содержится пустота (т.е. стр:Пусто – истина ), результат функции – такая же пустота.
Если символ:Пусто, то результатом будет стр без изменений.
Если стр или символ – не строки, результат может быть произвольным (см. примеры).
стр
|
символ
|
Результат |
| «Однажды…в студёную…зимнюю пору» | «…» | Однажды в студёную зимнюю пору |
| «Раз!два!три!четыре!пять!» | «!» | Раз два три четыре пять Пустая строка |
| 10,56 | 0,5 | 1 6 |
COPY (a ; b; c)
Описание функции:
a– строка,b– целое число,с– число.
Значение функции:
Возвращает часть строки а, начиная с b, длинной в с. Счет начинается с 0. Если с меньше 0, то с не учитывается.
Пример:
COPY («10 мг в воде»;8;4)
- Результат: воде
INDEXOF (a ; b)
Описание функции:
a, b – строки.
Значение функции:
Ищет в строке a строку b и возвращает целое число. Счет начинается с 0.
Пример:
INDEXOF ('абвгд' ; 'вг')
- Результат: 2
УС2ВБД ("Название таблицы"; Идентификатор лаборатории)
Описание функции:
Название таблицы - имя таблицы из дерева ЛИС. Так как тип поля строковый, названия должны точно совпадать вплоть до количества символов. Наименование таблицы, как и любая другая строковая константа, указывается в кавычках " ".
Идентификатор лаборатории – необходимо указывать, т. к. в УС2 (универсальные справочники 2.0) в отличие от УС1 (универсальные справочники 1.0) в наименовании таблицы нет указания на принадлежность к лаборатории.
Значение функции:
Функция возвращает число – значение идентификатора записи в УС2. Используется для создания новой записи в УС2 для дальнейшего заполнения записи функции ВБД, должна располагаться по дереву выше функции ВБД (т. к. ВБД в случае с УС2 только вносит данные в запись, но не создает ее).
Пример:
Создание записи в УС2 "Журнал регистрации протоколов нефти по ГОСТ" в выбранной лаборатории, результатом функции является идентификатор записи в УС2:
['vbd':=[УС2ВБД('Журнал регистрации протоколов нефти по ГОСТ';[Выберите лабораторию])]]
Заполнение поля "Номер протокола" в УС2 "Журнал регистрации протоколов нефти по ГОСТ" в ранее созданной записи по идентификатору записи в УС2 (переменная vbd):
['vbd':=[ВБД({vbd}; 'Журнал регистрации протоколов нефти по ГОСТ'; 'Идентификатор записи'; 'Номер протокола'; [РЕГНОМЕР('Протокол нефть СИКН')])]]LOWCASE (строка)
Значение функции:
Переводит строки с заглавной буквы в прописную.
Пример:
[LOWCASE([Результаты анализа → Наименование показателя])]
- Результат: с Хлор на хлор
Пример:
Если в строке нужно сделать только первую букву маленькой, а остальные не трогать, то можно использовать следующее сочетание функций:
[LOWCASE( [COPY([Показатели -> Наименование показателя];0;1)] )][COPY([Показатели -> Наименование показателя]; 1; 255)]
LOWCASERUS (строка)
Значение функции:
Переводит строки в строчные буквы (затрагивает только русские символы, остальные остаются без изменения).
Пример:
[LOWCASERUS(Составление протокола →Должность)]
- Результат: c
Инженер – химик I категориинаинженер-химик I категории
- Результат: c