Изменения

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

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

8617 байт добавлено, 12:10, 30 апреля 2020
Функции работы с датой и временем
CurrDate – возвращает текущую дату
 
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.
Today - возвращает текущую дату в числовом формате.
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.
 
Sleep(n) - Задержка выполнения на n миллисекунд.
=== Функции приведения типов ===
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.
 
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001 на пустую строку. ZeroFill - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.
''Подсказка: для простого округления используется функция int()''
 
=== Константы ===
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.
 
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа "-" не выгружаются.
MyDB.Open('select * from kurier');
xl.LoadFromDB(MyDB.Self);
xl.DoNotDestroy(true);
xl.SetVisible(true);
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) - Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.
SheetDelete(i) - Удаляет лист с номером i.
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.
|-
|FillText(s)
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами "<?>" и ">". При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! В функции Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта. '' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем "dataset".
|-
|Query(Query)
|Self
|Возвращает указатель на подключение к БД для использования в других объектах.
|-
|ParseForIn([FieldName='code'])
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.
|}
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.
 
SetSize(Width, Height) - Устанавливает размер изображения.
 
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.
Width – Возвращает ширину изображения.
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''"1" - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид "тип штрих-кода, номер", например "7, 123" (без кавычек, конечно). В этом случае система сформирует штрих-код: "2700000001233". Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''"2" - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде "как есть". Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.
 
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.
 
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.
Tbl.LoadFromDB(MyDB.Self);
Tbl.SetBarcode(1, 1);
Tbl.SetUserHeader(
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);
* Если s начинается с "ПВЗ " - Например в адресе передана строка "ПВЗ На Ленинском проспекте", то искать будем филиал с названием "На Ленинском проспекте" который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал.
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.
 
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.
 
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''
'''TownByIndex(Index[, PriorityName])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).
'''TownByName(Name[,NotNeedCL=False, City=''0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NeedCL NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|"Настройка" - "Параметры"]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] "CL" ("Текущий филиал"). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификатор записи чека. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.
 
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans, рекомендуется использовать с функцией Try.
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.
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') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон. '''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mass, Mode, Tp[, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mass - масса отправления, Mode - режим срочности, tp - тип посылки (в текущей реализации не используется), count - тарифная сетку от указанного количества отправлений (по умолчанию 1)
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: "kol_vo" - принять все места, "getKol_vo+1" - принять еще одно место, "число" - сделать количество принятых мест равным указанному числу.
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависисмости зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки.
Описание параметров:
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:
new('TExcel', 'excel');
excel.SetVisible(true);
''Покажет эксель с выполненной печатной формой''
 
'''ValutaSign''' – Возвращает название валюты для суммы.
== Объект TINIFile ==
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдера BitCall, по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием).
 
Log - Возвращает последний HTTP запрос и ответ от сервера смс.
== Объект TXML ==
NodeName – Возвращает имя текущего элемента.
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.
ChildrenCount – Возвращает количество дочерних элементов.
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.
execsimplescript(Caption, Text) - Выполняет скрипт "Дополнительных возможностей". Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал "OK" в диалоговом окне.
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. Функция возвращает количество использованных столбцов.
PrintSticker(Codes)
GetItemByName(Name)
GetKurierByStation(station, Mass, Cash, Date_Putn)GetA4Printer - возвращает имя принтера выбранного для печати документов GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне "Импорт БД из Excel".
 
== Объект TFieldObject ==
Объект для доступа к записям, используется в картах и доп.услугах.
 
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.
 
== Применение языка формул ==
{|
||'''Добавлено:'''
|В объект функцию 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.

Навигация