Строковые: различия между версиями
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) |
||
| Строка 234: | Строка 234: | ||
Сбрасывает значение запроса в начальное состояние. Функция бесконечна, поэтому нужно завершать цикл. Рекомендуется использовать вместе с присвоением переменных. | Сбрасывает значение запроса в начальное состояние. Функция бесконечна, поэтому нужно завершать цикл. Рекомендуется использовать вместе с присвоением переменных. | ||
Например, имеется запрос «данные» <code>Д</code> и в нем переменная «значение» <code> | Например, имеется запрос «данные» <code>Д</code> и в нем переменная «значение» <code>З<sub>N</sub></code>, для которой есть <code>N</code> значений, допустим <code>N=3</code>. В дизайнере помещают на страницу раздел «данные» и прямоугольник с текстом: <code>[данныезначение]</code>. | ||
Запрос будет отрабатываться таким образом: при запуске происходит 1-ое обращение к запросу «данные» и возвращает <code>значение1</code>. Когда получено <code>значение1</code>, снова во 2-ой раз происходит обращение к запросу «данные» и возвращает <code>значение2</code>, и т.д. <code>N</code> раз. В данном случае - 3 раза. | Запрос будет отрабатываться таким образом: при запуске происходит 1-ое обращение к запросу «данные» и возвращает <code>значение1</code>. Когда получено <code>значение1</code>, снова во 2-ой раз происходит обращение к запросу «данные» и возвращает <code>значение2</code>, и т.д. <code>N</code> раз. В данном случае - 3 раза. | ||
Версия от 01:12, 18 февраля 2026
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 >> Конец
Применение, пояснения:
База МТЭЦ документ КГ расчет по МУ, шаги.
В таблице построения КГ (2 столбца и 100 строк) реализована возможность разбивки длинной таблицы на 3 части, что позволяет экономить бумагу.
Пояснения 2: Если в документе используется запрос с функцией for, а потом из него же выводится значение в прямоугольнике, не вложенном в раздел этого же запроса, то в прямоугольнике будет выводиться ПОСЛЕДНЕЕ значение из запроса, а не первое. Если в таком случае необходимо вывести первое значение запроса необходимо перед ним ввести функцию СБРОС.