Перейти к содержанию

Строковые

Материал из Химсофт Вики

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 категории