Изменения

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

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

33 323 байта добавлено, во вторник в 21:17
Функциональность базового объекта
== Основные положения ==
В систему «Курьерская служба 2008» «MEASOFT» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов.
Как интерпретатор приводит типы:
=== Функциональность базового объекта ===
'''SET($a, a) ''' – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.
'''IF(a,b,c) ''' или '''IF(a,b) ''' – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.
'''WHILE(a, b) ''' – Оператор цикла. Выполняет b пока a истинно:
set($i, 10);
set($sum, 0);
Результат – 55
'''FOR($a, b, c, d) ''' – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:
set($sum, 0);
for($i, 1, 10, set($sum, $sum+$i));
Результат – 55
'''NEW(ClassName, InstanceName) ''' – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.
'''FREE(InstanceName) ''' – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.
'''ShowObjects ''' – Возвращает список созданных объектов – названия классов и имена.
'''ERROR(message) ''' – Вызывает ошибку с текстом message.
'''SHOWMESSAGE(message) ''' – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.
'''SimpleAskUser(Message) ''' – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если пользователь нажал кнопку «Да», иначе – 0.
'''TRY(a) ''' – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).
'''REM(….) ''' – Код в скобках игнорируется (комментарий).
'''EXEC(FileName, Params, Wait, WindowState) ''' – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:
0 - SW_HIDE
1 - SW_SHOWNORMAL (по-умолчанию)
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.
 
'''CASE''' - Оператор множественного выбора. Позволяет выполнить одно из нескольких действий в зависимости от условий. Синтаксис:
<source>
case(
when(условие1, действие1);
when(условие2, действие2);
...
else(действие_по_умолчанию);
);
</source>
 
Пример использования:
<source>
 
set($a, 10);
set($b, 50);
 
showmessage(
case(
when($a < 5, 50);
when($a < 10, 100);
when($a < 250, 200);
else($a*$b);
)
);
</source>
 
'''AttachDebugger''' - Команда позволяет подключить открытый [[Отладчик_встроенных_скриптов]] к текущему скрипту. Команда AttachDebugger должна быть '''первой командой''' в скрипте. Добавьте её в самое начало скрипта:
 
<source lang="json">
<?>
AttachDebugger;
set($a, 10);
set($b, 20);
set($sum, $a + $b);
showmessage($sum);
</source>
 
'''Как работает:'''
# При выполнении команды AttachDebugger скрипт останавливается.
# Отладчик автоматически подключается к выполняющемуся скрипту.
# Текст скрипта загружается в редактор отладчика.
# Можно ставить точки останова, просматривать переменные и продолжать отладку.
 
