Изменения

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

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

6196 байт добавлено, 16 январь
Объект TBase
);
</source>
 
'''AttachDebugger''' - Команда позволяет подключить открытый [[Отладчик_встроенных_скриптов]] к текущему скрипту. Команда AttachDebugger должна быть '''первой командой''' в скрипте. Добавьте её в самое начало скрипта:
 
<source lang="json">
<?>
AttachDebugger;
set($a, 10);
set($b, 20);
set($sum, $a + $b);
showmessage($sum);
</source>
 
'''Как работает:'''
# При выполнении команды AttachDebugger скрипт останавливается.
# Отладчик автоматически подключается к выполняющемуся скрипту.
# Текст скрипта загружается в редактор отладчика.
# Можно ставить точки останова, просматривать переменные и продолжать отладку.
 
'''Важно:'''
* Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды AttachDebugger.
* Если режим отслеживания не включён, команда `AttachDebugger` игнорируется.
* В режиме отслеживания может работать только один отладчик.
* Команда AttachDebugger должна быть первой командой в скрипте.
=== Строковые функции ===
'''QUOTEDSTR(s)''' – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «"» и «'» экранируются квотирующим символом, а символы #0, #10 и #13 заменяются на \0, \n и \r соответственно.
 
 
'''SQLFloat(f)''' – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.
'''FormatTextXML(s)''' - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.
=== Функции работы с датой и временем ===
'''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() ) );
LastDayOfMonth'''DaysInMonth(dtmonth, year) ''' – Возвращает последний день месяца количество дней в формате DDуказанном месяце.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );
DaysInMonth'''IncDay(monthdt, year[count=1]) ''' – Возвращает количество дату, увеличенную на count дней в указанном месяце.
IncDay'''SQLDate(dt, [count=1]) ''' Возвращает Пытается конвертировать dt в дату, увеличенную на count днейвернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».
SQLDate'''SQLDateToDate(dt) ''' Пытается конвертировать dt в Переводит дату, вернуть из SQL-формата в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL»обычный.
SQLDateToDate'''DAYSBETWEEN(dtdt1, dt2) ''' Переводит дату из SQLВозвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -формата в обычный1000.
DAYSBETWEEN'''TimeBetween(dt1t1, dt2t2) ''' - Возвращает количество дней минут между датами dt1 временем t1 и dt2t2. В случае ошибки приведения dt1 или dt2 Если t1 > t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате "HH:MM", так и в числовом. Если один из параметров не удалось привести к дате числовому типу возвращает -1000.
TimeBetween'''WorkDaysBetween(t1dt1, t2dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) ''' - Возвращает количество минут рабочих дней между временем t1 датами dt1 и t2dt2. Если t1 > t2 то будет показано Параметр DecreaseFirstDay уменьшает dt1 на указанное количество минут между t2 и t1. Параметр t может быть как в формате "HH:MM", так и в числовомдней (по умолчанию 0). Если один из параметров не удалось привести В случае ошибки приведения dt1 или dt2 к числовому типу дате возвращает -1000.Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки
WorkDaysBetween'''TimePeriod(dt1time1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]time2) ''' - Возвращает количество рабочих дней между датами dt1 и dt2Оформляет временной период. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0)Возвращаемое значение зависит от наличия значения в параметрах. В случае ошибки приведения dt1 или dt2 к дате возвращает Возможные варианты: "time1 -1000time2" , "С time1" , "ДО time2". Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки
TimePeriod'''StrDateToFloat(time1s, time2[time=false]) ''' - Оформляет временной периодПереводит строку с датой s в числовой тип. Возвращаемое значение зависит от наличия значения Если параметр time включен, то в параметрахстроке s должно быть указано время. Возможные варианты: Дата должна быть в формате "time1 - time2DD.MM.YYYY" , а время "С time1" , "ДО time2HH:NN".Если строку перевести не удалось возвращает 0
StrDateToFloat'''IsAWorkDay(s, [time=false]dt) ''' - Переводит строку с датой s в числовой тип. Если параметр time включенКогда день dt является рабочим, то в строке s должно быть указано время. Дата должна быть в формате "DD.MM.YYYY", а время "HH:NN"возвращает true. Если строку перевести не удалось произошла ошибка приведения даты возвращает 0-1000.
IsAWorkDay'''IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) ''' - Когда день Прибавляет count рабочих дней к дате dt является рабочим. Возвращает дату в числовом формате, возвращает true. Если если произошла ошибка приведения даты возвращает -1000.По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки
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.
'''GetItemByName(Name)'''
'''GetA4Printer([GetPrinterPort=False])''' - возвращает имя принтера выбранного для печати документов. GetPrinterPort - попытаться по имени принтера найти порт принтера.  '''GetStickerPrinter([GetPrinterPort=False])''' - возвращает имя принтера выбранного для печати стикеров. GetPrinterPort - попытаться по имени принтера найти порт принтера.
'''GetStickerPrinterGetDuplexPrinter([GetPrinterPort=False])''' - возвращает имя принтера выбранного для двусторонней печати стикеров, если принтер не выбран, возвращает пустую строку.
'''GetDuplexPrinterPrintAttachPDFPage(Code, FileName, Page, Printer)''' - возвращает имя принтера выбранного для двусторонней печатипечатает страницу из вложенного файла PDF. Code - код вложения (attachment) или путь к файлу, Page - номер страницы, если Printer - 0 = принтер не выбранA4, возвращает пустую строку1 = принтер этикеток.
'''PrintAttachPDFPageAttachPDFToText(Code, FileName, Page, Printer[TextFileName])''' - печатает страницу преобразует файл PDF из вложенного файла PDFвложений в текст. Code - код вложения (attachment)или путь к файлу, Page TextFileName - номер страницыимя текстового файла, Printer - 0 = принтер A4в который записывается результат (если не указан, 1 = принтер этикетокиспользуется временный файл). Возвращает текст в виде строки.
'''AttachPDFToTextGhostScript(GScript, Code, [TextFileName])''' - преобразует файл PDF из вложений в текст— функция для выполнения консольных команд утилиты [https://ghostscript.readthedocs.io/en/latest/Use.html ghostscript]. Где, GScript — строка с командами Ghostscript; Code - код вложения (attachment)или путь к PDF-файлу, TextFileName - имя текстового файлапредназначенному для обработки. В командах доступен специальный тег %MeasoftInFile%, в который записывается результат автоматически заменяется на путь к предварительно загруженному файлу (если не указан, используется временный файлCode). Возвращает текст Если в виде строкикоманде необходимо указать путь для сохранения результата обработки, используйте тег %MeasoftOutFile%. В этом случае функция на основании параметра Code автоматически сформирует имя временного выходного файла. После успешного выполнения команд функция возвращает путь к сгенерированному выходному файлу - %MeasoftOutFile%.
'''GetActiveForm([SkipFormName])''' - возвращает код активной формы в программе где происходит сканирование. SkipFormName - не обязательны параметр, имя формы которую нужно пропустить при определении интерфейса.
== Объект TFieldObject ==
Создается только автоматически. Объект для доступа к записям, используется в картах и допдополнительных услугах (addressrecord) и событиях карточки корреспонденции (fieldlist). Методы объекта: '''_GetTableInfo''' - возвращает данные о полях и примеры данных объекта. '''_Self''' - возвращает ссылку на объект.услугах '''_Set(fieldname, fieldvalue [, DoUpdateForm])''' - Если базовый объект строка. Устаналивает для поля fieldname значение fieldvalue. DoUpdateForm по уолчанию false, если указать true то обновление поля будет не только в объекте но и пользовательском интерфейсе. Обновление работает только в карточке корреспнденции для ограниченного набора полей: vlog, mode, type, date_put, time_put, message, kurier, state1.
_GETTABLEINFO '''_Set(keyfield, keyvalue, filed, value)''' - возвращает данные о полях и примеры данных объектаЕсли базовый объект таблица (addressrecord.boxes). Работает перегруженная версия метода _set, cначала происходит поиск строки по ключу, далее меняется значение указанного столбца. keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Пример, отключение услуги база:  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.
Объект реализует создание и использование функций в скриптовом языке. Позволяет определять переиспользуемые блоки кода с параметрами.
Важно учитывать, что внтури функции создается свой инстанс интерпретатора и от туда не доступны никакие переменные\объекты кроме переданных в функцию.
C функциями поддерживают работу следующие классы: TExcel, TDirectExcel, TCSVFile, TADO, TSelfADO, TPrinter, TCanvas, TPicture, TTable, TINIFile, TSMS, TXML, TJSON, TZip, TStringList, TBaseUtils.
Основные методы:
'''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>
<?>
=== Недавние изменения ===
{|
||'''Изменено:'''
|2026.0.0.550 Доработка функций интерпретатора GetA4Printer, GetStickerPrinter, GetDuplexPrinter.
|-
||'''Изменено:'''
|2026.0.0.547 Доработка функций ATTACHPDFTOTEXT и PRINTATTACHPDFPAGE, добавлена возможность указать путь к файлу
|-
||'''Добавлено:'''
|2025.0.0.539 Добавлена поддержка отладчика AttachDebugger
|-
||'''Добавлено:'''
|2025.0.0.534 Добавлена поддержка оператора CASE и класса TFunc
538
правок

Навигация