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.
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. Содержит подробную информацию по запросу и ответу.
== Объект 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)
'''''Копи-паст'''''
Copy(x1, y1, x2, y2) - Копирует в буфер экселя
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования: Copy - PasteStyle)
'''''Изображения'''''
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.
'''''Вывод'''''
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.
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)
|-
|RecNo
|Возвращает номер текущей записи.''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''
|-
|EOF
|-
|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 (если есть). '''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется). '''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col. '''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему '''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|"Настройка" - "Параметры"]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] "CL" ("Текущий филиал"). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try. '''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans, рекомендуется использовать с функцией Try. '''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя. '''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации) Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. '''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel. '''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал. '''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery. '''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты. Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку. '''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен "code". Пример:GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=<nowiki>''</nowiki>), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель). '''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен "code". Пример:GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон. '''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town. '''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.В случае ошибки возвращает Null. Пример:<br>Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));<br>Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));<br>Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397)); '''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1) '''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: "kol_vo" - принять все места, "getKol_vo+1" - принять еще одно место, "число" - сделать количество принятых мест равным указанному числу. '''CalcClientCnt(client_code, date, is_intown [, date_put=CurrDate(), skipajust=false])''' - функция расчета количество доставленных корреспонденций у клиента с кодом client_code за предыдущий месяц от даты date (Или за текущий месяц, подробнее смотри переменную UseCurrentMonthCount) среди внутригородских (is_intown = true) либо междугородних (is_intown = false) корреспонденций, date_put - дата доставки (для альтернативного способа подсчета, включаемого переменной UseDatePutForCalcCnt), skipajust - не учитывать принудительно введенные количества (таблица priceclientadjust типы записей 0 и 1). '''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. Описание параметров: *ds - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов "dataset._self". Описание некоторых полей датасета: pmoney - процент от суммы; pmoneycard - процент от суммы при оплате картой; pricecode - код прайса (таблица Price) ; distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области); region - признак области при включенном едином районировании; distareaFrom и regionFrom - аналог distarea, region только для отправителя; pcncode - код записи таблицы pricecnt "количество от"; Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму. Запрос содержит поля таблицы price. *addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)*type - тип корреспонденции;*mode - режим доставки;*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга "ожидание");*mass - масса отправления; *rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга "процент от суммы");*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга "процент от объявленной стоимости");*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;*forward - направление доставки: true - туда; false - обратно;*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);*TownFrom - код города отправителя;*TownTo - код города получателя. В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше. Для направления "туда", Функция GetBasePrice вызывается через доп. услугу "База" (при включенных доп. услугах), для направления "Обратно" всегда вызывается напрямую (т.к. доп. услуги работают только в для направления "туда").На расчет этой функции влияют следующие переменные: "Финансы" -> "Расчет стоимости по адресу", "Финансы" -> "Зона клиента по умолчанию", "Финансы" -> "Подсчет кол-ва отправлений за месяц". '''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента. '''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. Когда включено районирование по карте, необходим второй параметр "town" - код города в котором нужно искать адрес. Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес. '''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.
'''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 ==
Функции:
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 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 ==
ChildrenCount – Возвращает количество дочерних элементов.
ChildNodeValue (V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.
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''' - возвращает имя принтера выбранного для печати документов '''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров '''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку
'''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-адрес отправителя письма. '''Message.AttachmentsCount''' - возвращает количество вложенных файлов.
== Применение языка формул ==
Все объекты создаются с пустыми именами.
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.
==== Заполнение шаблонов печатных форм ====
==== Импорт БД из Excel ====
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :<br>
*ZakazRecord.userfields - пользовательские поля заказа;
*ZakazRecord.Clients - данные таблицы clients;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.
==== Прайс лист клиента ====
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления "Туда" и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить ";", иначе скрипт вернет 0!
Например:
if(int(AddressRecord.Time_Put_Max)>19, 100, 0)
''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''
if(pos(AddressRecord.Address, 'Аренда')>0,
set($FormulaReplace, 1);
1500
, 0)
''В случае наличия подстроки "Аренда" в адресе заменяет штатное ценообразование на 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
|-
|'''Добавлено:'''
|В интерпретатор добавлена функция приёма смс - ReceiveSMS
|-
|'''Добавлено:'''
|Функция STR2UTF
|-
|'''Добавлено:'''
|Функция SAVETOFILE
|-
|'''Добавлено:'''
|Функция TExcel.SetSheetName
|-
|'''Добавлено:'''
|В пользовательские отчеты добавлен тип "FILESTR"
|-
|'''Добавлено:'''
|Расширены возможности объекта addressrecord в формулах тарифов
|}