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

Строковые: различия между версиями

Материал из Химсофт Вики
 
(не показана 41 промежуточная версия этого же участника)
Строка 10: Строка 10:


===Образец:===
===Образец:===
<syntaxhighlight>[ABBR([Показатели -> Наименование показателя];[Показатели -> Краткое наименование показателя];18)].</syntaxhighlight>
<code>[ABBR([Показатели -> Наименование показателя];[Показатели -> Краткое наименование показателя];18)]</code>
 
Если наименование показателя больше 18 символов, выводить краткое наименование показателя.
Если наименование показателя больше 18 символов, выводить краткое наименование показателя.


Строка 17: Строка 18:


'''Краткое наименование показателя:''' ''Мех.примеси'' (12 символов).
'''Краткое наименование показателя:''' ''Мех.примеси'' (12 символов).
<syntaxhighlight>[ABBR([Показатели -> Наименование показателя];[Показатели -> Краткое наименование показателя];18)].</syntaxhighlight>
*<code>[ABBR([Показатели -> Наименование показателя];[Показатели -> Краткое наименование показателя];18)]</code>
'''Результат:''' ''Мех.примеси''
::'''Результат:''' ''Мех.примеси''


==FORMAT (х; ц)==
==FORMAT (х; ц)==
Строка 71: Строка 72:
::'''Результат:''' ''14 ч 58 мин''
::'''Результат:''' ''14 ч 58 мин''


'''Примечание:''' для перевода времени в Московское необходимо сначала сложить дату и время и вычесть разницу часовых поясов (в сутках).
<div style="background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;">
'''Примечание:'''  
 
Для перевода времени в Московское необходимо сначала сложить дату и время и вычесть разницу часовых поясов (в сутках).
 
'''Решение:'''
'''Решение:'''
<syntaxhighlight>
<syntaxhighlight>
[Записи ЛЖ -> Время отбора пробы] = 13:00
[Записи ЛЖ -> Время отбора пробы] = 13:00
[FORMAT([Записи ЛЖ -> Дата отбора пробы] + [Записи ЛЖ -> Время отбора пробы] – 4/24; 5)].
[FORMAT([Записи ЛЖ -> Дата отбора пробы] + [Записи ЛЖ -> Время отбора пробы] – 4/24; 5)]
</syntaxhighlight>
</syntaxhighlight>
'''Результат:''' ''09:00''
'''Результат:''' ''09:00''
</div>


==STR(х)==
==STR(х)==
Строка 92: Строка 99:
</syntaxhighlight>
</syntaxhighlight>


==Вырезать (ав;'в')==
==Вырезать (ав;"в")==


===Описание функции:===
===Описание функции:===
Строка 106: Строка 113:


