35
правок
Изменения
→Объект TBaseUtils
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:
0 - SW_HIDE
1 - SW_SHOWNORMAL(по-умолчанию)
3 - SW_MAXIMIZE
6 - SW_MINIMIZE
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.
=== Строковые функции ===
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.
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 - строка и число соответственно.
====Функции перекодировки====
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.
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.
====Транслитерация====
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 с добавленным в конце параметром, в котором будет записана подпись.
=== Функции работы с датой и временем ===
CurrDate – возвращает текущую дату
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.
Today - возвращает текущую дату в числовом формате.
Day(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() ) );
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на 1 деньcount дней.
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.
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 миллисекунд.
=== Функции приведения типов ===
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.
=== Математические функции ===
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001 на пустую строку. ZeroFill - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.
''Подсказка: для простого округления используется функция int()''
=== Константы ===
=== Прочие функции ===
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера(также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.
CheckEan(s) - Проверяет строку s, что она является кодом EAN13. SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID. DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае. HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - "application/x-www-form-urlencoded; Charset=UTF-8". HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - "POST". CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.Функция возвращает ответ сервера. <br>''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить "Data=". FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме. FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме. GetTempDir - Возвращает путь к временной папке. ApplicationDir - Возвращает путь к файлу программы. Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе. LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу. LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.
== Объект TExcel ==
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel.
OpenFile(aFileName) – Выполняет функции SetFileName и Open.
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.
Cell(x, y, text) – Возвращает значение ячейки, заданной координатамиx, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит "#####", что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.
First – Делает первую запись листа текущей.
RecordCount – Возвращает количество строк в листе.
RowAutoFit - Устанавливает автоматическую высоту строк.
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.
'''''Столбцы'''''
ColCount - Возвращает количество столбцов в листе.
AutoFit – Устанавливает автоматическую ширину столбцов.
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.
'''''Листы'''''
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.
SetSheetName(Name) - Устанавливает название текущего листа.
SheetsCount – Возвращает количество листов в книге.
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color - целое значение (RGB)
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке с координатами [Row,Col]
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку "Файл уже существует".
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения. '''''Пример использования:'''''
new('TExcel', 'myxl');
''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''
== Объект TDirectExcel ==
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы.
== Объект TCSVFile ==
Предназначен для доступа к данным документов CSV.Разделителем столбцов является символ точка с запятой ;
Функции:
OpenFile(FileName) – Открывает файл FileName.
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. LoadFromText(s) - Загружает таблицу из строки s.
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.
SaveToFile(Filename) - Сохраняет в файл с именем filename.
== Объект TADO ==
Функции:
{|class="wikitable"
!Функция
!Описание
|Connect(ConnectionString)
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.
|-
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)
|Подключает к базе данных MySQL.
|-
|Open(Query)
|-
|GetSQLValue(Query)
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результа результата как текст.
|-
|FillText(s)
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами "<?>" и ">". При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. При этом создается новый объект ''Внимание! Функция не создает отельный контекст интерпретатора, поэтому набор переменных а использует существующий, в нем доступны все объекты и объектов в этом контексте не связан с глобальным контекстомпеременные, в котором выполняется функция FillTextвызывающего скрипта. В данном контексте '' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем "dataset".
|-
|Query(Query)
|Self
|Возвращает указатель на подключение к БД для использования в других объектах.
|-
|ParseForIn([FieldName='code'])
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.
|-
|GetSQL
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue
|-
|ExportExcel
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.
|-
|OnGetText
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями.
'''''Пример использования'''''
DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),
GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) > 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')
,
''
));
|}
Пример использования – см. TSelfADO
Пример использования:
== Объект TPrinter ==
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал "OK".
NewPage – Начинает новую страницу
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.
GetDefaultPrinter - Возвращает имя текущего активного принтера.
== Объект TCanvas ==
MLTextOut(x1, y1, x2, y2, Alignment, VAlignment, Font, s, Heigth, Indent) – Выводит многострочный текст s в прямоугольнике с координатами x1, y1, x2, y2 с переносом по словам. По горизонтали строки выравниваются в соответствии с Alignment, по вертикали – в соответствии с VAlignment (0 – прижато вверх, 1 – по центру, 2 – прижато вниз). Используя шрифт Font (см описание ниже). Heigth – высота строки. Если опущено или равно нулю – высота определяется автоматически в соответствии с выбранным шрифтом. Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату Y фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''
DrawPic(x1, y1, x2, y2, Pic, Style, Alignment, Mode) – Прорисовывает изображение Pic (ссылка на изображение TPicture.Self) в прямоугольник заданный координатами x1-y2. Style – стиль масштабирования. 0 – растянуть изображение до границ прямоугольника не сохраняя пропорции, 1 – вписать изображение в прямоугольник сохраняя пропорции – вероятно, останутся поля по вертикали или горизонтали, 2 – вписать сохраняя пропорции, обрезав при необходимости изображение по вертикали или горизонтали. Alignment – выравнивание по горизонтали. Работает только в случае если style=1 и при растягивании изображения получились вертикальные поля. 0 – разместить по центру, 1 – прижать влево, 2 – прижать вправо. Функция возвращает координату X правой стороны изображения кроме случая, когда Style=1 и Alignment=2 – в этом случае возвращается координата левой стороны изображения. Mode - способ наложения изображения. 0 (по-умолчанию) - копирование как есть. 1 - Наложение операцией AND (применяется для получения эффекта прозрачности изображения), 2 - наложение операцией XOR (Применяется для возможности повторной операцией убрать изображение), 3 - Наложение операцией OR.
FillRect(x1, y1, x2, y2) – Закрашивает Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor
Rect(x1, y1, x2, y2) – Закрашивает Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor.
SetFont(Font) – Устанавливает шрифт по-умолчанию.
SetPen(Width, Color) - Устанавливает параметры "ручки" - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker
== Объект TPicture ==
Предоставляет функции для работы с графическими изображениями форматов BMP , GIF, JPEG и JpegPNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.
Функции:
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.
Width – Возвращает ширину изображения.
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.
Canvas - ссылка на объект TCanvas холста изображения.
== Объект TTable ==
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.
Функции:
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.
RowCount – Возвращает количество строк в таблице.
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.
SetColFont(C, Font) - Устанавливает шрифт столбца C. SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы.По-умолчанию значение 0.3
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.
SetMinRowHeght (Heght) – Задает значение минимальной высоты строкив пикселях.
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''"1" - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид "тип штрих-кода, номер", например "7, 123" (без кавычек, конечно). В этом случае система сформирует штрих-код: "2700000001233". Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''"2" - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде "как есть". Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.
Пример:
<?>
NEW('TPrinter', 'Prn');
If(prn.ShowDialog,
NEW('TTable', 'Tbl');
NEW('TSelfADO', 'MyDB');
MyDB.Open('SELECT concat("7", ", ", a.code, "\r\n", a.client_id, "\r\n", a.zakaz, "-", a.number) as "Штрих-код", a.target AS "Заказик", address, phone, vlog, poruch FROM address a order by code desc limit 10');
Tbl.LoadFromDB(MyDB.Self);
Tbl.SetBarcode(1, 1);
Tbl.SetCustomHeader(
if($TablePageNo>0,
Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');
set($TableY, $TableY + Prn.Canvas.TextHeight('H'));
,0)
);
Prn.BeginDoc;
Prn.PrintTable(0, Tbl.Self);
Prn.EndDoc
, );
== Объект TBaseUtils ==
Функции:
'''MakeAddress(s[,town]) ''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса. С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:* в строке s записано число; * строка s начинается с "ПВЗ ". Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. <br/>Правила поиска ПВЗ:* Если s число - считаем его внутренним кодом филиала;* Если s начинается с "ПВЗ " - Например в адресе передана строка "ПВЗ На Ленинском проспекте", то искать будем филиал с названием "На Ленинском проспекте" который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. * Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса. Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''
'''SetIndexLength(Length) ''' – Устанавливает длину почтового индекса. По-умолчанию – 6. '''GetIndex(Address)''' – Возвращает почтовый индекс из адреса. '''GetStreet(Address)''' - Возвращает улицу до первой запятой. '''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов. '''GetKurierByStation(station, Mass, Cash, Date_Putn)''' '''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию "a"
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег "{break_off}" для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.
== Объект TINIFile ==
Функции:
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку.
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.
== Объект TSMS ==
Функции:
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'sms16SMSManager', 'mirsmsf1sms', 'megatelBitCall', 'websmsmirsmsGET', 'epochtaAMD'и другие, либо можно указать числовые значения номера протокола, от 1 до <rspoiler text="20">Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS</rspoiler> соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы "Value".
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID(для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями. ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON с ответами абонента на заданные вопросы (в зависимости от сценария) Log - Возвращает последний HTTP запрос и ответ от сервера смс.
== Объект TXML ==
Reset – Делает текущим корневой элемент, возвращает его значение.
== Объект TJSON ==
Предназачен для парсинга JSON-данных.
Функции:
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.
NodeValue – Возвращает значение текущего элемента.
NodeName – Возвращает имя текущего элемента.
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.
ChildrenCount – Возвращает количество дочерних элементов.
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.
Reset – Делает текущим корневой элемент, возвращает его значение.
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)
==Объект TZip==
Предназначен для работы с Zip архивом.
SetZip(s) - Загружает архив в объект из строки s;
GetZip - Возвращает архив в виде строки;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath. -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;
LoadFromFile(path) - Загружает архив из файла path;
SaveToFile(path) - Сохраняет архив в файл path;
Count - Возвращает кол-во файлов в архиве;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.
==Объект TBase==
'''Функции общего назначения''': '''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт "Дополнительных возможностей". Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал "OK" в диалоговом окне. '''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов. '''PrintSticker(Codes, [ToBoxes=False])''' '''GetItemByName(Name)''' '''GetA4Printer''' - возвращает имя принтера выбранного для печати документов
'''GetActiveForm''' - возвращает код активной формы в программе, где происходит сканирование. '''Список интерфейсов''': 0 - неопределенный; 1 - прием корреспонденции на склад; 2 - АПД; 3 - комплектация адресов (ShelfingForm); 4 - доска приема; 9 - вкладка «Манифесты»; 10 - Инвентаризация корреспонденции; 11 - АПК; 12 - вкладка «Адреса»; 13 - вкладка «Выдача»; 14 - вкладка «Склад». '''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права. '''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета')); '''Функции, работающие только в импорте БД из эксель:'''
ReplaceAddress
GetItemByCode- Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.
GetPrice
GetNewNumber- используется при импорте реестра, возвращает номер конверта в загружаемом заказе GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места Zakaz - возвращает номер заказа куда происходит импорт реестра addresscode - используется при импорте реестра, код созданного адреса Source - код заказчика ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне "Импорт БД из Excel". == Объект TFieldObject ==Объект для доступа к записям, используется в картах и доп.услугах. _GETTABLEINFO - возвращает данные о полях и примеры данных объекта. == Объект TMessage ==Объект используется для скриптовой обработки письма в [https://wiki.courierexe.ru/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8#.D0.98.D0.BC.D0.BF.D0.BE.D1.80.D1.82_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85| заданиях импорта данных]. В себе содержит текст письма в очищенном формате и оригинальном формате HTML, отправитель письма, тему письма, дата получения и список прикрепленных файлов. '''Message.Text''' - возвращает очищенный от HTML-тегов текст письма. '''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами. '''Message.Sender''' - возвращает email-адрес отправителя письма.
== Применение языка формул ==
==== Импорт БД из Excel ====
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :<br>
*ZakazRecord.userfields - пользовательские поля заказа;
*ZakazRecord.Clients - данные таблицы clients;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.
==== Прайс лист клиента ====
''В случае наличия подстроки "Аренда" в адресе заменяет штатное ценообразование на 1500 рублей''
Объект AddressRecord может предоставить доступ к связанным таблицам :
* addressrecord.boxes
* addressrecord.packages
* addressrecord.clients
* addressrecord.price
* addressrecord.advprice
* addressrecord.userfields
* addressrecord.addressfld
* addressrecord.clients.userfields
* addressrecord.price.userfields
* addressrecord.zakaz
* addressrecord.zakaz.userfields
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.
Пример:
set($value1, 0); set($value2, 0);
while(AddressRecord.userfields._EOF=0,
if(AddressRecord.userfields.varCode=1,
set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');
if(AddressRecord.userfields.varCode=2,
set($value2, AddressRecord.userFields.VarValue), ''''''');
AddressRecord.userFields._Next;
);
int($value1) + int($value2)
Пример делающий тоже самое что и выше но через поиск Locate:
set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));
set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));
$value1 + $value2
В скрипте доступны переменные:
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);
«$PriceCode» - код прайса;
«$CurrentPriceConf» - код услуги;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.
Пример
if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)
''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.
Пример, отключение услуги база:
addressrecord.advprice._Set('priceconf', 1, 'active', 'F')
priceconf - поле где записан код услуги;
1 - услуга База;
active - поле показывающее включение услуги.
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.
==== Зарплата курьеров ====
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff» позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание). Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.
=== Планировщик ===
Все объекты создаются с пустыми именами.
=== Репликатор ===
==История изменений==
=== Недавние изменения ===
{|
||'''Добавлено:'''
|В объект TExcel добавлен метод ColumnDelete.
|-
||'''Добавлено:'''
|В объект TBaseUtils добавлена функция InsertFirmAtt.
|-
||'''Добавлено:'''
||В объект TExcel добавлен метод Align.
|-
||'''Добавлено:'''
|Функция CheckEan
|-
||'''Добавлено:'''
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns
|-
||'''Добавлено:'''
|В объект TSMS добавлен метод Log.
|-
||'''Добавлено:'''
|Добавлена функция Money.
|-
||'''Добавлено:'''
|В объект TBaseUtils добавлена функция ValutaSign.
|-
||'''Добавлено:'''
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.
|-
||'''Добавлено:'''
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.
|-
||'''Добавлено:'''
|Функция DownloadAttachment
|-
||'''Добавлено:'''
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.
|-
||'''Добавлено:'''
|В объект TPicture добавлена функция AsString.
|-
||'''Добавлено:'''
|В объект TPicture добавлена функция SetSize.
|-
||'''Добавлено:'''
|В объект TADO добавлена функция ParseForIn.
|-
||'''Изменено:'''
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.
|-
||'''Добавлено:'''
|В объект TBaseUtils функция CalcAddressPrice
|-
||'''Изменено:'''
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.
|-
||'''Добавлено:'''
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.
|-
||'''Добавлено:'''
|В объект TBaseUtils функция SendToMeaSoft
|-
||'''Добавлено:'''
|В объект TBaseUtils функция RecalcSpecialSMA
|-
||'''Добавлено:'''
|Новая функция Reverse
|}
=== Версия 849 22.02.2018 ===
{|
||'''Добавлено:'''
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName
|-
||'''Добавлено:'''
|В объекте TBase добавлена функция GetNewPackagePos
|-
||'''Добавлено:'''
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName
|-
||'''Добавлено:'''
|В объект TBase добавлена функция CalcAgentPrice
|-
||'''Добавлено:'''
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery
|-
||'''Изменено:'''
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate
|-
||'''Добавлено:'''
|В объект TBaseUtils добавлена функция CreateSpecialSMA
|-
||'''Добавлено:'''
|Функция SignatureUrl
|-
||'''Добавлено:'''
|В объект TPicture добавлена функция LoadFromStr.
|-
||'''Добавлено:'''
|В объект TCanvas добавлена функция SetPen.
|-
||'''Добавлено:'''
|В объект TCanvas добавлена функция SetBrush.
|-
||'''Добавлено:'''
|В объект TPicture добавлена поддержка чтения в формате PNG.
|-
||'''Добавлено:'''
|В функцию TCanvas.DrawPic параметр Mode
|-
||'''Добавлено:'''
|Свойство TPicture.Canvas
|-
||'''Добавлено:'''
|Функция DeleteFile
|}
=== Версия 758 29.03.2017 ===
{|
||'''Добавлено:'''
|Функция GetPolygonByAddress
|-
||'''Добавлено:'''
|Функция ParamsCount
|-
||'''Добавлено:'''
|Объект TZip
|-
||'''Изменено:'''
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.
|-
||'''Добавлено:'''
|Параметр text в функцию Cell объекта TExcel
|-
||'''Добавлено:'''
|Функция UrlEncode
|-
||'''Добавлено:'''
|Функция IncDay теперь может принимать параметр count
|-
||'''Добавлено:'''
|Функции FtpGet, FtpPut, TTable.SetCell()
|}
=== Версия 452 26.02.2014 ===
{|
||'''Добавлено:'''
|Функция Time
|-
||'''Добавлено:'''
|Функция FixedIntToStr
|-
||'''Добавлено:'''
|Функция TimePeriod
|'''Добавлено:'''
|В пользовательские отчеты добавлен тип "FILESTR"
|-
|'''Добавлено:'''
|Расширены возможности объекта addressrecord в формулах тарифов
|}