Изменения

Перейти к: навигация, поиск

Руководство программиста

7644 байта добавлено, во вторник в 21:17
Функциональность базового объекта
=== Функциональность базового объекта ===
'''SET($a, a) ''' – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.
'''IF(a,b,c) ''' или '''IF(a,b) ''' – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.
'''WHILE(a, b) ''' – Оператор цикла. Выполняет b пока a истинно:
set($i, 10);
set($sum, 0);
Результат – 55
'''FOR($a, b, c, d) ''' – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:
set($sum, 0);
for($i, 1, 10, set($sum, $sum+$i));
Результат – 55
'''NEW(ClassName, InstanceName) ''' – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.
'''FREE(InstanceName) ''' – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.
'''ShowObjects ''' – Возвращает список созданных объектов – названия классов и имена.
'''ERROR(message) ''' – Вызывает ошибку с текстом message.
'''SHOWMESSAGE(message) ''' – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.
'''SimpleAskUser(Message) ''' – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если пользователь нажал кнопку «Да», иначе – 0.
'''TRY(a) ''' – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).
'''REM(….) ''' – Код в скобках игнорируется (комментарий).
'''EXEC(FileName, Params, Wait, WindowState) ''' – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:
0 - SW_HIDE
1 - SW_SHOWNORMAL (по-умолчанию)
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.
 
'''CASE''' - Оператор множественного выбора. Позволяет выполнить одно из нескольких действий в зависимости от условий. Синтаксис:
<source>
case(
when(условие1, действие1);
when(условие2, действие2);
...
else(действие_по_умолчанию);
);
</source>
 
Пример использования:
<source>
 
set($a, 10);
set($b, 50);
 
showmessage(
case(
when($a < 5, 50);
when($a < 10, 100);
when($a < 250, 200);
else($a*$b);
)
);
</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 соответственно.  '''SQLFloat(f)''' – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.
'''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 - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.'''CurrDate''' – возвращает текущую дату
Today '''CurrMillisecond''' - возвращает текущую дату в числовом форматеВозвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.
Day(dt) – '''Today''' - возвращает день месяца даты dtтекущую дату в числовом формате.
Month'''Day(dt) ''' – возвращает месяц года день месяца даты dt.
Year'''Month(dt) ''' – возвращает год месяц года даты dt.
FirstDayOfMonth'''Year(dt) ''' Возвращает первый день месяца в формате DD.MM.YYYY для возвращает год даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );
'''FirstDayOfMonth(dt)''' – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );'''Полужирное начертание''''''LastDayOfMonth(dt) ''' – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );
'''DaysInMonth(month, year) ''' – Возвращает количество дней в указанном месяце.
'''IncDay(dt, [count=1]) ''' – Возвращает дату, увеличенную на count дней.
'''SQLDate(dt) ''' – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».
'''SQLDateToDate(dt) ''' – Переводит дату из SQL-формата в обычный.
'''DAYSBETWEEN(dt1, dt2) ''' – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.
'''TimeBetween(t1, t2) ''' - Возвращает количество минут между временем t1 и t2. Если t1 > t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате "HH:MM", так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.
'''WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) ''' - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0). В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки
'''TimePeriod(time1, time2) ''' - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: "time1 - time2" , "С time1" , "ДО time2".
'''StrDateToFloat(s, [time=false]) ''' - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате "DD.MM.YYYY", а время "HH:NN". Если строку перевести не удалось возвращает 0
'''IsAWorkDay(dt) ''' - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.
'''IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) ''' - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки
'''Sleep'''(n) - Задержка выполнения на n миллисекунд.
=== Функции приведения типов ===
'''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''' – константы, соответствующие булевым значениям.
=== Прочие функции ===
 
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.
== Объект TFieldObject ==
Создается только автоматически. Объект для доступа к записям, используется в картах и допдополнительных услугах (addressrecord) и событиях карточки корреспонденции (fieldlist). Методы объекта: '''_GetTableInfo''' - возвращает данные о полях и примеры данных объекта. '''_Self''' - возвращает ссылку на объект. '''_Set(fieldname, fieldvalue [, DoUpdateForm])''' - Если базовый объект строка.услугахУстаналивает для поля fieldname значение fieldvalue. DoUpdateForm по уолчанию false, если указать true то обновление поля будет не только в объекте но и пользовательском интерфейсе. Обновление работает только в карточке корреспнденции для ограниченного набора полей: vlog, mode, type, date_put, time_put, message, kurier, state1. '''_Set(keyfield, keyvalue, filed, value)''' - Если базовый объект таблица (addressrecord.boxes). Работает перегруженная версия метода _set, cначала происходит поиск строки по ключу, далее меняется значение указанного столбца. keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Пример, отключение услуги база:
_GETTABLEINFO addressrecord.advprice._Set('priceconf', 1, 'active', 'F') priceconf - возвращает данные о полях и примеры данных объектаполе где записан код услуги; 1 - услуга База; active - поле показывающее включение услуги.
== Объект TMessage ==
'''Add(Value:string)''' - добавляет значение Value в конец списка.
 
'''SetText(Value:string)''' - устанавливает значение списка в значение Value.
'''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number.
'''ParamValue(Number:integer[, Delimiter:string])''' - возвращает текст после первого знака разделителя Delimiter (по умолчанию "=") из строки с номером Number. Если разделителя в строке нет, то возвращает всю строку.
 
== Объект TFunc ==
Объект реализует создание и использование функций в скриптовом языке. Позволяет определять переиспользуемые блоки кода с параметрами.
Важно учитывать, что внтури функции создается свой инстанс интерпретатора и от туда не доступны никакие переменные\объекты кроме переданных в функцию.
 
 
Основные методы:
 
'''New'''(FuncName, Param1, Param2, ..., Body) — создание новой функции.Функция возвращает результат выполнения последней команды в теле функции. Аргументы:
* `FuncName` — имя функции (строка)
* `Param1, Param2, ...` — имена параметров функции (переменные начинаются с `$`, объекты — без префикса)
* `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',
$a + $b
);
 
set($x, 10);
set($y, 20);
showmessage(calc.Sum($x, $y));
</source>
 
Пример 2, передача объекта в функцию:
<source>
<?>
new('TFunc', 'utils');
utils.new('ProcessDB', 'dbConn', '$value',
showmessage($value);
dbConn.open('SELECT * FROM address limit 3 ');
if(dbConn.recordcount > 0,
showmessage('Найдено записей: ' + dbConn.recordcount);
dbConn.first;
while(dbConn.eof = 0,
showmessage(dbConn.fieldbyname('code'));
dbConn.next
)
,0)
);
 
new('TSelfADO', 'db');
utils.ProcessDB(db._self,'test!');
</source>
== Применение языка формул ==
=== Недавние изменения ===
{|
||'''Добавлено:'''
|2025.0.0.539 Добавлена поддержка отладчика AttachDebugger
|-
||'''Добавлено:'''
|2025.0.0.534 Добавлена поддержка оператора CASE и класса TFunc
|-
|}
=== Версия 2021.0.0.57 от 18.06.2019 ===
{|
||'''Добавлено:'''
517
правок

Навигация