===Решение:===
===Решение:===
<syntaxhighlight>
*<code>[Вырезать ([Массовая доля воды, % масс; ', % масс')]</code>
[Вырезать ([Массовая доля воды, % масс; ', % масс')].
::'''Результат:''' ''Массовая доля воды''
</syntaxhighlight>
'''Результат:''' ''Массовая доля воды''


==Заменить(ав;''в'';''г'')==
==Заменить(ав;"в";"г")==


===Описание функции:===
===Описание функции:===
Строка 126: Строка 131:


===Решение:===
===Решение:===
<syntaxhighlight>
*<code>[ЗАМЕНИТЬ ([Запрос -> Наименование показателя]; ''мг/дм3''; ''г/см3'')]</code>
[ЗАМЕНИТЬ ([Запрос -> Наименование показателя]; ''мг/дм3''; ''г/см3'')].
::'''Результат:''' ''Показатель, г/см3''
</syntaxhighlight>
'''Результат:''' ''Показатель, г/см3''


==TRIM (строка)==
==TRIM (строка)==
Строка 153: Строка 156:


==UPCASE (строка)==
==UPCASE (строка)==
===Значение функции:===
Переводит строки в ЗАГЛАВНЫЕ буквы.
===Пример:===
*<code>[UPCASE([Результаты анализа → Наименование показателя])]</code>
::'''Результат:''' ''ХЛОР, ФТОР и т.д.''


==Длина (строка)==
==Длина (строка)==
===Значение функции:===
Определяет количество символов внутри текста. Возвращает длину строки (количество символов в строке).
===Образец:===
<code>[Длина ([Показатели -> Наименование показателя])]</code>
===Пример:===
*<code>[Длина ('Механические примеси')]</code>
::'''Результат:''' ''20''


==Норма ( ; ;)==
==Норма ( ; ;)==
===Оформление:===
<syntaxhighlight>
[НОРМА([Показатели -> Дополнение к 1-й норме]+[Показатели -> Дополнение ко 2-й норме]; [Показатели -> 1-я норма];[Показатели -> 2-я норма])]
</syntaxhighlight>
===Значение функции:===
В БД пояснения к нормам отмечены как «не более» и «не менее». Функция «Норма» преобразует нормы показателей к символьному формату <code><,-, ></code>.
===Пример:===
<syntaxhighlight>
[НОРМА([Показатели -> Дополнение к 1-й норме]+[Показатели -> Дополнение ко 2-й норме]; [Показатели -> 1-я норма]; [Показатели -> 2-я норма])]
</syntaxhighlight>
===Результат:===
*<code>< 10</code> (не более 10).
*<code>0,1 - 10</code> (не менее 0,1 не более 10).
*<code>>0,1</code> (не менее 0,1).


==Данные (a;b;c;d)==
==Данные (a;b;c;d)==


==ВБД(Ид; ''Название таблицы''; ''ПолеИД''; ''ПолеВставки''; Значение)==
===Значение функции:===
Выбирает (и возвращает) из таблицы <code>а</code>, значение из поля <code>b</code>, при условии, что поле <code>c</code> = значению <code>d</code>. Значение <code>c</code> и <code>d</code> могут быть пустыми.
В случае если выбирается данных больше, чем 1 строка, то берётся всегда первая строка при прямой сортировке по полю <code>b</code>.
 
===Пример 1:===
*<code>[ДАННЫЕ("Формы док";"Названиеформы";"Идентификатор записи";340)]</code>
::'''Результат:''' ''Внутрилабораторнаяпрецинзионность. Сводный журнал''
 
*<code>[ДАННЫЕ("Формы док";"Классификация";"Дата модификации";"13.07.2005 9:54:37")]</code>
::'''Результат:''' ''Внутрилабораторнаяпрецинзионность. Сводный журнал''
 
*<code>[ДАННЫЕ("Формы док";"Готов";"Дата модификации";"13.07.2005 9:54:37")]</code>
::'''Результат:''' ''Да''
 
*<code>[ДАННЫЕ("Отчет по удалениям записей";"Причина";"ФИО";"Администратор")]</code>
::'''Результат:''' ''Удалена утилитой архивирования''
 
===Пример 2:===
Та же задача с использованием переменной:
<syntaxhighlight>
['x':='340']
[ДАННЫЕ("Формы док";"Названиеформы";"Идентификатор записи";{x})]
</syntaxhighlight>
::'''Результат:''' ''Внутрилабораторнаяпрецинзионность. Сводный журнал''
 
==ВБД(Ид; "Название таблицы"; "ПолеИД"; "ПолеВставки"; Значение)==
 
===Описание функции:===
Название таблицы - имя таблицы из дерева ЛИС. Так как тип поля строковый, названия должны точно совпадать вплоть до количества символов. Наименование таблицы, как и любая другая строковая константа, указывается в кавычках <code>"" ""</code>.
*<code>Ид</code> – Идентификатор записи (0-если в таблице нужно создать новую запись, цифра – если нужно перезаписать существующую запись) в таблице с названием <code>Название таблицы</code>.
*<code>ПолеИД</code> – название поля-идентификатора из выбранной таблицы дерева ЛИС. По данному полю происходит поиск нужной записи на основании указанного идентификатора <code>Ид</code>.
*<code>ПолеВставки</code> – название поля из выбранной таблицы дерева ЛИС, значение которого планируется перезаписать (поле, в которое будет вставляться запись <code>Значение</code>). Важно: тип поля (формат) <code>ПолеВставки</code> и <code>Значения</code> должны совпадать.
*<code>Значения</code> - значение, которое будет установлено в <code>ПолеВставки</code>. Значение может быть пустым, в этом случае в <code>ПолеВставки</code> будет записано пустое значение.
 
===Значение функции:===
Функция возвращает число – значение <code>Ид</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>['i':=0]['i':={i}+1][if {i}<4][СБРОС("данные")][данные -> значение][else][данные -> Тип объекта][endif]</code>
 
Присваивается переменная <code>i</code>, и далее через нее отрабатывается подсчет строк запроса. Как только <code>i</code> станет больше или равна 4, работа функции <code>Сброс</code> прекратится.
Запрос будет отрабатываться таким образом:
*при запуске происходит 1-ое обращение к запросу «данные» <code>i=1</code> и возвращает <code>значение1</code>.
*Когда получено значение 1, снова во 2-ой раз происходит обращение к запросу «данные» <code>i=2</code>, видит функцию <code>Сброс</code>, сбрасывает запрос на 1-ую запись и снова возвращает <code>значение1</code>,
*затем в 3-ий раз происходит обращение к запросу «данные» <code>i=3</code>, снова функция <code>Сброс</code> и <code>значение1</code>.
*Затем обращение происходит в 4-ый раз <code>i=4</code>, возвращает <code>значение2</code>
*и в 5-ый раз <code>i=5</code> возвращает <code>значение3</code>.
 
===Схема 1:===
<code>Запуск → 1оеД → З<sub>1</sub> → 2оеД → З<sub>1</sub> → 3еД → З<sub>1</sub> → 4оеД → З<sub>2</sub> → 5оеД → З<sub>3</sub> → Конец</code>
 
===Применение, пояснения 1:===
База МТЭЦ документ <code>КГ расчет по МУ, шаги</code>.
 
В таблице построения КГ (2 столбца и 100 строк) реализована возможность разбивки длинной таблицы на 3 части, что позволяет экономить бумагу.
 
===Пояснения 2:===
Если в документе используется запрос с функцией <code>for</code>, а потом из него же выводится значение в прямоугольнике, не вложенном в раздел этого же запроса, то в прямоугольнике будет выводиться ПОСЛЕДНЕЕ значение из запроса, а не первое. Если в таком случае необходимо вывести первое значение запроса необходимо перед ним ввести функцию <code>СБРОС</code>.
 
==Следующая("название запроса")==
 
===Значение функции:===
Возвращает каждую последующую запись запроса:
<code>[данные→значение][Следующая(''данные'')]</code>
 
Запрос будет отрабатываться таким образом:
*при запуске происходит 1-ое обращение к запросу «данные» и возвращает <code>значение1</code>.
*Когда получено <code>значение1</code>, снова во 2-ой раз происходит обращение к запросу «данные», переходит на значение2, затем на функцию «Следующая» и возвращает <code>значение3</code>.
*Затем переходит на <code>значение4</code> и возвращает <code>значение5</code>
*и т.д <code>N</code>-раз (<code>N</code>-число записей в запросе).
 
===Применение, пояснения:===
Позволяет размещать данные таблиц на листе более компактно, а также выводить только четные или только нечетные номера записей.
 
Если нужно вывести только четные записи:
<code>[Следующая(''данные'')][данные→значение]</code>
 
Только нечетные:
<code>[данные→значение][Следующая(''данные'')]</code>
 
===Пример:===
Нужно разбить таблицу из 2-ух столбцов и 100 строк на 2 таблицы по 50:
 
===Решение:===
На страницу помещают запрос и в нем 2 прямоугольника:
 
{|class="wikitable" style="margin:auto; background-color: #fff;"
|-
|<code>[данные→значение][Следующая("данные")]</code>
|<code>[данные→значение]</code>
|-
|}
 
Обязательным условием является расположение прямоугольника с функцией «Сброс» выше по дереву, чем основные данные. Результат будет выглядеть следующим образом:
 
{|class="wikitable" style="margin:auto; background-color: #fff;"
|-
|1-я запись
|2-я запись
|-
|3-я запись
|4-я запись
|-
|...
|...
|-
|99-я запись
|100-я запись
|-
|}


==МногоСтрок (стр; "символ")==
==МногоСтрок (стр; "символ")==
===Описание функции:===
*<code>стр</code> – строка, которую необходимо разбить на несколько строк;
*<code>символ</code> – строка, состоящая из одного или нескольких символов.
===Значение функции:===
Функция делает из <code>стр</code> строку, состоящую из нескольких строк, разделённых произвольным символом (или группой символов) <code>символ</code>.
===Возможное применение:===
Большинство форм (в частности, справочник <code>Часто используемые значения</code>) не позволяют вставить разрыв строки в текстовые поля. Данная функция позволяет обойти это и разбить любую строку из БД на несколько строк.
Если в <code>стр</code> содержится пустота (т.е. <code>стр:Пусто</code> – истина ), результат функции – такая же пустота.
Если <code>символ:Пусто</code>, то результатом будет <code>стр</code> без изменений.
Если <code>стр</code> или <code>символ</code> – не строки, результат может быть произвольным (см. примеры).
{|class="wikitable" style="margin:auto; background-color: #fff;"
|-style="text-align:center;"
|<code>стр</code>
|<code>символ</code>
|Результат
|-
|«Однажды…в студёную…зимнюю пору»
|style="text-align:center;"|«…»
|Однажды<br>в студёную<br>зимнюю пору
|-
|«Раз!два!три!четыре!пять!»
|style="text-align:center;"|«!»
|Раз<br>два<br>три<br>четыре<br>пять<br>Пустая строка
|-
|10,56
|style="text-align:center;"|0,5
|1<br>6
|}


==COPY (a ; b; c)==
==COPY (a ; b; c)==
===Описание функции:===
*<code>a</code> – строка,
*<code>b</code> – целое число,
*<code>с</code> – число.
===Значение функции:===
Возвращает часть строки <code>а</code>, начиная с <code>b</code>, длинной в <code>с</code>. Счет начинается с <code>0</code>. Если <code>с</code> меньше <code>0</code>, то <code>с</code> не учитывается.
===Пример:===
<code>COPY («10 мг в воде»;8;4)</code>
::'''Результат:''' ''воде''


==INDEXOF (a ; b)==
==INDEXOF (a ; b)==
===Описание функции:===
<code>a</code>, <code>b</code> – строки.
===Значение функции:===
Ищет в строке <code>a</code> строку <code>b</code> и возвращает целое число. Счет начинается с <code>0</code>.
===Пример:===
<code>INDEXOF ('абвгд' ; 'вг')</code>
::'''Результат:''' ''2''


==УС2ВБД ("Название таблицы"; Идентификатор лаборатории)==
==УС2ВБД ("Название таблицы"; Идентификатор лаборатории)==
===Описание функции:===
Название таблицы - имя таблицы из дерева ЛИС. Так как тип поля строковый, названия должны точно совпадать вплоть до количества символов. Наименование таблицы, как и любая другая строковая константа, указывается в кавычках <code>" "</code>.
Идентификатор лаборатории – необходимо указывать, т. к. в УС2 (универсальные справочники 2.0) в отличие от УС1 (универсальные справочники 1.0) в наименовании таблицы нет указания на принадлежность к лаборатории.
===Значение функции:===
Функция возвращает число – значение идентификатора записи в УС2. Используется для создания новой записи в УС2 для дальнейшего заполнения записи функции ВБД, должна располагаться по дереву выше функции ВБД (т. к. ВБД в случае с УС2 только вносит данные в запись, но не создает ее).
===Пример:===
Создание записи в УС2 "Журнал регистрации протоколов нефти по ГОСТ" в выбранной лаборатории, результатом функции является идентификатор записи в УС2:
<code>['vbd':=[УС2ВБД('Журнал регистрации протоколов нефти по ГОСТ';[Выберите лабораторию])]]</code>
Заполнение поля "Номер протокола" в УС2 "Журнал регистрации протоколов нефти по ГОСТ" в ранее созданной записи по идентификатору записи в УС2 (переменная vbd):
<syntaxhighlight >['vbd':=[ВБД({vbd}; 'Журнал регистрации протоколов нефти по ГОСТ'; 'Идентификатор записи'; 'Номер протокола'; [РЕГНОМЕР('Протокол нефть СИКН')])]]</syntaxhighlight >


==LOWCASE (строка)==
==LOWCASE (строка)==
===Значение функции:===
Переводит строки с заглавной буквы в прописную.
===Пример:===
<code>[LOWCASE([Результаты анализа → Наименование показателя])]</code>
::'''Результат:''' ''с '''Х'''лор на '''х'''лор''
===Пример:===
Если в строке нужно сделать только первую букву маленькой, а остальные не трогать, то можно использовать следующее сочетание функций:
<code>[LOWCASE( [COPY([Показатели -> Наименование показателя];0;1)] )][COPY([Показатели -> Наименование показателя]; 1; 255)]</code>


==LOWCASERUS (строка)==
==LOWCASERUS (строка)==
===Значение функции:===
Переводит строки в строчные буквы (затрагивает только русские символы, остальные остаются без изменения).
===Пример:===
<code>[LOWCASERUS(Составление протокола →Должность)]</code>
::'''Результат:''' c <code>Инженер – химик I категории</code> на <code>инженер-химик I категории</code>

Текущая версия от 04:02, 20 февраля 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 → Конец

Применение, пояснения 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 категории