'''Важно:'''
* Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды AttachDebugger.
* Если режим отслеживания не включён, команда `AttachDebugger` игнорируется.
* В режиме отслеживания может работать только один отладчик.
* Команда AttachDebugger должна быть первой командой в скрипте.
=== Строковые функции ===
'''UpCase(s) ''' – возвращает строку s в верхнем регистре. '''LCase(s)''' – возвращает строку s в нижнем регистре. '''Len(s)''' – возвращает количество символов в строке s.
LCase'''Pos(s, substr [,start]) ''' – возвращает номер первого символа первого включения подстроки substr в строку s в нижнем регистре, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.
Len'''Param(s, i) ''' – возвращает количество символов в строке i-й элемент строки s, разделенной запятыми на элементы.
Pos'''ParamsCount(s, substr) ''' - возвращает номер первого символа первого включения подстроки substr в строку количество элементов строки s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к региструразделенной запятыми на элементы.
Param'''SetParam(s, p, i) ''' возвращает заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.
ParamsCount'''Left(s, i [,full] ) - ''' – возвращает количество элементов i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, разделенной запятыми на элементыпо умолчанию выключен.
Left'''Mid(s, i [,full] j) ''' - возвращает i первых символов строки подстроку из s. Параметр начиная с i, может быть строкой, тогда он считается разделителем символа и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.длиной j символов
Mid'''Right(s, i[, jfull]) - ''' – возвращает подстроку из i последних символов строки s начиная . Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i символа и длиной j символовничего не нашли, параметр не обязательный, по умолчанию выключен.
Right'''Reverse(s, i [,full]) ''' - возвращает i последних символов строки строку sзадом-наперед. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель Полезно например для поиска с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключенфункций Pos().
Reverse'''Char(si) - ''' – возвращает строку s задом-наперед. Полезно например для поиска символ с конца функций Pos()кодом i.
Char'''Ord(is) ''' – возвращает символ с кодом iкод первого символа строки s.
Ord'''Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) ''' - возвращает код первого символа строки строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.
Replace'''RemSpace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - ''' – возвращает строку сроку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска без начальных и замены всегда должны быть в паре конечных запятых и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметрпробелов, по умолчанию включена также начальных точек.
RemSpace'''SumStr(sf [, captions, language]) ''' возвращает сроку s без начальных и конечных запятых и пробеловВозвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в "Справочники"-"Статусы"-"32 Валюты", в разделе "Дополнительная информация"). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, а также начальных точекиспользуются региональные настройки в переменных.
SumStr'''NumToStrSimple(f [, captions, language]) ''' – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением без валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в "Справочники"-"Статусы"-"32 Валюты", в разделе "Дополнительная информация"). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменныхПараметры идентичны функции SUMSTR.
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валютыFullNameToShort(Name)'''. Параметры идентичны функции SUMSTR– Возвращает фамилию и инициалы по полному ФИО Name.
FullNameToShort'''MonthName1(Namem) ''' – Возвращает фамилию и инициалы по полному ФИО Nameимя месяца с номером m с большой буквы на русском языке в именительном падеже.
MonthName1'''MonthName2(m) ''' – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном родительном падеже.
MonthName2'''StrForXML(ms) – Возвращает имя месяца с номером m с большой буквы на русском языке ''' - Подготавливает строку к парсингу как xml: Если находит в родительном падежестроке подстроку "UTF-8" - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.
StrForXML'''FixedIntToStr(si, len[, char]) ''' - Возвращает целое число i дополненное слева символами char (по-умолчанию - Подготавливает строку к парсингу как xml: Если находит в строке подстроку "UTF-80" - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается) до длины len.
FixedIntToStr'''Translate(iformat, len[param1, charparam2, ...]) ''' - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - Возвращает целое строка и число i дополненное слева символами char (по-умолчанию - "0") до длины lenсоответственно.
Translate'''ExtractFileName(format, [param1, param2, ...]FilePath) ''' - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственновозвращает имя файла с расширением из полного пути к файлу FilePath.
====Функции перекодировки====
'''DecodeStr(s, charset) ''' - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.
'''EncodeStr(s, charset) ''' - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.
====Транслитерация====
'''Translit(s) ''' - транслитерация строки русского текста s латиницей
'''UnTranslit(s) ''' - транслитерация строки s с латиницы на русский.
==== Экранирование ====
'''QUOTEDSTR(s) ''' – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «"» и «'» экранируются квотирующим символом, а символы #0, #10 и #13 заменяются на \0, \n и \r соответственно.  '''SQLFloat(f)''' – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка. '''FormatTextXML(s)''' - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.
FormatTextXML'''FormatTextJSON(s) ''' - квотирует переводит строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксисаформат JSON, экранирует служебные символы.
FormatTextJSON'''FormatTextBlob(s) ''' - переводит строка s содержит файл, функция перекодирует переданную строку в формат JSONбайты, экранирует служебные символыиспользуется для заполнения полей формата blob.
====Хеширование ====
'''HMACHash256(key, text) ''' - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение
'''MD5Hash(text) ''' - создаёт хеш по алгоритму MD5
'''SignatureUrl(url) ''' - Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.
=== Функции работы с датой и временем ===
'''CurrTime ''' – возвращает текущее время '''CurrDate''' – возвращает текущую дату
CurrDate – возвращает текущую дату'''CurrMillisecond''' - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.
CurrMillisecond '''Today''' - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интерваловвозвращает текущую дату в числовом формате.
Today - '''Day(dt)''' – возвращает текущую дату в числовом форматедень месяца даты dt.
Day'''Month(dt) ''' – возвращает день месяца месяц года даты dt.
Month'''Year(dt) ''' – возвращает месяц года год даты dt.
Year'''FirstDayOfMonth(dt) ''' возвращает год Возвращает первый день месяца в формате DD.MM.YYYY для даты dtв формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );'''Полужирное начертание''''''LastDayOfMonth(dt)''' – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );
'''DaysInMonth(month, year) ''' – Возвращает количество дней в указанном месяце.
'''IncDay(dt, [count=1]) ''' – Возвращает дату, увеличенную на count дней.
'''SQLDate(dt) ''' – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».
'''SQLDateToDate(dt) ''' – Переводит дату из SQL-формата в обычный.
'''DAYSBETWEEN(dt1, dt2) ''' – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.
'''TimeBetween(t1, t2) ''' - Возвращает количество минут между временем t1 и t2. Если t1 > t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате "HH:MM", так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.
'''WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) ''' - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0). В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки
'''TimePeriod(time1, time2) ''' - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: "time1 - time2" , "С time1" , "ДО time2".
'''StrDateToFloat(s, [time=false]) ''' - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате "DD.MM.YYYY", а время "HH:NN". Если строку перевести не удалось возвращает 0
'''IsAWorkDay(dt) ''' - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.
'''IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) ''' - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки
'''Sleep'''(n) - Задержка выполнения на n миллисекунд.
=== Функции приведения типов ===
'''INT(v) ''' – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.
'''FLOAT(v) ''' – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).
'''STR(v) ''' – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.
'''Date(v) ''' – возвращает дату, либо пустую строку, если не удается конвертировать v в дату
'''Time(v) ''' – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.
=== Математические функции ===
'''ROUNDUP(f) ''' – округляет число f до ближайшего большего по модулю целого числа.
'''ROUNDDN(f) ''' – округляет число f до ближайшего меньшего по модулю целого числа. '''Money(f, CouldBeEmpty, ZeroFill, MakeSpace)''' - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001 на пустую строку. ZeroFill - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.''Подсказка: для простого округления используется функция int()''
Money'''Abs(f, CouldBeEmpty, ZeroFill, MakeSpace) ''' - Округляет число возвращает модуль числа f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001 на пустую строку. ZeroFill - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.
''Подсказка: для простого округления используется функция int'Mod(x, y)''' - возвращает остаток от деления целочисленного числа x на целочисленное число y.
=== Константы ===
'''Null ''' – Возвращает пустое значение. Да, True, Нет, False – константы, соответствующие булевым значениям.
'''Да''', '''True''', '''Нет''', '''False''' – константы, соответствующие булевым значениям.
=== Прочие функции ===
 
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.
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, возвращает в виде строки. При ошибке чтения вызывает ошибку.
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 параметр - добавляет в заголовок SOAPActionназвание заголовка, 2 параметр - Authorizationзначение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундахмиллисекундах.
Функция возвращает ответ сервера. <br>
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить "Data=".
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.
== Объект TExcel ==LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS ExcelLastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.
Функции:== Объект TExcel ==
FileName – Возвращает имя текущего файлаПредназначен для доступа к данным документов MS ExcelSetFileName(aFileName) – Задает значение свойства FileNameТребует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel.
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.
OpenFile(aFileName) – Выполняет функции SetFileName и Open. '''''Ввод данных'''''
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа "-" не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.
MyDB.Open('select * from kurier');
xl.SetVisible(true);
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) - Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.
AlignOpenFile(x1, y1, x2, y2 [,HAlign, VAlign]aFileName) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу)Выполняет функции SetFileName и Open.
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителяFileName – Возвращает имя текущего файла.
SetBordersSetFileName(x1, y1, x2, y2aFileName) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой областиЗадает значение свойства FileName.
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожаетсяOpen - Открывает файл с именем, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с нимзаданным свойством FileName. DoNotDestroy(true) отключает уничтожение приложенияЕсли имя файла не задано - создает чистую книгу.
SetVisible(b) Close Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо)Закрывает текущий файл.
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.'''''Ячейки'''''
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.
SetSheet(No) – Устанавливает номер текущего листа.
SetSheetName(Name) - Устанавливает название текущего листа'''''Строки''''' RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.
Close SetRecNo(aRecNo) Закрывает текущий файлУстанавливает значение свойства RecNo.
First – Делает первую запись листа текущей.
RecordCount – Возвращает количество строк в листе.
ColCount RowAutoFit([y1, y2]) - Возвращает количество столбцов Устанавливает автоматическую высоту строк. Аргументы y1 и y2 необязательны и если не указаны, то процедура будет выполнена для всей страницы, в листеином случае только для строк от y1 до y2.
SheetsCount SetRowHeight(r, h[, cnt]) Возвращает количество листов Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в книге. AutoFit – Устанавливает автоматическую ширину столбцовh пикселей.
RowAutoFit - Устанавливает автоматическую GetRowHeight(r) – Возвращает высоту строкстроки r в пикселях.
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 пикселей.
 
