523
правки
Изменения
→Функциональность базового объекта
);
</source>
'''AttachDebugger''' - Команда позволяет подключить открытый [[Отладчик_встроенных_скриптов]] к текущему скрипту. Команда AttachDebugger должна быть '''первой командой''' в скрипте. Добавьте её в самое начало скрипта:
<source lang="json">
<?>
AttachDebugger;
set($a, 10);
set($b, 20);
set($sum, $a + $b);
showmessage($sum);
</source>
'''Как работает:'''
# При выполнении команды AttachDebugger скрипт останавливается.
# Отладчик автоматически подключается к выполняющемуся скрипту.
# Текст скрипта загружается в редактор отладчика.
# Можно ставить точки останова, просматривать переменные и продолжать отладку.
'''Важно:'''
* Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды AttachDebugger.
* Если режим отслеживания не включён, команда `AttachDebugger` игнорируется.
* В режиме отслеживания может работать только один отладчик.
* Команда AttachDebugger должна быть первой командой в скрипте.
=== Строковые функции ===
'''UpCase(s) ''' – возвращает строку s в верхнем регистре.
'''LCase(s) ''' – возвращает строку s в нижнем регистре.
'''Len(s) ''' – возвращает количество символов в строке s.
'''Pos(s, substr [,start]) ''' – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.
'''Param(s, i) ''' – возвращает i-й элемент строки s, разделенной запятыми на элементы.
'''ParamsCount(s) ''' - возвращает количество элементов строки s, разделенной запятыми на элементы.
'''SetParam(s, p, i) ''' – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.
'''Left(s, i [,full] ) ''' – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.
'''Mid(s, i, j) ''' - возвращает подстроку из s начиная с i символа и длиной j символов
'''Right(s, i [,full]) ''' – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.
'''Reverse(s) ''' - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().
'''Char(i) ''' – возвращает символ с кодом i.
'''Ord(s) ''' – возвращает код первого символа строки s.
'''Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) ''' - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.
'''RemSpace(s) ''' – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.
'''SumStr(f [, captions, language]) ''' – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в "Справочники"-"Статусы"-"32 Валюты", в разделе "Дополнительная информация"). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.
'''NumToStrSimple(f [, captions, language]) ''' – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.
'''FullNameToShort(Name) ''' – Возвращает фамилию и инициалы по полному ФИО Name.
'''MonthName1(m) ''' – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.
'''MonthName2(m) ''' – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.
'''StrForXML(s) ''' - Подготавливает строку к парсингу как xml: Если находит в строке подстроку "UTF-8" - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.
'''FixedIntToStr(i, len[, char]) ''' - Возвращает целое число i дополненное слева символами char (по-умолчанию - "0") до длины len.
'''Translate(format, [param1, param2, ...]) ''' - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно.
'''ExtractFileName(FilePath) ''' - возвращает имя файла с расширением из полного пути к файлу FilePath.
====Функции перекодировки====
'''DecodeStr(s, charset) ''' - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.
'''EncodeStr(s, charset) ''' - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.
====Транслитерация====
'''Translit(s) ''' - транслитерация строки русского текста s латиницей
'''UnTranslit(s) ''' - транслитерация строки s с латиницы на русский.
==== Экранирование ====
'''QUOTEDSTR(s) ''' – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «"» и «'» экранируются квотирующим символом, а символы #0, #10 и #13 заменяются на \0, \n и \r соответственно.
'''FormatTextXML(s)''' - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса. '''FormatTextJSON(s)''' - переводит строку в формат JSON, экранирует служебные символы. '''FormatTextBlob(s) ''' - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.
====Хеширование ====
'''HMACHash256(key, text) ''' - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение
'''MD5Hash(text) ''' - создаёт хеш по алгоритму MD5
'''SignatureUrl(url) ''' - Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.
=== Функции работы с датой и временем ===
'''CurrTime ''' – возвращает текущее время
'''CurrDate ''' – возвращает текущую дату
'''CurrMillisecond ''' - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.
'''Today ''' - возвращает текущую дату в числовом формате.
'''Day(dt) ''' – возвращает день месяца даты dt.
'''Month(dt) ''' – возвращает месяц года даты dt.
'''Year(dt) ''' – возвращает год даты dt.
'''FirstDayOfMonth(dt) ''' – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );'''Полужирное начертание''''''LastDayOfMonth(dt)''' – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );
=== Функции приведения типов ===
'''INT(v) ''' – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.
'''FLOAT(v) ''' – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).
'''STR(v) ''' – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.
'''Date(v) ''' – возвращает дату, либо пустую строку, если не удается конвертировать v в дату
'''Time(v) ''' – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.
=== Математические функции ===
'''ROUNDUP(f) ''' – округляет число f до ближайшего большего по модулю целого числа.
'''ROUNDDN(f) ''' – округляет число f до ближайшего меньшего по модулю целого числа.
'''Money(f, CouldBeEmpty, ZeroFill, MakeSpace) ''' - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001 на пустую строку. ZeroFill - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.
''Подсказка: для простого округления используется функция int()''
'''Abs(f) ''' - возвращает модуль числа f.
'''Mod(x, y) ''' - возвращает остаток от деления целочисленного числа x на целочисленное число y.
=== Константы ===
'''Null ''' – Возвращает пустое значение. Да, True, Нет, False – константы, соответствующие булевым значениям.
'''Да''', '''True''', '''Нет''', '''False''' – константы, соответствующие булевым значениям.
=== Прочие функции ===
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.
== Объект TFieldObject ==
Создается только автоматически. Объект для доступа к записям, используется в картах и доп.дополнительных услугах(addressrecord) и событиях карточки корреспонденции (fieldlist).Методы объекта:
== Объект TMessage ==
'''Add(Value:string)''' - добавляет значение Value в конец списка.
'''SetText(Value:string)''' - устанавливает значение списка в значение Value.
'''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number.
Объект реализует создание и использование функций в скриптовом языке. Позволяет определять переиспользуемые блоки кода с параметрами.
Важно учитывать, что внтури функции создается свой инстанс интерпретатора и от туда не доступны никакие переменные\объекты кроме переданных в функцию.
Основные методы:
'''New'''(FuncName, Param1, Param2, ..., Body) — создание новой функции.Функция возвращает результат выполнения последней команды в теле функции. Аргументы:
* `FuncName` — имя функции (строка)
* `Param1, Param2, ...` — имена параметров функции (переменные начинаются с `$`, объекты — без префикса, но обязательно получить указатель через метод _self класса)
* `Body` — тело функции (скрипт, выполняемый при вызове)
'''FuncName'''(Arg1, Arg2, ...) — вызов созданной функции по имени. Если в объявлении была указана тип переменная, то и подставлять в аргумент надо обязательно переменную. Будет передано значение этой переменной (переменные словарине поддерживаются!). Если был объявлен объект, то указатель на объект должен быть получен через метод '''_self'''. C функциями поддерживают работу следующие классы: TExcel, TDirectExcel, TCSVFile, TADO, TSelfADO, TPrinter, TCanvas, TPicture, TTable, TINIFile, TSMS, TXML, TJSON, TZip, TStringList, TBaseUtils, а также объект addressrecord (TFieldObject). Результатом работы функции может быть число или строка.
Пример 1, обработка результатов функции:
<source>
<?>
new('TFunc', 'calc');
calc.new('Sum', '$a', '$b',
</source>
Пример 2, с использованием передача объектав функцию:
<source>
<?>
=== Недавние изменения ===
{|
||'''Добавлено:'''
|2025.0.0.539 Добавлена поддержка отладчика AttachDebugger
|-
||'''Добавлено:'''
|2025.0.0.534 Добавлена поддержка оператора CASE и класса TFunc