Строковые
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_1 СТАНДАРТ" документ "11. Пошаговый расчет градуировочной характеристики".
В итоговой таблице всего 2 столбца и много строк, поэтому реализована возможность разбивки таблицы на 3 части, что позволяет экономить бумагу.
Пояснения 2:
Внимание!
Если в документе используется запрос с функцией for, а потом из него же выводится значение в прямоугольнике, не вложенном в раздел этого же запроса, то в прямоугольнике будет выводиться ПОСЛЕДНЕЕ значение из запроса, а не первое.
Если в таком случае необходимо вывести первое значение запроса необходимо перед ним ввести функцию СБРОС.
Следующая("название запроса")
Значение функции:
Возвращает каждую последующую запись запроса:
[данные->значение][Следующая("данные")]
Запрос будет отрабатываться таким образом:
- при запуске происходит 1-ое обращение к запросу «данные» и возвращает
значение1. - Когда получено
значение1, снова во 2-ой раз происходит обращение к запросу «данные», переходит на значение2, затем на функцию «Следующая» и возвращаетзначение3. - Затем переходит на
значение4и возвращаетзначение5 - и т.д
N-раз (N-число записей в запросе).
Применение, пояснения:
Позволяет размещать данные таблиц на листе более компактно, а также выводить только четные или только нечетные номера записей.
Если нужно вывести только четные записи:
[Следующая("данные")][данные->значение]
Только нечетные:
[данные->значение][Следующая("данные")]
Пример:
Нужно разбить таблицу из 2-ух столбцов и 100 строк на 2 таблицы по 50:
Решение:
На страницу помещают запрос и в нем 2 прямоугольника:
[данные->значение][Следующая("данные")]
|
[данные->значение]
|
Обязательным условием является расположение прямоугольника с функцией «Сброс» выше по дереву, чем основные данные. Результат будет выглядеть следующим образом:
| 1-я запись | 2-я запись |
| 3-я запись | 4-я запись |
| ... | ... |
| 99-я запись | 100-я запись |
Внимание!
В БД "ВЛК 2 1 СТАНДАРТ" в документе "6. Этикетка на оборудование" приведен пример использования данной функции.
МногоСтрок (стр; "символ")
Описание функции:
стр– строка, которую необходимо разбить на несколько строк;символ– строка, состоящая из одного или нескольких символов.
Значение функции:
Функция делает из стр строку, состоящую из нескольких строк, разделённых произвольным символом (или группой символов) "символ".
Возможное применение:
Большинство форм (в частности, справочник "Часто используемые значения") не позволяют вставить разрыв строки в текстовые поля. Данная функция позволяет обойти это и разбить любую строку из БД на несколько строк.
Если в "стр" содержится пустота (т.е. "стр":Пусто – истина ), результат функции – такая же пустота.
Если "символ":Пусто, то результатом будет "стр" без изменений.
Если "стр" или "символ" – не строки, результат может быть произвольным (см. примеры).
стр
|
символ
|
Результат |
| «Однажды…в студёную…зимнюю пору» | «…» | Однажды в студёную зимнюю пору |
| «Раз!два!три!четыре!пять!» | «!» | Раз два три четыре пять Пустая строка |
| 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
ЭКСПВИД (a; b; c; d)
Описание функции:
a- исходное число с плавающей запятой,b- вариант округления (число. Значения: 1 - число знаков после запятой; 2 (или другой <> 1) - количество значащих цифр),с- число знаков после запятой (если < 0 - не округляется) или число значащих цифр (если <= 0 - не округляется),d- тип округления (число. Значения: 0, 1или 2).
Типы округления:
0 (Math). Если дробная часть < 0.5 - округление в меньшую сторону, если дробная часть >= 0.5 - округление в большую сторону.1 (Gauss). Округление предложенное Гауссом:
- если отбрасываемый остаток числа менее 0,5 единицы предыдущего разряда, оставшиеся цифры не изменяют. (Пример. Если принять число Пи равным 3,141 593, то оно, округленное до пяти знаков после запятой, будет равно 3,141 59);
- если отбрасываемый остаток числа более 0,5 единицы предыдущего разряда, последнюю оставшуюся цифру увеличивают на единицу. (Пример. Число Пи, округленное до четырех знаков после запятой, будет равно 3,1416);
- если отбрасываемый остаток числа равен 0,5 единицы предыдущего разряда, число округляют в сторону четного. (Пример. Число 1,35 так же, как и число 1,45, округляется до 1,4).
(Ceiling). Если число положительное и дробная часть больше 1*10-8, то число округляется в большую сторону.
Значение функции:
Возвращает экспоненциальную запись числа с плавающей запятой в формате RTF.
Пример:
[ЭКСПВИД(3.14159388; 1; 14; 0)].
- Результат: 3.14159388
ЭКСПВИДМ (a; b)
Описание функции:
a– исходное число с плавающей запятой,b– идентификатор методики в соответствии с которым выполняется округление (число, если не соответствует ни одному идентификатору методики – значение не округляется).
Значение функции:
Возвращает экспоненциальную запись числа с плавающей запятой в формате RTF.
Пример:
[ЭКСПВИДМ(3.14159388; 786)].
- Результат: 3.14159388
ЭКСПФОРМ (a; b; c; d; e; f)
Описание функции:
a- исходное число с плавающей запятой,b- вариант округления (число. Значения: 1 - число знаков после запятой; 2 (или другой <> 1) - количество значащих цифр),с- число знаков после запятой (если < 0 - не округляется) или число значащих цифр (если <= 0 - не округляется),d- тип округления (число. Значения: 0, 1или 2),е- число знаков до разделителя,f- минимальное число знаков после разделителя
ПЕРВЫЕ 4 параметра - аналогичные ЭКСПВИД:
- число; вариант округления; параметр округления; тип округления
НОВЫЕ ПАРАМЕТРЫ, ОПРЕДЕЛЯЮЩИЕ ПРЕДСТАВЛЕНИЕ:
- число знаков до разделителя;
- минимальное число знаков после разделителя
Пример:
[ЭКСПФОРМ([Записи в ЛЖ -> Среднее значение показателя (безусловно)];1;15;0;1;2)]
- Исходное число: 0,00000235.
- После применения функции: 2,35*10-6.
Примеры для числа 123:
число знаков до разделителя:
0 : 0.123 * 10+3
-1 : 0.0123 * 10+4
1 : 1.23 * 10+2