GetColWidth (c) – Возвращает ширину столбца c в пикселях.
 
 
'''''Листы'''''
 
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.
 
SetSheetName(Name) - Устанавливает название текущего листа.
 
SheetsCount – Возвращает количество листов в книге.
 
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).
SheetDelete(i) - Удаляет лист с номером i.
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.
SetColWidth '''''Форматирование''''' Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу). WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true. NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться cобязательными 2 знаками после десятичного разделителя. SetBorders(x1, wy1, x2, y2) – Устанавливает ширину столбца c границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области. SetFont(Font[, x1, y1[, x2, y2]]) - Устанавливает шрифт Font для ячеек диапазона. Можно указать координаты только одной ячейки, можно - вообще не указать, тогда будет использован последний выделенный диапазон. Шрифт задается как обычно: 'Arial, 16, T, T, T', порядок параметров: Имя шрифта, размер, жирное начертание, курсивное начертание, одиночное подчеркивание. Если параметры не заданы, то у текущего шрифта они меняться не будут. Примеры: SetFont('Arial, 10, T, F, F', 1,1) - в ячейке A1 будет установлен шрифт Arial жирным начертанием (не курсив и без подчеркивания). SetFont(', , , T, F', 2,1) - в w символовячейке B1 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было).  SaveValuesOnly - убирает формулы на текущей странице и оставляет лишь их результативные статичные значения.
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.'''''Цвета'''''
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color - целое значение (RGB)
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке с координатами [Row,Col]
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.
SetOrientation(value) '''''Копи- Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.паст'''''
Copy(x1, y1, x2, y2) - Копирует в буфер экселя
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования: Copy - PasteStyle)
SetFont(Font[, x1, y1[, x2, y2]]) - Устанавливает шрифт Font для ячеек диапазона. Можно указать координаты только одной ячейки, можно - вообще не указать, тогда будет использован последний выделенный диапазон. Шрифт задается как обычно: 'Arial, 16, T, T, T', порядок параметров: Имя шрифта, размер, жирное начертание, курсивное начертание, одиночное подчеркивание. Если параметры не заданы, то у текущего шрифта они меняться не будут. Примеры: SetFont('Arial, 10, T, F, F', 1,1) - в ячейке A1 будет установлен шрифт Arial жирным начертанием (не курсив и без подчеркивания). SetFont(', , , T, FИзображения''''', 2,1) - в ячейке B1 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было).
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 - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.
PrintOutSetOrientation([copies]value) - Печатает текущий лист на принтере Устанавливает ориентацию страницы. True (по -умолчанию. Параметр) - альбомная (ландшафтная), copies Ложь - количество копий, по умолчанию равен 1портретная.
CopySheetAfterPrintOut([SheetFrom[, SheetAfter]copies]) - Копирует Печатает текущий лист SheetFrom (на принтере поумолчанию. Параметр copies -количество копий, по умолчанию равен 1. Save(filename) - текущий)Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, создавая новый лист после листа SheetAfter в других проектах - вызовет ошибку "Файл уже существует". SetVisible(поb) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию - совпадает – false (не видимо). DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с копируемымним. DoNotDestroy(true)отключает уничтожение приложения.
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку "Файл уже существует".
'''''Пример использования:'''''
new('TExcel', 'myxl');
Функции:
{|class="wikitable"
!Функция
!Описание
|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
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.
 
GetDefaultPrinter - Возвращает имя текущего активного принтера.
 
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.
 
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.
== Объект TCanvas ==
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.
 
 
 
 
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ "[" и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.
== Объект TBaseUtils ==
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008»«MEASOFT». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.
Функции:
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|"Настройка" - "Параметры"]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] "CL" ("Текущий филиал"). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans, рекомендуется использовать с функцией Try.
'''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 вернет ошибку.
'''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''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки.
Для направления "туда", Функция GetBasePrice вызывается через доп. услугу "База" (при включенных доп. услугах), для направления "Обратно" всегда вызывается напрямую (т.к. доп. услуги работают только в для направления "туда").
На расчет этой функции влияют следующие переменные: "Финансы" -> "Расчет стоимости по адресу", "Финансы" -> "Зона клиента по умолчанию", "Финансы" -> "Подсчет кол-ва отправлений за месяц".
 
'''CalcTownPrice''' - возвращает базовую стоимость междугородней доставки, посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов, типа, срочности, массы, расстояния.
Описание параметров:
 
*ds - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов "dataset.self".
 
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)
*tp - тип корреспонденции;
*mode - режим доставки;
*mass - масса отправления;
*TownFrom - код города отправителя;
*TownTo - код города получателя.
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).
'''FromEmailStr''' - строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки. '''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber,Print,[printer]) - Выполняет указанную печатную форму в объекте excel. Excel объект можно не указывать, тогда функция сама создаст объект экселя и разрушит его, полезно когда книгу нужно распечатать или отправить по email (на листе данных в ячейке 1,1 укажите ключевое слово email). Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Print - печатает книгу на принтере, после печати объект excel разрушается, при использовании параметра не указываете объект excel. Printer - имя принтера, на котором печатать (по умолчанию пустая строка, что означает "печатать на принтере по умолчанию"). Например:
new('TExcel', 'excel');
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию "a"
 
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег "{break_off}" для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.
 
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.
 
'''WriteOut(DocId, ItemId, Date, Cnt[, BC])''' – производит списание товара со склада. DocId - код (docs.code) документа списания, ItemId - код товара (item.code), Date - дата операции, Cnt - количество списываемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер. Если указан BC, то параметр ItemId игнорируется и поиск номенклатуры происходит исключительно по штрих-коду. В случае успеха, функция возвращает строку вида: код номенклатуры, списанное кол-во.
 
'''IncomePurch(DocId, ItemId, Date, Cnt[, BC, Location = CurrentLocation])''' – производит приход товара на склад. DocId - код (docs.code) приходной накладной, ItemId - код товара (item.code), Date - дата операции, Cnt - количество приходуемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер, Location - код склада (store.code). В случае успеха, функция возвращает строку вида: код номенклатуры, введенное кол-во.
 
'''CreateLedgerDoc(Date, Client, UserCode, Type[, ExtNumber, Message])''' - создает складской документ и возвращает код этого документа. Date - дата документа. Client - код клиента. UserCode - код пользователя, создавшего документ. Type - тип документа (statetype = 13). ExtNumber - номер у поставщика для документов прихода и расхода. Message - комментарий к документу. Последние два аргумента не обязательные и могут быть пустыми.
== Объект TINIFile ==
GetZip - Возвращает архив в виде строки;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath. -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;
==Объект 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])''' '''PrintBlanc(Codes, BlancNumber)''' - печатать форму из раздела "Заполнить бланк". Codes - коды корреспонденций, BlancNumber - номер формы из раздела "Бланки для корреспонденции" (3) '''GetItemByName(Name)''' '''GetA4Printer''' - возвращает имя принтера выбранного для печати документов '''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров '''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку '''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток.  '''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.
execsimplescript'''GetActiveForm(Caption, Text[SkipFormName]) ''' - Выполняет скрипт "Дополнительных возможностей"возвращает код активной формы в программе где происходит сканирование. Возвращаемые значенияSkipFormName - не обязательны параметр, введенные пользователем устанавливает в переменные $scriptvar1имя формы которую нужно пропустить при определении интерфейса..$scriptvarN, Значения кодов списочных переменных '''Список интерфейсов''': 0 - неопределенный; 1 - прием корреспонденции на склад; 2 - АПД; 3 - комплектация адресов (ShelfingForm); 4 - доска приема; 9 - вкладка «Манифесты»; 10 - Инвентаризация корреспонденции; 11 - АПК; 12 - вкладка «Адреса»; 13 - вкладка «Выдача»; 14 - вкладка «Склад»; 15 - Список номенклатуры; 16 - Инвентаризация склада; 17 - Приходная накладная; 18 - Списание товара; 19 - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал "OK" в диалоговом окнеКарточка корреспонденции.
FillAdvPriceReport'''AddAddressScanLog(Excel, AddressCodesCode[, StartLineStrBarCode, StartColIsManual, [ShowSumPriceFromInterface,InsertColumnsExtraInfo]) ''' - добавляет отчёт по дополнительным услугамсобытие сканирование для корреспонденции с кодом Code. В AddressCodes Необязательные параметры: StrBarCode - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строкусканируемый ШК корреспонденции (по умолчанию пустой), то можно указать код адреса IsManual -1000. StartLineгалка ручного сканирования (по умолчанию false), StartCol FromInterface - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услугкод интерфейса сканирования (StateType=81, по умолчанию выключено. InsertColumns 0 - раздвинуть таблицу перед вставкой отчетанеопределенный), позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. Функция возвращает количество использованных столбцовExtraInfo - текстовый комментарий события.
PrintSticker'''RuleName(Codes, [ToBoxes=False]alias)''' - Выдает полный путь в дерева прав по псевдониму права.
GetItemByName'''ShowText(NameCaption:string, Value:string)''' - показывает пользователю окно с заголовком Caption и с многострочным полем со значением Value. Может быть полезен при отображении логов выполненной операции.
GetA4Printer '''ShowScanError(msg [, Speek, Color, Abort])''' - возвращает имя принтера выбранного для печати документоввыдает пользователю окно с текстом msg блокируя последующие действия сканирования. Если Speek - истинно, то сообщение проговаривается голосовым движком, по умолчанию выключено. Color - целочисленное число цвета, в который будет окрашен фон сообщения (по умолчанию = -1, стандартный). Abort - прервать выполнение скрипта, не показывая ошибку.
GetStickerPrinter '''CheckRule(alias)''' - возвращает имя принтера выбранного для печати стикеровфункция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));
'''GetKurierMoney(KurierCode, DateEnd, NonCash)''' - возвращает баланс курьера с кодом KurierCode на дату DateEnd. NonCash - булевый флаг, если истинно, то будет рассчитан безнальный баланс;
'''Функции, работающие только в импорте БД из эксель:'''
Source - код заказчика
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне "Импорт БД из Excel". == Объект TFieldObject ==Создается только автоматически. Объект для доступа к записям, используется в картах и дополнительных услугах (addressrecord) и событиях карточки корреспонденции (fieldlist). Методы объекта: '''_GetTableInfo''' - возвращает данные о полях и примеры данных объекта. '''_Self''' - возвращает ссылку на объект. '''_Set(fieldname, fieldvalue [, DoUpdateForm])''' - Если базовый объект строка. Устаналивает для поля fieldname значение fieldvalue. DoUpdateForm по уолчанию false, если указать true то обновление поля будет не только в объекте но и пользовательском интерфейсе. Обновление работает только в карточке корреспнденции для ограниченного набора полей: vlog, mode, type, date_put, time_put, message, kurier, state1. '''_Set(keyfield, keyvalue, filed, value)''' - Если базовый объект таблица (addressrecord.boxes). Работает перегруженная версия метода _set, cначала происходит поиск строки по ключу, далее меняется значение указанного столбца. keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Пример, отключение услуги база:  addressrecord.advprice._Set('priceconf', 1, 'active', 'F') priceconf - поле где записан код услуги; 1 - услуга База; active - поле показывающее включение услуги. == Объект 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''' - возвращает количество вложенных файлов. '''Message.DateTime''' - возвращает дату и время получения письма. '''Message.Subject''' - возвращает тему письма. '''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки. '''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number. == Объект TStringList ==Может использоваться для построчной обработки многостраничных файлов либо для организации текстовых данных. Номер строк начинается с 0. Имеет следующий функционал: '''Count''' - возвращает количество строк в списке. '''Add(Value:string)''' - добавляет значение Value в конец списка. '''SetText(Value:string)''' - устанавливает значение списка в значение Value. '''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number. '''Delete(Number:integer)''' - удаляет строку из списка в позиции Number. '''Clear''' - очищает элементы списка. '''LoadFromFile(Path:string)''' - загружает текстовый файл по пути Path. '''Strings(Number:integer)''' - возвращает строку с номером Number. '''SetString(Number:integer, Value:string)''' - устанавливает значение строки с номером Number в значение Value. '''Text''' - возвращает полный список строк в виде текста. '''CommaText([Quoted:boolean])''' - возвращает список значений через запятую. Если Quoted = true, то квотирует элементы списка. По умолчанию равен false. '''SetCommaText(Value: string)''' - разбивает значение Value на отдельные строки и кладет в список. Разделитель - запятые. '''IndexOf(Value:string)''' - ищет значение Value среди элементов списка и если находит, то возвращает номер строки. Возвращает -1 если значение не было найдено. '''Sorted(Value:boolean)''' - устанавливает флаг отсортированности списка в Value. Если Value = true, то сразу же его сортирует. По умолчанию Value = false. '''Exchange(Pos1:integer, Pos2:integer)''' - меняет элементы списка с позициями Pos1 и Pos2 местами.
RuleName'''Duplicates(aliasValue:integer) ''' - Выдает полный путь изменяет параметр управления дубликатами в дерева прав списке. Если Value = 0 (значение по псевдониму праваумолчанию), то список не реагирует на дубликаты. Если Value = 1, то список при добавлении будет игнорировать дубликаты. Если Value = 2, то список будет выдавать исключение, при добавлении дубликата в список.
'''ParamName(Number:integer[, Delimiter:string])''' - возвращает текст до первого знака разделителя Delimiter (по умолчанию "=") из строки с номером Number. Если разделителя в строке нет, то возвращает пустоту. '''ParamValue(Number:integer[, Delimiter:string])''' - возвращает текст после первого знака разделителя Delimiter (по умолчанию "=") из строки с номером Number. Если разделителя в строке нет, то возвращает всю строку. == Объект TFieldObject TFunc ==Объект для доступа к записямреализует создание и использование функций в скриптовом языке. Позволяет определять переиспользуемые блоки кода с параметрами.Важно учитывать, что внтури функции создается свой инстанс интерпретатора и от туда не доступны никакие переменные\объекты кроме переданных в функцию.  Основные методы: '''New'''(FuncName, Param1, Param2, ..., Body) — создание новой функции.Функция возвращает результат выполнения последней команды в теле функции. Аргументы:* `FuncName` — имя функции (строка)* `Param1, Param2, ...` — имена параметров функции (переменные начинаются с `$`, объекты — без префикса)* `Body` — тело функции (скрипт, выполняемый при вызове) '''FuncName'''(Arg1, Arg2, используется ...) — вызов созданной функции по имени. Если в картах объявлении была указана тип переменная, то и допподставлять в аргумент надо обязательно переменную. Будет передано значение этой переменной (переменные словарине поддерживаются!). Если был объявлен объект, то указатель на объект должен быть получен через метод '''_self'''. C функциями поддерживают работу следующие классы: TExcel, TDirectExcel, TCSVFile, TADO, TSelfADO, TPrinter, TCanvas, TPicture, TTable, TINIFile, TSMS, TXML, TJSON, TZip, TStringList, TBaseUtils, а также объект addressrecord (TFieldObject). Результатом работы функции может быть число или строка. Пример 1, обработка результатов функции:<source><?>new('TFunc', 'calc');calc.услугахnew('Sum', '$a', '$b', $a + $b); set($x, 10);set($y, 20);showmessage(calc.Sum($x, $y));</source>
_GETTABLEINFO - возвращает данные о полях и примеры данных Пример 2, передача объектав функцию:<source><?>new('TFunc', 'utils');utils.new('ProcessDB', 'dbConn', '$value', showmessage($value); dbConn.open('SELECT * FROM address limit 3 '); if(dbConn.recordcount > 0, showmessage('Найдено записей: ' + dbConn.recordcount); dbConn.first; while(dbConn.eof = 0, showmessage(dbConn.fieldbyname('code')); dbConn.next ) ,0));
new('TSelfADO', 'db');
utils.ProcessDB(db._self,'test!');
</source>
== Применение языка формул ==
'''в различных контекстах системы «Курьерская служба 2008» «MEASOFT» и сопутствующих проектах'''
=== Курьерская служба 2008 MEASOFT ===
«$PriceCode» - код прайса;
«$CurrentPriceConf» - код услуги;
«$BasePrice» - стоимость всех услуг с взведённой галкой "+ к Базовой"уровнем (pricelevel) меньше текущего.
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.
=== Недавние изменения ===
{|
||'''Добавлено:'''
|2025.0.0.539 Добавлена поддержка отладчика AttachDebugger
|-
||'''Добавлено:'''
|2025.0.0.534 Добавлена поддержка оператора CASE и класса TFunc
|-
|}
=== Версия 2021.0.0.57 от 18.06.2019 ===
{|
||'''Добавлено:'''
523
правки

Навигация