<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://wiki.courierexe.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=OlegD</id>
		<title>Меасофт - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.courierexe.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=OlegD"/>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/OlegD"/>
		<updated>2026-05-17T09:46:14Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15896</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15896"/>
				<updated>2026-04-28T08:53:39Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TPicture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «MEASOFT» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
'''SET($a, a)''' – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
'''IF(a,b,c)''' или '''IF(a,b)'''  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
'''WHILE(a, b)''' – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
'''FOR($a, b, c, d)''' – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
'''NEW(ClassName, InstanceName)''' – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
'''FREE(InstanceName)''' – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
'''ShowObjects''' – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
'''ERROR(message)''' – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
'''SHOWMESSAGE(message)''' – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
'''SimpleAskUser(Message)''' – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
'''TRY(a)''' – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
'''REM(….)''' – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
'''EXEC(FileName, Params, Wait, WindowState)''' – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
'''CASE''' - Оператор множественного выбора. Позволяет выполнить одно из нескольких действий в зависимости от условий. Синтаксис:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  case(&lt;br /&gt;
    when(условие1, действие1);&lt;br /&gt;
    when(условие2, действие2);&lt;br /&gt;
    ...&lt;br /&gt;
    else(действие_по_умолчанию);&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set($a, 10);&lt;br /&gt;
set($b, 50);&lt;br /&gt;
&lt;br /&gt;
showmessage(&lt;br /&gt;
  case(&lt;br /&gt;
    when($a &amp;lt; 5, 50);&lt;br /&gt;
    when($a &amp;lt; 10, 100);&lt;br /&gt;
    when($a &amp;lt; 250, 200);&lt;br /&gt;
    else($a*$b);&lt;br /&gt;
  )  &lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AttachDebugger''' - Команда позволяет подключить открытый [[Отладчик_встроенных_скриптов]] к текущему скрипту. Команда AttachDebugger должна быть '''первой командой''' в скрипте. Добавьте её в самое начало скрипта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
AttachDebugger;&lt;br /&gt;
set($a, 10);&lt;br /&gt;
set($b, 20);&lt;br /&gt;
set($sum, $a + $b);&lt;br /&gt;
showmessage($sum);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Как работает:'''&lt;br /&gt;
# При выполнении команды AttachDebugger скрипт останавливается.&lt;br /&gt;
# Отладчик автоматически подключается к выполняющемуся скрипту.&lt;br /&gt;
# Текст скрипта загружается в редактор отладчика.&lt;br /&gt;
# Можно ставить точки останова, просматривать переменные и продолжать отладку.&lt;br /&gt;
&lt;br /&gt;
'''Важно:'''&lt;br /&gt;
* Отладчик должен быть в режиме отслеживания до того, как скрипт дойдёт до команды AttachDebugger.&lt;br /&gt;
* Если режим отслеживания не включён, команда `AttachDebugger` игнорируется.&lt;br /&gt;
* В режиме отслеживания может работать только один отладчик.&lt;br /&gt;
* Команда AttachDebugger должна быть первой командой в скрипте.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
'''UpCase(s)''' – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
'''LCase(s)''' – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
'''Len(s)''' – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
'''Pos(s, substr [,start])''' – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
'''Param(s, i)''' – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
'''ParamsCount(s)''' - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
'''SetParam(s, p, i)''' – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
'''Left(s, i [,full] )''' – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
'''Mid(s, i, j)''' - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
'''Right(s, i [,full])''' – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
'''Reverse(s)''' - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
'''Char(i)''' – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
'''Ord(s)''' – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
'''Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive])''' - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
'''RemSpace(s)''' – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
'''SumStr(f [, captions, language])''' – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
'''NumToStrSimple(f [, captions, language])''' – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
'''FullNameToShort(Name)''' – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
'''MonthName1(m)''' – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
'''MonthName2(m)''' – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
'''StrForXML(s)''' - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
'''FixedIntToStr(i, len[, char])''' - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
'''Translate(format, [param1, param2, ...])''' - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
'''ExtractFileName(FilePath)''' - возвращает имя файла с расширением из полного пути к файлу FilePath.&lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
'''DecodeStr(s, charset)''' - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
'''EncodeStr(s, charset)''' - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
'''Translit(s)''' - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
'''UnTranslit(s)''' - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
'''QUOTEDSTR(s)''' – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SQLFloat(f)''' – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
'''FormatTextXML(s)''' - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
'''FormatTextJSON(s)''' - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
'''FormatTextBlob(s)''' - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
'''HMACHash256(key, text)''' - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
'''MD5Hash(text)''' - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
'''SignatureUrl(url)''' -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
'''CurrTime''' – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
'''CurrDate''' – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
'''CurrMillisecond''' - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
'''Today''' - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
'''Day(dt)''' – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
'''Month(dt)''' – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
'''Year(dt)''' – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
'''FirstDayOfMonth(dt)''' – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
'''Полужирное начертание'''&lt;br /&gt;
'''LastDayOfMonth(dt)''' – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
'''DaysInMonth(month, year)''' – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
'''IncDay(dt, [count=1])''' – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
'''SQLDate(dt)''' – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
'''SQLDateToDate(dt)''' – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
'''DAYSBETWEEN(dt1, dt2)''' – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
'''TimeBetween(t1, t2)''' - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
'''WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1])''' - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
'''TimePeriod(time1, time2)''' - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''StrDateToFloat(s, [time=false])''' - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
'''IsAWorkDay(dt)''' - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
'''IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1])''' - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
'''Sleep'''(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
'''INT(v)''' – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
'''FLOAT(v)''' – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
'''STR(v)''' – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
'''Date(v)''' – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
'''Time(v)''' – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
'''ROUNDUP(f)''' – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
'''ROUNDDN(f)''' – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
'''Money(f, CouldBeEmpty, ZeroFill, MakeSpace)''' - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
'''Abs(f)''' - возвращает модуль числа f.&lt;br /&gt;
&lt;br /&gt;
'''Mod(x, y)''' - возвращает остаток от деления целочисленного числа x на целочисленное число y.&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Null''' – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
'''Да''', '''True''', '''Нет''', '''False''' – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit([y1, y2]) - Устанавливает автоматическую высоту строк. Аргументы y1 и y2 необязательны и если не указаны, то процедура будет выполнена для всей страницы, в ином случае только для строк от y1 до y2.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
GetRowHeight(r) – Возвращает высоту строки r в пикселях.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w пикселей.&lt;br /&gt;
&lt;br /&gt;
GetColWidth (c) – Возвращает ширину столбца c в пикселях.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
SaveValuesOnly - убирает формулы на текущей странице и оставляет лишь их результативные статичные значения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Crop - функция, которая вырезает часть изображения и оставляет только вырезанную часть. Есть две формы функции: Crop(X, Y, Width, Height) - вырезает прямоугольник шириной Width и высотой Height начиная с координат X, Y.&lt;br /&gt;
Crop([Brightness]) - вырезает прямоугольную часть изображения, где есть пиксели темнее фона (Brightness). Фон задается числом от 1 до 255, по умолчанию 255. Функция возвращает true, если операция прошла успешно или false,&lt;br /&gt;
если операцию выполнить невозможно.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «MEASOFT». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownPrice''' - возвращает базовую стоимость междугородней доставки, посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов, типа, срочности, массы, расстояния.&lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset.self&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*tp - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FromEmailStr''' - строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber,Print,[printer]) - Выполняет указанную печатную форму в объекте excel. Excel объект можно не указывать, тогда функция сама создаст объект экселя и разрушит его, полезно когда книгу &lt;br /&gt;
нужно распечатать или отправить по email (на листе данных в ячейке 1,1 укажите ключевое слово email). Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Print - печатает книгу на принтере, после печати объект excel разрушается, при использовании параметра не указываете объект excel. Printer - имя принтера, на котором печатать (по умолчанию пустая строка, что означает &amp;quot;печатать на принтере по умолчанию&amp;quot;). Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
'''WriteOut(DocId, ItemId, Date, Cnt[, BC])''' – производит списание товара со склада. DocId - код (docs.code) документа списания, ItemId - код товара (item.code), Date - дата операции, Cnt - количество списываемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер. Если указан BC, то параметр ItemId игнорируется и поиск номенклатуры происходит исключительно по штрих-коду. В случае успеха, функция возвращает строку вида: код номенклатуры, списанное кол-во.&lt;br /&gt;
&lt;br /&gt;
'''IncomePurch(DocId, ItemId, Date, Cnt[, BC, Location = CurrentLocation])''' – производит приход товара на склад. DocId - код (docs.code) приходной накладной, ItemId - код товара (item.code), Date - дата операции, Cnt - количество приходуемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер, Location - код склада (store.code).  В случае успеха, функция возвращает строку вида: код номенклатуры, введенное кол-во.&lt;br /&gt;
&lt;br /&gt;
'''CreateLedgerDoc(Date, Client, UserCode, Type[, ExtNumber, Message])''' - создает складской документ и возвращает код этого документа. Date - дата документа. Client - код клиента. UserCode - код пользователя, создавшего документ. Type - тип документа (statetype = 13). ExtNumber - номер у поставщика для документов прихода и расхода. Message - комментарий к документу. Последние два аргумента не обязательные и могут быть пустыми.&lt;br /&gt;
&lt;br /&gt;
'''SendManifestToIntegration(Codes)''' - отправляет манифесты с кодами Codes по интеграции. Возвращает ошибки каждая с новой строки если они есть и пустоту если ошибок нет.&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''PrintBlanc(Codes, BlancNumber)''' - печатать форму из раздела &amp;quot;Заполнить бланк&amp;quot;. Codes - коды корреспонденций, BlancNumber - номер формы из раздела &amp;quot;Бланки для корреспонденции&amp;quot; (3)&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer([GetPrinterPort=False])''' - возвращает имя принтера выбранного для печати документов. GetPrinterPort - попытаться по имени принтера найти порт принтера. &lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter([GetPrinterPort=False])''' - возвращает имя принтера выбранного для печати стикеров. GetPrinterPort - попытаться по имени принтера найти порт принтера. &lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter([GetPrinterPort=False])''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment) или путь к файлу, Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment) или путь к файлу, TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GhostScript(GScript, Code)''' — функция для выполнения консольных команд утилиты [https://ghostscript.readthedocs.io/en/latest/Use.html ghostscript]. Где, GScript — строка с командами Ghostscript; Code — код вложения или путь к PDF-файлу, предназначенному для обработки. В командах доступен специальный тег %MeasoftInFile%, который автоматически заменяется на путь к предварительно загруженному файлу (Code). Если в команде необходимо указать путь для сохранения результата обработки, используйте тег %MeasoftOutFile%. В этом случае функция на основании параметра Code автоматически сформирует имя временного выходного файла. После успешного выполнения команд функция возвращает путь к сгенерированному выходному файлу -  %MeasoftOutFile%.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm([SkipFormName])''' - возвращает код активной формы в программе где происходит сканирование. SkipFormName - не обязательны параметр, имя формы которую нужно пропустить при определении интерфейса.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад»; &lt;br /&gt;
 15 - Список номенклатуры; &lt;br /&gt;
 16 - Инвентаризация склада; &lt;br /&gt;
 17 - Приходная накладная; &lt;br /&gt;
 18 - Списание товара; &lt;br /&gt;
 19 - Карточка корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''AddAddressScanLog(Code[, StrBarCode, IsManual, FromInterface, ExtraInfo])''' - добавляет событие сканирование для корреспонденции с кодом Code. Необязательные параметры: StrBarCode - сканируемый ШК корреспонденции (по умолчанию пустой), IsManual - галка ручного сканирования (по умолчанию false), FromInterface - код интерфейса сканирования (StateType=81, по умолчанию 0 - неопределенный), ExtraInfo - текстовый комментарий события.&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''ShowText(Caption:string, Value:string)''' - показывает пользователю окно с заголовком Caption и с многострочным полем со значением Value. Может быть полезен при отображении логов выполненной операции. &lt;br /&gt;
&lt;br /&gt;
'''ShowScanError(msg [, Speek, Color, Abort])''' - выдает пользователю окно с текстом msg блокируя последующие действия сканирования. Если Speek - истинно, то сообщение проговаривается голосовым движком, по умолчанию выключено. Color - целочисленное число цвета, в который будет окрашен фон сообщения (по умолчанию = -1, стандартный). Abort  - прервать выполнение скрипта, не показывая ошибку.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''GetKurierMoney(KurierCode, DateEnd, NonCash)''' - возвращает баланс курьера с кодом KurierCode на дату DateEnd. NonCash - булевый флаг, если истинно, то будет рассчитан безнальный баланс; &lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Создается только автоматически. Объект для доступа к записям, используется в картах и дополнительных услугах (addressrecord) и событиях карточки корреспонденции (fieldlist). Методы объекта:&lt;br /&gt;
&lt;br /&gt;
'''_GetTableInfo''' - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
'''_Self''' - возвращает ссылку на объект.&lt;br /&gt;
&lt;br /&gt;
'''_Set(fieldname, fieldvalue [, DoUpdateForm])''' - Если базовый объект строка. Устаналивает для поля fieldname значение fieldvalue. DoUpdateForm по уолчанию false, если указать true то обновление поля будет не только в объекте но и пользовательском интерфейсе. Обновление работает только в карточке корреспнденции для ограниченного набора полей: vlog, mode, type, date_put, time_put, message, kurier, state1.&lt;br /&gt;
&lt;br /&gt;
'''_Set(keyfield, keyvalue, filed, value)''' - Если базовый объект таблица (addressrecord.boxes). Работает перегруженная версия метода _set, cначала происходит поиск строки по ключу, далее меняется значение указанного столбца. keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца.  Пример, отключение услуги база:&lt;br /&gt;
&lt;br /&gt;
 addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
 priceconf - поле где записан код услуги;&lt;br /&gt;
 1 - услуга База;&lt;br /&gt;
 active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Создается только автоматически. Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Объект TStringList ==&lt;br /&gt;
Может использоваться для построчной обработки многостраничных файлов либо для организации текстовых данных. Номер строк начинается с 0. &lt;br /&gt;
Имеет следующий функционал:&lt;br /&gt;
&lt;br /&gt;
'''Count''' - возвращает количество строк в списке.&lt;br /&gt;
&lt;br /&gt;
'''Add(Value:string)''' - добавляет значение Value в конец списка.&lt;br /&gt;
&lt;br /&gt;
'''SetText(Value:string)''' - устанавливает значение списка в значение Value.&lt;br /&gt;
&lt;br /&gt;
'''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number.&lt;br /&gt;
&lt;br /&gt;
'''Delete(Number:integer)''' - удаляет строку из списка в позиции Number.&lt;br /&gt;
&lt;br /&gt;
'''Clear''' - очищает элементы списка.&lt;br /&gt;
&lt;br /&gt;
'''LoadFromFile(Path:string)''' - загружает текстовый файл по пути Path.&lt;br /&gt;
&lt;br /&gt;
'''Strings(Number:integer)''' - возвращает строку с номером Number.&lt;br /&gt;
&lt;br /&gt;
'''SetString(Number:integer, Value:string)''' - устанавливает значение строки с номером Number в значение Value.&lt;br /&gt;
&lt;br /&gt;
'''Text''' - возвращает полный список строк в виде текста.&lt;br /&gt;
&lt;br /&gt;
'''CommaText([Quoted:boolean])''' - возвращает список значений через запятую. Если Quoted = true, то квотирует элементы списка. По умолчанию равен false.&lt;br /&gt;
&lt;br /&gt;
'''SetCommaText(Value: string)''' - разбивает значение Value на отдельные строки и кладет в список. Разделитель - запятые.&lt;br /&gt;
&lt;br /&gt;
'''IndexOf(Value:string)''' - ищет значение Value среди элементов списка и если находит, то возвращает номер строки. Возвращает -1 если значение не было найдено.&lt;br /&gt;
&lt;br /&gt;
'''Sorted(Value:boolean)''' - устанавливает флаг отсортированности списка в Value. Если Value = true, то сразу же его сортирует. По умолчанию Value = false.&lt;br /&gt;
&lt;br /&gt;
'''Exchange(Pos1:integer, Pos2:integer)''' - меняет элементы списка с позициями Pos1 и Pos2 местами.&lt;br /&gt;
&lt;br /&gt;
'''Duplicates(Value:integer)''' - изменяет параметр управления дубликатами в списке. Если Value = 0 (значение по умолчанию), то список не реагирует на дубликаты. Если Value = 1, то список при добавлении будет игнорировать дубликаты. Если Value = 2, то список будет выдавать исключение, при добавлении дубликата в список.&lt;br /&gt;
&lt;br /&gt;
'''ParamName(Number:integer[, Delimiter:string])''' - возвращает текст до первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает пустоту.&lt;br /&gt;
&lt;br /&gt;
'''ParamValue(Number:integer[, Delimiter:string])''' - возвращает текст после первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает всю строку.&lt;br /&gt;
&lt;br /&gt;
== Объект TFunc ==&lt;br /&gt;
Объект реализует создание и использование функций в скриптовом языке. Позволяет определять переиспользуемые блоки кода с параметрами.&lt;br /&gt;
Важно учитывать, что внтури функции создается свой инстанс интерпретатора и от туда не доступны никакие переменные\объекты кроме переданных в функцию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Основные методы:&lt;br /&gt;
&lt;br /&gt;
'''New'''(FuncName, Param1, Param2, ..., Body) — создание новой функции.Функция возвращает результат выполнения последней команды в теле функции. Аргументы:&lt;br /&gt;
* `FuncName` — имя функции (строка)&lt;br /&gt;
* `Param1, Param2, ...` — имена параметров функции (переменные начинаются с `$`, объекты — без префикса)&lt;br /&gt;
* `Body` — тело функции (скрипт, выполняемый при вызове)&lt;br /&gt;
&lt;br /&gt;
'''FuncName'''(Arg1, Arg2, ...) — вызов созданной функции по имени. Если в объявлении была указана тип переменная, то и подставлять в аргумент надо обязательно переменную. Будет передано значение этой переменной (переменные словарине поддерживаются!). Если был объявлен объект, то указатель на объект должен быть получен через метод '''_self'''. C функциями поддерживают работу следующие классы: TExcel, TDirectExcel, TCSVFile, TADO, TSelfADO, TPrinter, TCanvas, TPicture, TTable, TINIFile, TSMS, TXML, TJSON, TZip, TStringList, TBaseUtils, а также объект addressrecord (TFieldObject). Результатом работы функции может быть число или строка.&lt;br /&gt;
&lt;br /&gt;
Пример 1, обработка результатов функции:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
new('TFunc', 'calc');&lt;br /&gt;
calc.new('Sum', '$a', '$b',&lt;br /&gt;
  $a + $b&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
set($x, 10);&lt;br /&gt;
set($y, 20);&lt;br /&gt;
showmessage(calc.Sum($x, $y));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример 2, передача объекта в функцию:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
new('TFunc', 'utils');&lt;br /&gt;
utils.new('ProcessDB', 'dbConn', '$value',&lt;br /&gt;
  showmessage($value);&lt;br /&gt;
  dbConn.open('SELECT * FROM address limit 3 ');&lt;br /&gt;
  if(dbConn.recordcount &amp;gt; 0,&lt;br /&gt;
    showmessage('Найдено записей: ' + dbConn.recordcount);&lt;br /&gt;
    dbConn.first;&lt;br /&gt;
    while(dbConn.eof = 0,&lt;br /&gt;
      showmessage(dbConn.fieldbyname('code'));&lt;br /&gt;
      dbConn.next&lt;br /&gt;
    )&lt;br /&gt;
  ,0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
new('TSelfADO', 'db');&lt;br /&gt;
utils.ProcessDB(db._self,'test!');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «MEASOFT» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MEASOFT ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|2026.0.0.550 Доработка функций интерпретатора GetA4Printer, GetStickerPrinter, GetDuplexPrinter.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|2026.0.0.547 Доработка функций ATTACHPDFTOTEXT и PRINTATTACHPDFPAGE, добавлена возможность указать путь к файлу&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|2025.0.0.539 Добавлена поддержка отладчика AttachDebugger&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|2025.0.0.534 Добавлена поддержка оператора CASE и класса TFunc&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 2021.0.0.57 от 18.06.2019 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=API&amp;diff=15872</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=API&amp;diff=15872"/>
				<updated>2026-03-23T05:40:28Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Описание полей ответа статусов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 18px; color: #a92424; background-color: #ffdede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Изменения для 54-ФЗ'''&lt;br /&gt;
&lt;br /&gt;
Для передачи ставки НДС при оформлении заказа добавлен атрибут items &amp;gt; item &amp;gt; VATrate.&lt;br /&gt;
&lt;br /&gt;
При использовании услуги кассового обслуживания необходимо в обязательном порядке передавать состав заказа со ставками НДС.&lt;br /&gt;
&lt;br /&gt;
'''ВНИМАНИЕ'''&lt;br /&gt;
&lt;br /&gt;
В ближайшем будущем при подключенной услуге кассового обслуживания система '''перестанет''' принимать заказы без состава вложений.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 24px; color: #2424a9; background-color: #deffde; border: 1px solid #ebccd1; padding: 3px 10px 10px; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
'''English version is [[API Documentation|HERE!]]'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вы можете настроить интеграцию с MeaSoft средствами XML API по протоколу HTTP POST.&lt;br /&gt;
&lt;br /&gt;
API предназначено для интеграции клиентов (интернет-магазинов и прочих компаний-заказчиков доставки) с [http://courierexe.ru/our_clients.htm курьерскими службами], работающими под управлением системы [https://curie.ru/ MeaSoft].&lt;br /&gt;
&lt;br /&gt;
Если вы '''агрегатор''', передающий данные от клиентов, возможно, вам придется последовательно подключаться под разными пользователями, если курьерская служба должна вести раздельный учет взаиморасчетов по клиентам.&lt;br /&gt;
&lt;br /&gt;
Если вы '''подрядчик''', вы можете забирать заказы, используя значение client=AGENT в запросе [[#Пример запроса статуса заказа|statusreq]], и передавать статусы заказов, используя метод [[#Изменение статуса агентом|setorderinfo]]. Также для интеграций с подрядчиками у нас есть специальная платформа, но добавлять подрядчиков в нее можно только на нашей стороне. Присылайте нам коммерческое предложение, описание вашего сервиса, и мы с радостью его рассмотрим.&lt;br /&gt;
&lt;br /&gt;
При написании этой документации мы предполагаем, что ее читатель обладает необходимой для понимания квалификацией программиста, владеет XML и средой разработки, в которой он делает интеграцию. Если вы не программист, вам необходимо привлечь к проекту профессионального программиста.&lt;br /&gt;
&lt;br /&gt;
Если у вас после прочтения документации остались вопросы, задайте их по почте [mailto:support@courierexe.ru support@courierexe.ru]. Обязательно представьтесь, напишите ваши контактные данные (телефон, скайп) и название компании, с которой вы хотите интегрироваться.&lt;br /&gt;
&lt;br /&gt;
== Готовые интеграции ==&lt;br /&gt;
Для работы с популярными CMS и CRM-системами разработаны модули интеграции, перечисленные в таблице ниже.&lt;br /&gt;
&lt;br /&gt;
'''Модули распространяются бесплатно, без гарантий со стороны разработчика''', и не являются средством полной автоматизации взаимодействия с курьерской службой. Модули — это помощь разработчикам интернет-магазинов в построении интеграции с курьерскими службами. '''Ответственность за корректность передачи данных лежит на интернет-магазине.'''&lt;br /&gt;
Модули сторонних разработчиков обслуживаются и разрабатываются сторонними компаниями. Все вопросы по их приобретению и поддержке необходимо задавать им.&lt;br /&gt;
&lt;br /&gt;
Сообщайте нам свои пожелания по работе наших модулей. Мы учтем их в новых версиях.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width: 80%; margin: auto; background-color:#ffffff; border: 1px solid #999999;&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 35%;&amp;quot;|Система управления контентом (CMS)&lt;br /&gt;
!style=&amp;quot;width: 15%;&amp;quot;|Ссылка&lt;br /&gt;
!style=&amp;quot;width: 35%;&amp;quot;|Примечание&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:bitrix.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot; | [https://marketplace.1c-bitrix.ru/solutions/measoft.courier/ Установить] &amp;lt;!--[https://courierexe.ru/download/api/measoft.courier.zip Скачать] --&amp;gt;&lt;br /&gt;
|Поддерживает версии 20.5.0 и выше. Подробнее см. [[1C-Битрикс|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:prestashop.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/prestashop.zip Скачать]&lt;br /&gt;
|Поддерживает версии 1.5.2.0 и выше. Подробнее см. [[PrestaShop|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:OpencartOCStore.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/opencart.zip Скачать для версии 1.5.5.1]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc2.ocmod.zip Скачать для версии 2.0]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc2.3.ocmod.zip Скачать для версии 2.3]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc3.ocmod.zip Скачать для версии 3.0]&lt;br /&gt;
|Поддерживает версии с 1.5.5.1.&amp;lt;br&amp;gt;Скачивайте модули для своей версии OpenCart.&amp;lt;br&amp;gt;Подробнее см. [[OpenCart|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:webasyst-shopscript.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.webasyst.ru/store/plugin/shop/measoftcourier/ Установить модуль]&amp;lt;br&amp;gt;[https://www.webasyst.ru/store/plugin/shipping/measoftcourier/ Установить плагин]&lt;br /&gt;
|Модуль предназначен для отправки заявок в КС, а плагин для расчета стоимости доставки при оформлении заказа. Инструкции есть в маркете, а также см. [[Webasyst|описание]].&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--|[[Файл:advantshop.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://promo-z.ru/ Сайт компании PROMO]&lt;br /&gt;
|Компания PROMO разработала этот модуль и настраивает интеграцию MeaSoft с ADVANTSHOP своим клиентам.&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
|[[Файл:insales.png|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Настраивается в [[Личный кабинет клиента|ЛК пользователя]]&lt;br /&gt;
|[[InSales|Инструкция по настройке]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:iiko.jpg|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Настраивается в [[Личный кабинет клиента|ЛК пользователя]]&lt;br /&gt;
|[[Iiko|Инструкция по настройке]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Leadvertex.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://blog.leadvertex.ru/news/2110-integraciya-s-kurerkami-na-platforme-measoft Настраивается] в ЛК [https://Leadvertex.ru Leadvertex]&lt;br /&gt;
|[[LeadVertex|Инструкция по настройке]]&amp;lt;br&amp;gt;Модуль разработан и поддерживается компанией LeadVertex.&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Retailcrm.png|center|x30px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.retailcrm.ru/ RetailCRM]&lt;br /&gt;
|[[RetailCRM|Настраивается]] в ЛК пользователя в системе&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:1C.jpg|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|-&lt;br /&gt;
|[https://infostart.ru/public/692790/ Альтернативный модуль сторонних разработчиков (1 версия)]&lt;br /&gt;
&lt;br /&gt;
[https://infostart.ru/public/1531484/ Альтернативный модуль сторонних разработчиков (2 версия)]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Joomla2.jpg|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/com_measoft.zip Скачать]&lt;br /&gt;
|Работает только с компонентом Virtuemart. Инструкция в архиве&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Amocrm.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.amocrm.ru/extensions/measoft Описание на сайте amoCRM]&lt;br /&gt;
|Подробное описание настроек читайте [[amoCRM|тут]].&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|[[Файл:MoySclad.jpg|center|x30px]]&lt;br /&gt;
|style=&amp;quot;height:50px; text-align: center;&amp;quot;|&lt;br /&gt;
|[[МойСклад|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;height:50px; text-align: center;&amp;quot;|[https://itmdev.ru/ms/shipping/ Скачать модуль сторонних разработчиков]&lt;br /&gt;
|Интеграция МойСклад с курьерскими службами от сторонних разработчиков&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:wordpress.jpg|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/wordpress/wordpress.php Скачать]&lt;br /&gt;
|[[Wordpress|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Cscart.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://marketplace.cs-cart.com/measoft-en.html Установить]&lt;br /&gt;
|Поддерживает версии 4.10 и выше.&amp;lt;br&amp;gt;[[CS-Cart|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:webhooks.jpg|center|x100px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Читайте описание [[Webhook|на этой странице]]&lt;br /&gt;
|Передача информации о статусах и заказах в вашу систему&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Logo_tilda_black.png|center|x100px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Читайте описание [[Tilda|на этой странице]]&lt;br /&gt;
|Работает только на платных тарифах&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание!''' В модулях систем PrestaShop и Joomla для отправки заказа в курьерскую службу зайдите в карточку заказа. В карточке отображается специальная форма отправки заказа, а если заказ отправлен, она позволяет проверить его статус:[[Файл:Form.png|400 px|Форма отправки заказа|none]]&lt;br /&gt;
&lt;br /&gt;
Для отображения списка пунктов выдачи есть [https://home.courierexe.ru/js/measoft_map.js JavaScript модуль]. Инструкция по использованию — внутри. Посмотреть пример работы можно [https://home.courierexe.ru/pvz_test.html здесь].&lt;br /&gt;
&lt;br /&gt;
== Тестовый аккаунт ==&lt;br /&gt;
Для отладки зайдите в тестовый личный кабинет по адресу [https://home.courierexe.ru/8 https://home.courierexe.ru/8], логин: login пароль: pass.&lt;br /&gt;
&lt;br /&gt;
На вкладке '''Интеграция''' &amp;gt; '''Отладка''' вы можете пробовать выполнять запросы к API для отладки, а также видеть историю отправленных запросов. Созданные заказы появятся в пункте основного меню '''Отслеживание'''.&lt;br /&gt;
&lt;br /&gt;
Для упрощения интеграции можно скачать [https://courierexe.ru/download/api/php_sample.zip пример обращения к сервису на PHP].&lt;br /&gt;
&lt;br /&gt;
== Рабочий аккаунт для подключения ==&lt;br /&gt;
Строка подключения выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание параметров:&lt;br /&gt;
* '''extra''' — экстра-код, уникальный идентификатор компании, с которой вы интегрируетесь.&lt;br /&gt;
* '''login''' — логин клиента;&lt;br /&gt;
* '''pass''' — пароль клиента;&lt;br /&gt;
* '''measoftid''' — системная переменная, используемая системой.&lt;br /&gt;
&lt;br /&gt;
Запросите эти данные у курьерской службы, к которой вы подключаетесь. Курьерская служба передает временный пароль, его нужно сменить после первого входа в [[Личный кабинет клиента|ЛК клиента]].&lt;br /&gt;
&lt;br /&gt;
== Авторизация курьерской службы ==&lt;br /&gt;
Если курьерской службе требуется подключение под своими учетным данными, используйте строку вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; clientcode=&amp;quot;123&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание:&lt;br /&gt;
* '''extra''' — уникальный идентификатор компании;&lt;br /&gt;
* '''login''' — логин курьерской службы;&lt;br /&gt;
* '''pass''' — пароль курьерской службы;&lt;br /&gt;
* '''clientcode''' — внутренний код клиента (вкладка '''Клиенты''', столбец «Внутренний код»).&lt;br /&gt;
&lt;br /&gt;
Вы можете узнать код экстра, логин и пароль курьерской службы в офисном приложении MeaSoft в справочнике '''Дополнительные возможности'''. Подробнее см. раздел «[[Личный кабинет курьерской службы#Подключение|Подключение]]».&lt;br /&gt;
&lt;br /&gt;
== Общие понятия ==&lt;br /&gt;
На стороне курьерской службы имеется веб-сервис по адресу: https://home.courierexe.ru/api/. &amp;lt;rspoiler text=&amp;quot;Еще есть порт 8443.&amp;quot;&amp;gt;Некоторые маршрутизаторы, используемые провайдерами, РНК и прочее, в попытке глубокого анализа могут повреждать трафик на стандартный порт 443. Сделано по тикету 10964.&amp;lt;/rspoiler&amp;gt; Обратите внимание на символ '''«/»''' (slash) в конце адреса.&lt;br /&gt;
&lt;br /&gt;
Тестовые авторизационные данные: логин: login пароль: pass, параметр extra: 8. Обратите внимание, что тестовая площадка для всех одна. Не нужно передавать в нее заказы с конфиденциальными данными, их смогут увидеть другие участники.&lt;br /&gt;
&lt;br /&gt;
Для использования интеграции в «боевом» режиме, запросите '''логин''', '''пароль''', и параметр '''extra''' у той компании, с которой интегрируетесь.&lt;br /&gt;
&lt;br /&gt;
Вы можете отправлять тестовые запросы к нашему сервису и видеть историю отправленных запросов в личном кабинете на закладке '''Интеграция'''.&lt;br /&gt;
&lt;br /&gt;
Клиент отправляет запросы к сервису методом HTTP POST, сервис обрабатывает запросы и возвращает результат выполнения. Все запросы и ответы передаются в формате XML.&lt;br /&gt;
Кодировка — UTF-8. Разделитель целой и дробной частей чисел — используется символ точки. Даты представляются в виде YYYY-MM-DD, время — HH:MM.&lt;br /&gt;
&lt;br /&gt;
В силу [https://ru.wikipedia.org/wiki/XML#.D0.A0.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC.D1.8B_.D0.BD.D0.B5.D0.BE.D0.B4.D0.BD.D0.BE.D0.B7.D0.BD.D0.B0.D1.87.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.82.D0.BA.D0.B8 особенностей языка XML], некоторые символы в тексте должны быть заменены: &amp;amp; на &amp;amp;amp;amp; &amp;lt; на &amp;amp;amp;lt; &amp;gt; на &amp;amp;amp;gt; &amp;quot; на &amp;amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Наше API принципиально работает только по HTTPS, так как передает конфиденциальные данные. В некоторых системах с этим возникают проблемы. Если ваша система не может полноценно работать с шифрованием, мы рекомендуем развернуть http-сервер у себя локально, установить [http://courierexe.ru/download/api/proxy.zip прокси на PHP]. &amp;lt;spoiler text=&amp;quot;Как запустить&amp;quot;&amp;gt;Для теста можете запустить его на сервере следующей командой: php -S &amp;lt;IP&amp;gt;:8080 proxy.php&lt;br /&gt;
где &amp;lt;IP&amp;gt; — это адрес вашего сервера, а 8080 порт, на котором будут приниматься запросы.&lt;br /&gt;
Тогда для обмена данными с нашим АПИ необходимо будет использовать адрес &amp;lt;IP&amp;gt;:8080&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
Доступность функций, описанных в этом разделе, зависит от [[Личный кабинет курьерской службы#Функции личного кабинета|тарифа вашего личного кабинета]].&lt;br /&gt;
&lt;br /&gt;
== Ограничения ==&lt;br /&gt;
С целью защиты от нецелевого использования сервисов и DDoS-атак действуют следующие ограничения:&lt;br /&gt;
* 30 запросов tracking с одного IP-адреса за 1 минуту (используйте statusreq!);&lt;br /&gt;
* 150 запросов с одного IP-адреса/акаунта за 1 минуту;&lt;br /&gt;
* 1500 запросов с одного IP-адреса/акаунта за 20 минут;&lt;br /&gt;
* 3000 запросов с одного аккаунта за 1 час;&lt;br /&gt;
* 200 Мб скачанных текстовых данных за 3 часа.&lt;br /&gt;
* Превышение количества запросов статусов несуществующих заказов над существующими&lt;br /&gt;
&lt;br /&gt;
В случае превышения IP-адрес или аккаунт блокируется на время до 3-х часов.&lt;br /&gt;
&lt;br /&gt;
Чтобы не происходило блокировок:&lt;br /&gt;
* не нужно «бомбить» наше API запросами статусов, последовательно перебирая номера всех ваших заказов, особенно запросами «tracking», они предназначены не для этого (смотрите описание). Особенно ровно в 00 минут каждого часа;&lt;br /&gt;
* не нужно каждые 5 минут делать запросы «Покажите статусы всех заказов за последние 3 месяца»;&lt;br /&gt;
* для проверки статусов заказов лучше всего использовать запросы [[#Передача только изменившихся статусов|измененных статусов changes=ONLY_LAST]];&lt;br /&gt;
* при запросе измененных статусов ОБЯЗАТЕЛЬНО нужно подтверждать успешное получение запросом [[#Передача только изменившихся статусов|commitlaststatus]].&lt;br /&gt;
* вы должны знать номера заказов, которые вы отправили. Не нужно перебирать номера всех заказов или брутфорсом перебирать все возможные номера.&lt;br /&gt;
* нужно проверять с каким ответом возвращаются ваши АПИ-запросы. Если мы отвечаем ошибкой, то даже запрос на создание нового заказа учитывается в количестве запросов.&lt;br /&gt;
&lt;br /&gt;
Мы абсолютно уверены, что данные ограничения на порядки превосходят необходимые объемы предоставления сервиса для решения любых задач. Если у вас возникают проблемы, вы не знаете, как уложиться в эти рамки — спросите у нас, мы обязательно поможем!&lt;br /&gt;
&lt;br /&gt;
== Оформление заказа ==&lt;br /&gt;
&lt;br /&gt;
=== Пример оформления заказа ===&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder newfolder=&amp;quot;NO&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Чип &amp;amp;amp; Дейл&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;78&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;124&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;1112223335&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;1234&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice VATrate=&amp;quot;20&amp;quot;&amp;gt;150&amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;discount&amp;gt;120&amp;lt;/discount&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;1&amp;lt;/return_service&amp;gt;&lt;br /&gt;
   &amp;lt;return_type&amp;gt;3&amp;lt;/return_type&amp;gt;&lt;br /&gt;
   &amp;lt;return_weight&amp;gt;5.1&amp;lt;/return_weight&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;22&amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;receiverpays&amp;gt;NO&amp;lt;/receiverpays&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;&lt;br /&gt;
   &amp;lt;department&amp;gt;Отдел&amp;lt;/department&amp;gt;&lt;br /&gt;
   &amp;lt;pickup&amp;gt;NO&amp;lt;/pickup&amp;gt;&lt;br /&gt;
   &amp;lt;acceptpartially&amp;gt;NO&amp;lt;/acceptpartially&amp;gt;&lt;br /&gt;
   &amp;lt;costcode&amp;gt;cc12345&amp;lt;/costcode&amp;gt;&lt;br /&gt;
   &amp;lt;respstore&amp;gt;4&amp;lt;/respstore&amp;gt;&lt;br /&gt;
   &amp;lt;uid&amp;gt;af11c7c6-6645-4a20-9604-be911a75722d&amp;lt;/uid&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; textArticle=&amp;quot;1&amp;quot; article=&amp;quot;1&amp;quot; volume=&amp;quot;3&amp;quot; origincountry=&amp;quot;AUT&amp;quot; GTD=&amp;quot;321546654&amp;quot; excise=&amp;quot;15.20&amp;quot; suppcompany=&amp;quot;ООО &amp;amp;quot;Рога и копыта&amp;amp;quot;&amp;quot; suppphone=&amp;quot;79161234567&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; govType=&amp;quot;2&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; extraTags=&amp;quot;&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; inshprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot; origincountry=&amp;quot;004&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; inshprice=&amp;quot;50&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; itemcode=&amp;quot;44123&amp;quot; article=&amp;quot;3&amp;quot; type=&amp;quot;1&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package strbarcode=&amp;quot;ORD0000001&amp;quot; mass=&amp;quot;1&amp;quot; message=&amp;quot;&amp;quot; quantity=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package strbarcode=&amp;quot;ORD0000002&amp;quot; mass=&amp;quot;2.5&amp;quot; message=&amp;quot;&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryset above_price=&amp;quot;100&amp;quot; return_price=&amp;quot;1000&amp;quot; VATrate=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;below below_sum=&amp;quot;500&amp;quot; price=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;below below_sum=&amp;quot;2000&amp;quot; price=&amp;quot;300&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/deliveryset&amp;gt;&lt;br /&gt;
   &amp;lt;advprices&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;123&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;10.5&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
  &amp;lt;/advprices&amp;gt;&lt;br /&gt;
  &amp;lt;extrafields&amp;gt;&lt;br /&gt;
    &amp;lt;extrafield&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;courier_car&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;ВАЗ 2106, бежевый&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/extrafield&amp;gt;&lt;br /&gt;
  &amp;lt;/extrafields&amp;gt;&lt;br /&gt;
  &amp;lt;overall_volume&amp;gt;81&amp;lt;/overall_volume&amp;gt;&lt;br /&gt;
  &amp;lt;userid&amp;gt;user123&amp;lt;/userid&amp;gt;&lt;br /&gt;
  &amp;lt;groupid&amp;gt;customer&amp;lt;/groupid&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание элементов для оформления заказа ===&lt;br /&gt;
'''Обязательные поля'''&lt;br /&gt;
&lt;br /&gt;
Обязательными на уровне системы являются только 3 поля: receiver-&amp;gt;company или receiver-&amp;gt;person, receiver-&amp;gt;address и receiver-&amp;gt;phone. Так же в настройках системы сама курьерская служба может назначить какие-то дополнительные поля обязательными, тогда, если вы их не укажете, получите сообщение об ошибке.&lt;br /&gt;
&amp;lt;spoiler text=&amp;quot;Пример минимально возможного заказа&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;order&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;(495)123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка, 38&amp;lt;/address&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей'''&lt;br /&gt;
&lt;br /&gt;
* '''neworder''' — Корневой контейнер, обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
:* '''''newfolder''''' — Признак нового заказа YES/NO. Если стоит YES, то в системе курьерской службы для данной корреспонденции создастся новый заказ. Необязательный элемент.&lt;br /&gt;
&lt;br /&gt;
* '''order''' — Контейнер для описания одного заказа, обязательный элемент. В одном контейнере '''neworder''' может быть много контейнеров '''order''' для создания нескольких заказов одним запросом.&lt;br /&gt;
&lt;br /&gt;
:* '''''orderno''''' — Номер заказа. Если присваивается клиентом — указывается здесь. Если не присваивается — можно оставить пустым, система сгенерирует свой номер, и вернет его в ответе. Система проверяет '''у клиента''' наличие заказов с указанным номером в '''пределах текущего календарного года''', которые '''не являются недоставленными''', и в случае их существования — заказ создан не будет, а в ответе вернется ошибка 17 «Such number exists».&lt;br /&gt;
Если не указан штрихкод (поле barcode), и значение поля подходит для использования его в качестве штрихкода, данное значение будет скопировано в поле «Штрихкод». Это накладывает ограничения в частности, на длину указанного поля (25 знаков, чтобы работали стандартные печатные формы).&lt;br /&gt;
&lt;br /&gt;
* '''barcode''' — Штрихкод заказа. Если клиент штрихкодирует свои отправления и штрихкод отличается от номера заказа, в этом поле указывается штрихкод. Если ШК содержит кириллицу или малое количество символов, то формируется ШК в формате EAN13.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler text=&amp;quot;Заполнение номера заказа (шифра) и штрих-кода&amp;quot;&amp;gt;&lt;br /&gt;
Шифр и штрих-код заполняются исходя из начальных значений:&lt;br /&gt;
&lt;br /&gt;
# Если шифр и ШК пустые - оба поля заполняются автоматически значением вида XXX#YYY, а после ШК проверяется на корректность (валидируется)&lt;br /&gt;
# Если ШК пустой, а шифр заполнен - ШК заполняется значением из шифра и валидируется&lt;br /&gt;
# Если шифр пустой, а ШК заполнен - шифр заполняется значением из ШК, после чего ШК валидируется&lt;br /&gt;
# Если оба непустые - валидируется ШК, шифр не проверяется&lt;br /&gt;
&lt;br /&gt;
Корректный (валидный) ШК отвечает следующим требованиям:&lt;br /&gt;
* длина не меньше 5 символов&lt;br /&gt;
* значение не меньше значения переменной &amp;lt;mparam code=&amp;quot;MinPrePrintedNum&amp;quot;/&amp;gt;&lt;br /&gt;
* содержит символы, которые можно использовать для формирования штрих-код а формате Code128 (т.е.все печатные символы, кроме кириллицы)&lt;br /&gt;
&lt;br /&gt;
Если ШК не прошел проверку, то:&lt;br /&gt;
* если переменная &amp;lt;mparam code=&amp;quot;StoreInvLength&amp;quot;/&amp;gt; равна 0, ШК заполняются автоматически значением вида XXX#YYY (или приравнивается шифру в том же формате)&lt;br /&gt;
* если переменная &amp;lt;mparam code=&amp;quot;StoreInvLength&amp;quot;/&amp;gt; больше 0, ШК заполняются автоматически сквозным номером (если шифр в формате XXX#YYY, то шифр приравнивается ШК)&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В случае наличия нескольких мест и раздельной их маркировки в этом поле допустимы маски в виде символов подчеркивания, говорящие о позициях штрихкода, переменных для разных мест в рамках одного заказа.&amp;lt;br&amp;gt;&lt;br /&gt;
''Например'': В заказе номер 123 имеется 20 товарных вложений, которые упакованы в 3 транспортных места. Клиент формирует 3 штрихкода на транспортные места: CLNT0012301, CLNT0012302, CLNT0012303, где CLNT — префикс клиента, 00123 — номер заказа, 01-03 — номер транспортного места в заказе. В поле barcode нужно указать CLNT00123__ (система поймет, что 2 последних символа могут быть любыми и будут отражать штрихкоды к одному заказу). Если вы не сами печатаете накладные с указанным штрихкодом, то указанный штрихкод не должен быть длиннее 25 знаков, иначе он не поместится на стандартных печатных формах.&lt;br /&gt;
&lt;br /&gt;
* '''sender''' — Информация о отправителе заказа. Необязательный контейнер.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;Название компании отправителя&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Контактное лицо отправителя&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;Телефон, Email отправителя&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Город отправителя в формате &amp;quot;Москва город&amp;quot;&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Адрес отправителя&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;Дата забора в формате &amp;quot;YYYY-MM-DD&amp;quot;&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;Желаемое время забора в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;Желаемое время забора в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''receiver''' — Информация о получателе заказа. Обязательный контейнер.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;Название компании получателя&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Контактное лицо получателя&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;Телефон, Email получателя&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;Код региона&amp;quot;&amp;gt;Город получателя в формате &amp;quot;Москва город&amp;quot;&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Адрес получателя&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;ИНН получателя&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;Код пункта самовывоза по справочнику&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;Дата доставки в формате &amp;quot;YYYY-MM-DD&amp;quot;&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;Желаемое время доставки в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;Желаемое время доставки в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;Пин-код для подтверждения получателем&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''company''' — Компания-получатель.&lt;br /&gt;
* '''person''' — Контактное лицо. ''Должно быть заполнено хотя бы одно из полей — company или person!''&lt;br /&gt;
* '''phone''' — Телефон. Можно указывать несколько телефонов, E-mail в этом поле.&lt;br /&gt;
* '''town''' — Город.&lt;br /&gt;
* '''pvz''' — Код пункта самовывоза по справочнику. Кроме того, ПВЗ можно указать в строке '''''address''''' в виде:&lt;br /&gt;
:* код ПВЗ в нашей системе&lt;br /&gt;
:* код ПВЗ в системе подрядчика&lt;br /&gt;
:* наименование ПВЗ в виде строки &amp;quot;ПВЗ &amp;quot; + «Наименование ПВЗ». &lt;br /&gt;
&lt;br /&gt;
При указании ПВЗ в поле адреса необходимо проверять значение поля город получателя (он должен соответствовать данным ПВЗ) либо не передавать его вообще.&lt;br /&gt;
&lt;br /&gt;
Для тега города '''town''' можно указать код региона в атрибуте '''''regioncode''''' из [[#Справочник регионов|справочника регионов]]. Поиск будет производиться в указанном регионе.&lt;br /&gt;
&lt;br /&gt;
Также можно указать страну получателя в атрибуте '''''country''''' в соответствии с [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
&lt;br /&gt;
Кроме того, поиск города осуществляется с учетом почтового индекса, указанного в теге '''zipcode'''.&lt;br /&gt;
&lt;br /&gt;
Поле '''Город''' контейнеров '''sender''' и '''receiver''' можно указать одним из следующих способов:&lt;br /&gt;
:* код населенного пункта из [[#Справочник городов|справочника городов]]&lt;br /&gt;
:* 13-ти значный код адресного классификатора КЛАДР&lt;br /&gt;
:* 36-ти значный код адресной системы &amp;lt;rspoiler text=&amp;quot;ФИАС&amp;quot;&amp;gt;Федеральная информационная адресная система — единый российский государственный адресный реестр&amp;lt;/rspoiler&amp;gt; (AOID)&lt;br /&gt;
:* название города (не рекомендуется!)&lt;br /&gt;
&lt;br /&gt;
* '''coords''' — Координаты получателя. Если не указаны, система будет геокодировать самостоятельно.&lt;br /&gt;
&lt;br /&gt;
* '''zipcode''' — Почтовый индекс.&lt;br /&gt;
* '''price''' — Сумма заказа (наложенный платеж)  - денежные средства, которые курьер должен забрать у получателя в пользу заказчика. В случае наличия контейнера items значение этого параметра будет проигнорировано и рассчитано автоматически.&lt;br /&gt;
* '''inshprice''' — Объявленная ценность. Если явно не указана сумма — автоматически считается как сумма по товарам.&lt;br /&gt;
* '''deliveryprice''' — Стоимость доставки, которая устанавливается заказчиком и будет взиматься с получателя в пользу заказчика. Не имеет отношения к стоимости доставки самой курьерской службы, которая рассчитывается в соответствии с тарифамии, не указывается при оформлении заказа и добавляется в заказ автоматически при его обработке курьерской службой. В случае наличия контейнера items в него будет добавлено вложение «Доставка».&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов.&lt;br /&gt;
* '''discount''' — Сумма скидки. Скидка «размазывается» по товарным вложениям, сумма НП уменьшается на сумму скидки. При этом вложение Скидка не создается. ВНИМАНИЕ, при использовании этого тега общая сумма может расходиться на копейки из-за округления! Старайтесь не использовать этот тег, а указывать цену товаров уже с учетом скидок.&lt;br /&gt;
* '''paytype''' — Тип оплаты заказа получателем. Принимает значения:&lt;br /&gt;
:* CASH — Наличными при получении (по-умолчанию)&lt;br /&gt;
:* CARD — Картой при получении&lt;br /&gt;
:* NO — Без оплаты. Этот тип оплаты передается, если заказ уже оплачен и не требует инкассации. API добавит к товарам строку предоплаты в сумму заказа, чтобы общая сумма была 0, однако в кассовом чеке будут все товары с ценами, и оплата предоплатой, как того требует 54-ФЗ.&lt;br /&gt;
:* OTHER — Прочее (Предусмотрен для того, чтобы оплата поступала непосредственно в курьерскую службу посредством прочих типов оплаты — таких как: вебмани, яденьги, картой на сайте, прочие платежные системы и т. д.)&lt;br /&gt;
:* OPTION — На выбор получателя. Этот тип оплаты нельзя передавать с заказом. Он выставляется автоматически в зависимости от настройки клиента.&lt;br /&gt;
* '''weight''' — Общий вес заказа в килограммах.&lt;br /&gt;
* '''quantity''' — Количество мест.&lt;br /&gt;
* '''service''' — Режим доставки (тип услуги) передается код из справочника «[[#Справочник Виды срочности|Виды срочности]]».&lt;br /&gt;
* '''type''' — Тип корреспонденции (отправления) передается код из справочника «Типы корреспонденции».&lt;br /&gt;
* '''return''' — Признак необходимости возврата. Принимает значения:&lt;br /&gt;
:* NO — Возврат не требуется&lt;br /&gt;
:* YES — Требуется возврат, например, документов&lt;br /&gt;
:* ONLY — Требуется забрать отправление у поставщика (см. раздел «[[Личный_кабинет_клиента#Привезти ко мне|Привезти ко мне]]»). &lt;br /&gt;
* '''return_service''' — Режим возврата (тип услуги) передается код из справочника «Виды срочности».&lt;br /&gt;
* '''return_type''' — Тип возвратной корреспонденции (отправления) передается код из справочника «Типы корреспонденции».&lt;br /&gt;
* '''return_weight''' — Общий вес возврата заказа в килограммах.&lt;br /&gt;
* '''enclosure''' — Вложение.&lt;br /&gt;
* '''instruction''' — Поручение — Примечание.&lt;br /&gt;
* '''courier''' — Запланированный курьер. Согласно коду курьера в КС2008.&lt;br /&gt;
* '''receiverpays''' — Признак оплаты стоимости доставки — услуг службы доставки получателем, а не заказчиком YES/NO.&lt;br /&gt;
* '''department''' — Подразделение, в котором оформляется заказ.&lt;br /&gt;
* '''costcode''' — Кост-код сотрудника.&lt;br /&gt;
* '''respstore''' — Код ответственного филиала. Для ответственного филиала в который передается заказ, требуется включение параметра &amp;quot;Разрешить клиенту передавать заказы в этот филиал&amp;quot;&lt;br /&gt;
* '''pickup''' — Признак оформления забора YES/NO. Если стоит YES, то весь заказ считается заданием на забор груза, а не на доставку! Применяется для вызова курьера к отправителю для забора других отправлений. ''Внимание!'' при добавлении в забор складских товаров, их тип '''''type''''' всегда должен быть установлен как [7] Забор товара, если будет указан другой тип, то он будет исправлен в момент добавления заказа на [7] Забор товара&lt;br /&gt;
* '''acceptpartially''' — Признак возможности частичного выкупа товаров отправления YES/NO.&lt;br /&gt;
* '''uid''' - Универсальный идентификатор заказа на стороне отправителя. Не обязательный параметр, ограниченного по времени действия. Время хранения в системе, - сутки.&lt;br /&gt;
&lt;br /&gt;
* '''items''' — Контейнер для описания вложений. &amp;lt;rspoiler text=&amp;quot;Необязательный контейнер&amp;quot;&amp;gt;Если для поставщика товара в системе MeaSoft не указаны полное наименование компании и ИНН в карточке клиента, заполните параметры &amp;lt;code&amp;gt;suppcompany&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;suppINN&amp;lt;/code&amp;gt; в этом контейнере. Отсутствие информации о поставщике приведет к [[Настройка модуля печати кассовых чеков#Ошибка фискализации (ошибка программирования реквизита 1226)|ошибке фискализации]].&amp;lt;/rspoiler&amp;gt;. Атрибуты:&lt;br /&gt;
:* '''''item''''' — Название вложения.&lt;br /&gt;
:* '''''quantity''''' — Количество единиц товара.&lt;br /&gt;
:* '''''mass''''' — Масса единицы товара в килограммах.&lt;br /&gt;
:* '''''volume''''' — Объемный вес единицы товара в килограммах. При указании объемного веса значение подставляется вместо массы&lt;br /&gt;
:* '''''length''''' — Длина единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''width''''' — Ширина единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''height''''' — Высота единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''retprice''''' — Цена единицы товара. Округляется до копеек. Должна быть с учетом всех скидок и наценок. Для вложений типов 1, 2, 3 не может быть отрицательной. &amp;lt;!-- , либо мы сами посчитаем скидку при указании тега order-&amp;gt;discount --&amp;gt;&lt;br /&gt;
:* '''''inshprice''''' — Объявленная ценность единицы товара. Округляется до копеек. Если не указана принимается равной '''''retprice'''''.&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов. Если товар хранится в КС (смотрите '''article''' ниже), значение берется из номенклатуры. Иначе, если значение указано, берется указанное значение, если нет - значение из настроек фирмы КС. Значение «0» означает ставку «Без НДС», ставка «0%» на данный момент не поддерживается.&lt;br /&gt;
:* '''''barcode''''' — Штрихкод вложения.&lt;br /&gt;
:* '''''article''''' — Артикул вложения. ''Внимание!'' Указание артикула используется только тогда, когда товар хранится на ответственном хранении в службе доставки, и необходима комплектация. В этом случае система пытается привязать товар к [[API#Справочник номенклатуры|справочнику номенклатуры]]. Если товар в справочнике не найден — система выдаст соответствующую ошибку. Если по артикулу найдено несколько товаров — система выберет один из них случайным образом, что может привести к ошибочной комплектации! Если товар НЕ на ответственном хранении — артикул указывать НЕ нужно. Позиция попадет в систему просто текстом.&lt;br /&gt;
:* '''''itemcode''''' — Внутренний код товара, может использоваться вместо артикула. ''Внимание!'' Указание кода товара используется только тогда, когда товар хранится на ответственном хранении в службе доставки, и необходима комплектация. В этом случае система пытается привязать товар к [[API#Справочник номенклатуры|справочнику номенклатуры]]. Если товар в справочнике не найден — система выдаст соответствующую ошибку. Если товар НЕ на ответственном хранении — код товара указывать НЕ нужно.&lt;br /&gt;
:* '''''type''''' — Тип вложения. Принимает значения:&lt;br /&gt;
:: 1 — Товар. По-умолчанию.&lt;br /&gt;
:: 2 — Доставка. Такое вложение добавится автоматически, если заполнить order-&amp;gt;deliveryprice&lt;br /&gt;
:: 3 — Услуга&lt;br /&gt;
:: 4 — Предоплата. Указывается сумма. Поле quantity игнорируется, всегда «1». В заказе сумма будет отрицательной независимо от знака в запросе. Такое вложение добавится автоматически при указании order-&amp;gt;paytype=NO.&lt;br /&gt;
:: 6 — Оплата кредитом. Указывается сумма. Поле quantity игнорируется, всегда «1». В заказе сумма будет отрицательной независимо от знака в запросе.&lt;br /&gt;
:: 7 — Забор товара. Если товар нужно у получателя забрать, возможно — вернуть деньги, или его стоимость вычтется из суммы других товаров. У такого товара в заказе будет отрицательное количество независимо от знака в запросе.&lt;br /&gt;
:* '''''extcode''''' — Внешний код строки. Используется для идентификации строк заказов при получении статусов. Необязательное поле.&lt;br /&gt;
:* '''''origincountry''''' — Код страны-производителя в соответствии со [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
:* '''''GTD''''' — Номер ГТД.&lt;br /&gt;
:* '''''excise''''' — Сумма акциза.&lt;br /&gt;
:* '''''suppcompany''''' — Наименование компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''suppphone''''' — Номер телефона компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''suppINN''''' — ИНН компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''governmentCode''''' — Код товарной номенклатуры. Используется для [[Маркировка|маркированных товаров, например («Честный знак»)]]. Для кода '''Честный знак''' Нужно указывать все данные из нанесенного QR-кода кроме не читаемых символов (#29). Если код не известен — укажите знак вопроса «?», тогда курьер отсканирует код фактически передаваемого покупателю товара. Для некоторых процессов может использоваться значение «!» — в этом случае курьер сканирует серийный номер товара, но это не считается кодом маркировки. При этом, если указано значение «?» или «!» и quantity больше 1, то такое вложение растиражируется quantity раз.&lt;br /&gt;
:* '''''govType''''' — Тип маркировки товара. В данный момент существуют следующие типы маркировки:&lt;br /&gt;
:: 1 — Честный знак. По-умолчанию.&lt;br /&gt;
:: 2 — ГИИС ДМДК.&lt;br /&gt;
:: 3 — Серийный номер.&lt;br /&gt;
:* '''''message''''' — Строка сообщения.&lt;br /&gt;
:* '''''extraTags''''' — Строка в формате JSON для отправки в ОФД.&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1265 - значение отраслевого реквизита = код места деятельности аптеки&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1262 – идентификатор ФОИВ = &amp;quot;020&amp;quot; (константа ФОИВ МИНЗДРАВа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1263 - дата нормативного акта федерального органа исполнительной власти = &amp;quot;14.12.2018&amp;quot; (константа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1264 - номер нормативного акта федерального органа исполнительной власти = &amp;quot;1556&amp;quot;(константа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1212 - Признак предмета расчета&lt;br /&gt;
&lt;br /&gt;
:: Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;item_industry_props&amp;quot;:{&amp;quot;tag1262&amp;quot;:&amp;quot;020&amp;quot;,&amp;quot;tag1263&amp;quot;:&amp;quot;14.12.2018&amp;quot;,&amp;quot;tag1264&amp;quot;:&amp;quot;1556&amp;quot;,&amp;quot;tag1265&amp;quot;:&amp;quot;tm=mdlp&amp;amp;sid=00000000XXXXXX&amp;quot;},&lt;br /&gt;
&amp;quot;tag1212&amp;quot;: &amp;quot;1&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для клиентов из '''Узбекистана''' необходимо указывать код ИКПУ и код упаковки в следующем формате:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;ikpu&amp;quot;:&amp;quot;123123123&amp;quot;,&amp;quot;packageCode&amp;quot;:&amp;quot;123456&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''packages''' — Контейнер для описания мест. Необязательный контейнер. Атрибуты:&lt;br /&gt;
:* '''''package''''' — Название места.&lt;br /&gt;
:* '''''code''''' — Внутренний код строки.&lt;br /&gt;
:* '''''strbarcode''''' — Штрихкод места.&lt;br /&gt;
:* '''''mass''''' — Масса места в килограммах.&lt;br /&gt;
:* '''''message''''' — Строка сообщения.&lt;br /&gt;
:* '''''length''''' — Длина товарного места (в сантиметрах).&lt;br /&gt;
:* '''''width''''' — Ширина товарного места (в сантиметрах).&lt;br /&gt;
:* '''''height''''' — Высота товарного места (в сантиметрах).&lt;br /&gt;
:* '''''quantity''''' — Количество мест с данным набором параметров. Действует ограничение на общее количество мест в заказе. Общее количество мест в заказе не может быть больше 1000.&lt;br /&gt;
&lt;br /&gt;
* '''deliveryset''' — настройка [[Дифференцированная стоимость доставки|дифференцированной стоимости доставки]]. Атрибуты:&lt;br /&gt;
:* '''''above_price''''' — стоимость в случае полного выкупа заказа (действует как «сумма от» последней границы, указанной в теге below_sum)&lt;br /&gt;
:* '''''return_price''''' — стоимость в случае возврата заказа&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов.&lt;br /&gt;
&lt;br /&gt;
* '''below''' — граница стоимости настроек&lt;br /&gt;
:* '''''below_sum''''' — граница стоимости выкупаемого заказа&lt;br /&gt;
:* '''''price''''' — стоимость выкупаемого заказа до соответствующей границы&lt;br /&gt;
&lt;br /&gt;
* '''advprices''' — Контейнер для описания дополнительных услуг. Необязательный элемент. &amp;lt;span style=&amp;quot;color: red;&amp;gt;Для обработки в API включите дополнительные услуги в настройках полей [[Личный кабинет курьерской службы#Настройка личного кабинета клиента|заказов и заборов]]&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''''code''''' — код услуги.&lt;br /&gt;
:* '''''value''''' — значение услуги. Если тип услуги bool, то в значении передаем true.&lt;br /&gt;
&lt;br /&gt;
* '''extrafields''' — Контейнер для описания расширенных полей. Необязательный элемент. Может содержать несколько элементов extrafield&lt;br /&gt;
* '''extrafield''' — Контейнер для описания расширенного поля.&lt;br /&gt;
:* '''''name''''' — наименование переменной. Может содержать только латинские буквы, цифры и знак подчеркивания &amp;quot;_&amp;quot;, но начинаться может только с буквы. Максимальная длина - 20 символов.&lt;br /&gt;
:* '''''value''''' — значение переменной. Максимальная длина - 250 символов.&lt;br /&gt;
&lt;br /&gt;
* '''overall_volume''' — Общий объем, м3. Виртуальное поле. Необязательное. Из этого поля рассчитывается длина/высота/ширина места. Расчет срабатывает только если в каждом месте есть нулевые значения длины или высоты или ширины.&lt;br /&gt;
&lt;br /&gt;
* '''userid''' — Идентификатор пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенного покупателя.&lt;br /&gt;
&lt;br /&gt;
* '''groupid''' — Идентификатор группы пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенной группы покупателей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
При передаче заказов, у которых плановая дата доставки/забора меньше ближайшей возможной, дата автоматически меняется на самую раннюю возможную. [[Личный кабинет курьерской службы#Как считается минимальная дата возможной доставки|Подробнее]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В случае необходимости указания, помимо товаров, дополнительных услуг (например, ДОСТАВКА, комплектация, подъем на этаж и т. д.) — их нужно указать в том же контейнере items как товары, без артикула.&lt;br /&gt;
&lt;br /&gt;
=== Примеры ответов ===&lt;br /&gt;
При успешном выполнении запроса, создании заказа, возвращается сумма заказа в атрибуте orderprice, а также ошибка 0. При не успешном — номер ошибки и текст ее на английском языке в атрибуте errormsg, для некоторых ошибок выводится перевод на русский в атрибуте errormsgru.&lt;br /&gt;
В атрибут orderno помещается номер заказа, в атрибут barcode — штрихкод заказа.&lt;br /&gt;
&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23541&amp;quot; barcode=&amp;quot;67567#114&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;5000&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23542&amp;quot; barcode=&amp;quot;67567#115&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;6000&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23543&amp;quot; barcode=&amp;quot;67567#116&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23541&amp;quot; barcode=&amp;quot;67567#114&amp;quot; error=&amp;quot;67&amp;quot; errormsg=&amp;quot;Order barcode already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой штрихкод заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23542&amp;quot; barcode=&amp;quot;67567#115&amp;quot; error=&amp;quot;17&amp;quot; errormsg=&amp;quot;Order number already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой номер заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23543&amp;quot; barcode=&amp;quot;67567#116&amp;quot; error=&amp;quot;67&amp;quot; errormsg=&amp;quot;Order barcode already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой штрихкод заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке авторизации'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
&amp;lt;error error=&amp;quot;1&amp;quot; errormsg=&amp;quot;authorization error&amp;quot;&amp;gt;&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке синтаксиса'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
   &amp;lt;error&amp;gt;column:1 line:11 message:expected '&amp;gt;'&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Коды и описание ошибок ===&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!Код ошибки&lt;br /&gt;
!Английское описание&lt;br /&gt;
!Русское описание&lt;br /&gt;
|-&lt;br /&gt;
|0||Success||Успешно&lt;br /&gt;
|-&lt;br /&gt;
|1||Wrong XML||Некорректный файл XML.&lt;br /&gt;
|-&lt;br /&gt;
|2||Lat is empty||Укажите широту.&lt;br /&gt;
|-&lt;br /&gt;
|3||Specify a valid «Price» field value.||Укажите корректное значение поля «Сумма».&lt;br /&gt;
|-&lt;br /&gt;
|4||Specify a valid «Weight» field value.||Укажите корректное значение поля «Вес».&lt;br /&gt;
|-&lt;br /&gt;
|5||Recepient city/town not found.||Город назначения не найден.&lt;br /&gt;
|-&lt;br /&gt;
|6||Sender city/town not found.||Город отправления не найден.&lt;br /&gt;
|-&lt;br /&gt;
|7||Specify the «Recipient address» field value.||Укажите значение поля «Адрес получателя».&lt;br /&gt;
|-&lt;br /&gt;
|8||Specify the «Recipient phone» field value.||Укажите значение поля «Телефон получателя».&lt;br /&gt;
|-&lt;br /&gt;
|9||Specify the «Recipient name» field value.||Укажите значение поля «ФИО получателя».&lt;br /&gt;
|-&lt;br /&gt;
|10||Specify a valid «Quantity» field value.||Укажите корректное значение поля «Количество».&lt;br /&gt;
|-&lt;br /&gt;
|11||Specify a valid «Declared value» field value.||Укажите корректное значение поля «Объявленная ценность».&lt;br /&gt;
|-&lt;br /&gt;
|12||Supplier SKU ID not found.||Артикул не найден.&lt;br /&gt;
|-&lt;br /&gt;
|17||Order number already exists in the database.||Такой номер заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|18||Order code already exists in the database.||Такой код заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|19||The delivery date format is not valid. Specify a date in YYYY-MM-DD format.||Укажите значение поля «Дата доставки» в формате гггг-мм-дд.&lt;br /&gt;
|-&lt;br /&gt;
|20||Specify a valid «Delivery mode» field value.||Укажите корректное значение поля «Режим доставки».&lt;br /&gt;
|-&lt;br /&gt;
|21||Specify a valid «Return trip mode» field value.||Укажите корректное значение поля «Режим возврата».&lt;br /&gt;
|-&lt;br /&gt;
|22||Specify a valid «Delivery type» field value.||Укажите корректное значение поля «Тип доставки».&lt;br /&gt;
|-&lt;br /&gt;
|23||Specify a valid «Return shipment type» field value.||Укажите корректное значение поля «Тип возврата».&lt;br /&gt;
|-&lt;br /&gt;
|30||Specify the «Order number» field value.||Укажите значение поля «Номер заказа».&lt;br /&gt;
|-&lt;br /&gt;
|31||Specify the «Barcode» field value.||Укажите значение поля «Штрихкод».&lt;br /&gt;
|-&lt;br /&gt;
|32||Specify the «Sender company» field value.||Укажите значение поля «Компания-отправитель».&lt;br /&gt;
|-&lt;br /&gt;
|33||Specify the «Sender name» field value.||Укажите значение поля «ФИО отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|34||Specify the «Sender phone» field value.||Укажите значение поля «Телефон отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|35||Specify the «Sender city/town» field value.||Укажите значение поля «Город отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|36||Specify the «Sender address» field value.||Укажите значение поля «Адрес отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|37||Specify the «Pickup date» field value.||Укажите значение поля «Дата забора».&lt;br /&gt;
|-&lt;br /&gt;
|38||Specify the «Pickup time from» field value.||Укажите значение поля «Время забора с».&lt;br /&gt;
|-&lt;br /&gt;
|39||Specify the «Pickup time to» field value.||Укажите значение поля «Время забора до».&lt;br /&gt;
|-&lt;br /&gt;
|40||Specify the «Recipient company» field value.||Укажите значение поля «Компания-получатель».&lt;br /&gt;
|-&lt;br /&gt;
|41||Specify the «Recipient name» field value.||Укажите значение поля «ФИО получателя».&lt;br /&gt;
|-&lt;br /&gt;
|42||Specify the «Recipient phone» field value.||Укажите значение поля «Телефон получателя».&lt;br /&gt;
|-&lt;br /&gt;
|43||Specify the «Recipient city/town» field value.||Укажите значение поля «Город получателя».&lt;br /&gt;
|-&lt;br /&gt;
|44||Specify the «Recipient address» field value.||Укажите значение поля «Адрес получателя».&lt;br /&gt;
|-&lt;br /&gt;
|45||Specify the «Delivery date» field value.||Укажите значение поля «Дата доставки».&lt;br /&gt;
|-&lt;br /&gt;
|46||Specify the «Delivery time from» field value.||Укажите значение поля «Время доставки с».&lt;br /&gt;
|-&lt;br /&gt;
|47||Specify the «Delivery time to» field value.||Укажите значение поля «Время доставки до».&lt;br /&gt;
|-&lt;br /&gt;
|48||Specify the «Recipient postcode» field value.||Укажите значение поля «Индекс получателя».&lt;br /&gt;
|-&lt;br /&gt;
|49||Specify the «Weight» field value.||Укажите значение поля «Вес».&lt;br /&gt;
|-&lt;br /&gt;
|50||Specify the «Payment type» field value.||Укажите значение поля «Тип оплаты».&lt;br /&gt;
|-&lt;br /&gt;
|51||Specify the «Quantity» field value.||Укажите значение поля «Количество».&lt;br /&gt;
|-&lt;br /&gt;
|52||Specify the «Amount» field value.||Укажите значение поля «Сумма».&lt;br /&gt;
|-&lt;br /&gt;
|53||Specify the «Declared value» field value.||Укажите значение поля «Объявленная стоимость».&lt;br /&gt;
|-&lt;br /&gt;
|54||Specify the «Description» field value.||Укажите значение поля «Описание».&lt;br /&gt;
|-&lt;br /&gt;
|55||Specify the «Instruction» field value.||Укажите значение поля «Поручение».&lt;br /&gt;
|-&lt;br /&gt;
|56||Specify the «Delivery mode» field value.||Укажите значение поля «Режим доставки».&lt;br /&gt;
|-&lt;br /&gt;
|57||Specify the «Shipment type» field value.||Укажите значение поля «Тип отправления».&lt;br /&gt;
|-&lt;br /&gt;
|58||Specify whether return trip is required.||Укажите значение поля «Необходимость возврата».&lt;br /&gt;
|-&lt;br /&gt;
|59||Specify the «Return trip mode» field value.||Укажите значение поля «Режим возврата»&lt;br /&gt;
|-&lt;br /&gt;
|60||Specify the «Return shipment type» field value.||Укажите значение поля «Тип возврата».&lt;br /&gt;
|-&lt;br /&gt;
|61||Specify barcode.||Укажите штрихкод.&lt;br /&gt;
|-&lt;br /&gt;
|62||Specify item weight.||Укажите массу единицы товара.&lt;br /&gt;
|-&lt;br /&gt;
|63||Specify item quantity.||Укажите количество товара.&lt;br /&gt;
|-&lt;br /&gt;
|64||Specify item price.||Укажите цену единицы товара.&lt;br /&gt;
|-&lt;br /&gt;
|65||Specify item name.||Укажите название товара.&lt;br /&gt;
|-&lt;br /&gt;
|66||Wrong XLS file||Некорректный файл XLS.&lt;br /&gt;
|-&lt;br /&gt;
|67||Order barcode already exists in the database.||Такой штрихкод заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|68||Select the «Payment by recipient» field value.||Укажите значение поля «Оплата получателем».&lt;br /&gt;
|-&lt;br /&gt;
|69||Specify department.||Укажите отдел.&lt;br /&gt;
|-&lt;br /&gt;
|70||Specify service partner code.||Укажите значение поля «Код подрядчика».&lt;br /&gt;
|-&lt;br /&gt;
|71||Date cannot be earlier than tomorrow.||Дата не может быть раньше чем завтра.&lt;br /&gt;
|-&lt;br /&gt;
|72||Date cannot be later than 15 days from now.||Дата не может быть позже чем через 15 дней.&lt;br /&gt;
|-&lt;br /&gt;
|73||Date cannot be earlier than today.||Дата не может быть раньше чем сегодня.&lt;br /&gt;
|-&lt;br /&gt;
|74||Date cannot be later than {0} days from now.||Дата не может быть позже, чем через {0} дней.&lt;br /&gt;
|-&lt;br /&gt;
|75||Specify a valid «Item weight» field value.||Укажите корректное значение поля «Масса единицы товара».&lt;br /&gt;
|-&lt;br /&gt;
|76||Specify a valid «Quantity» field value.||Укажите корректное значение поля «Количество товара».&lt;br /&gt;
|-&lt;br /&gt;
|77||Specify a valid «Item price» field value.||Укажите корректное значение поля «Цена единицы товара».&lt;br /&gt;
|-&lt;br /&gt;
|78||Specify a valid «Delivery time from» field value.||Укажите корректное значение поля «Время доставки с».&lt;br /&gt;
|-&lt;br /&gt;
|79||Specify a valid «Delivery time to» field value.||Укажите корректное значение поля «Время доставки до».&lt;br /&gt;
|-&lt;br /&gt;
|80||Specify a valid «Pickup time from» field value.||Укажите корректное значение поля «Время забора с».&lt;br /&gt;
|-&lt;br /&gt;
|81||Specify a valid «Pickup time to» field value.||Укажите корректное значение поля «Время забора до».&lt;br /&gt;
|-&lt;br /&gt;
|82||Specify a valid «Pickup point» field value.||Укажите корректное значение поля «ПВЗ».&lt;br /&gt;
|-&lt;br /&gt;
|83||Duplicate number in the registry.||Дублирование номера в реестре.&lt;br /&gt;
|-&lt;br /&gt;
|84||Duplicate barcode in the registry.||Дублирование штрихкода в реестре.&lt;br /&gt;
|-&lt;br /&gt;
|85||Specify a valid «Weight at return trip» field value.||Укажите корректное значение поля «Вес возврата».&lt;br /&gt;
|-&lt;br /&gt;
|86||Specify the «Weight at return trip» field value.||Укажите значение поля «Вес возврата».&lt;br /&gt;
|-&lt;br /&gt;
|87||Order weight exceeds the allowed maximum for the pickup point.||Вес превышает допустимое значение для этого ПВЗ.&lt;br /&gt;
|-&lt;br /&gt;
|88||Pickup date cannot be earlier than today.||Дата забора не может быть раньше чем сегодня.&lt;br /&gt;
|-&lt;br /&gt;
|89||Specify a later delivery date.||Укажите более позднюю дату доставки.&lt;br /&gt;
|-&lt;br /&gt;
|90||Inappropriate «Weight» or «Pay type» field value for the selected city or town. Please review and correct the values.||Значение поля «Масса» или «Тип оплаты» для выбранного города указано некорректно или отсутствует. Проверьте значения и исправьте.&lt;br /&gt;
|-&lt;br /&gt;
|91||{deliverytype} {deliverydate} is {holidaytype}. Select another date.||{deliverytype} {deliverydate} является {holidaytype}. Выберите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|92||{deliverytype} {deliverydate} is {holidaytype}. Select another date.||{deliverytype} {deliverydate} является {holidaytype}. Выберите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|93||Add items.||Добавьте товары.&lt;br /&gt;
|-&lt;br /&gt;
|95||The selected pickup point only allows paid orders.||Выбранный ПВЗ выдает только предоплаченные заказы.&lt;br /&gt;
|-&lt;br /&gt;
|96||Order barcode exceeds the allowed maximum (25) symbols.||Длина штрихкода заказа превышает максимально допустимую (25 символов).&lt;br /&gt;
|-&lt;br /&gt;
|97||The pickup date format is not valid. Specify a date in YYYY-MM-DD format.||Укажите значение поля «Дата забора» в формате гггг-мм-дд.&lt;br /&gt;
|-&lt;br /&gt;
|98||Specify the cost code.||Укажите значение поля «Кост-код».&lt;br /&gt;
|-&lt;br /&gt;
|99||The item is not in stock.||Товар отсутствует на складе.&lt;br /&gt;
|-&lt;br /&gt;
|100||Set the quantity of the item marked with Chestny ZNAK to one.||Укажите количество товара, маркированного кодом «Честный ЗНАК», равным единице.&lt;br /&gt;
|-&lt;br /&gt;
|101||Quantity of item Delivery cannot be greater than 1||Количество вложений типа «Доставка» не может быть более 1.&lt;br /&gt;
|-&lt;br /&gt;
|102||А database error occurred. Please try later again.||Ошибка базы данных. Попробуйте позже.&lt;br /&gt;
|-&lt;br /&gt;
|103||Order not found.||Заказ не найден.&lt;br /&gt;
|-&lt;br /&gt;
|104||Cannot edit order in the current status.||Невозможно изменить заказ в текущем статусе.&lt;br /&gt;
|-&lt;br /&gt;
|105||Discount cannot be greater than the order amount. Specify a smaller value.||Размер скидки не может превышать сумму заказа. Укажите меньшее значение скидки.&lt;br /&gt;
|-&lt;br /&gt;
|106||Specify the correct additional service code.||Укажите корректный код дополнительной услуги.&lt;br /&gt;
|-&lt;br /&gt;
|107||Specify the correct additional service name.||Укажите корректное значение поля [advprice][value].&lt;br /&gt;
|-&lt;br /&gt;
|108||Specify the «Additional services» field value.||Укажите значение поля «Дополнительные услуги».&lt;br /&gt;
|-&lt;br /&gt;
|110||Specify the correct TIN.||Укажите корректный ИНН.&lt;br /&gt;
|-&lt;br /&gt;
|111||Specify the correct IIN (KZ).||Укажите корректный ИИН (КЗ).&lt;br /&gt;
|-&lt;br /&gt;
|112||Specify the overall volume.||Укажите общий объем.&lt;br /&gt;
|-&lt;br /&gt;
|113||Cannot apply the delivery mode. Select another delivery mode.||Режим доставки не подходит для заказа. Выберите другой режим.&lt;br /&gt;
|-&lt;br /&gt;
|114||The pickup point does not support the selected delivery mode. Specify another pickup point.||ПВЗ не подходит для выбранного режима доставки. Укажите другой ПВЗ.&lt;br /&gt;
|-&lt;br /&gt;
|115||Specify a valid recipient phone number.||Укажите корректный телефон получателя.&lt;br /&gt;
|-&lt;br /&gt;
|116||Specify recipient PIN code.||Укажите пин-код получателя.&lt;br /&gt;
|-&lt;br /&gt;
|117||Order date cannot be earlier than {0}. Specify another date.||Дата заказа не может быть раньше {0}. Укажите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|118||Pickup date cannot be earlier than {0}. Specify another date.||Дата забора не может быть раньше {0}. Укажите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|119||Specify the correct item type.||Укажите корректный тип вложения.&lt;br /&gt;
|-&lt;br /&gt;
|120||The pickup point does not accept payment by card.||В выбранном ПВЗ оплата картой не принимается.&lt;br /&gt;
|-&lt;br /&gt;
|121||Invalid item code format||Неверный формат кода товарной номенклатуры&lt;br /&gt;
|-&lt;br /&gt;
|122||Pickup time cannot be earlier than {0} hours.||Время забора не может быть раньше чем через {0} часа.&lt;br /&gt;
|-&lt;br /&gt;
|123||Pickup interval cannot be less than {0} minutes.||Интервал времени забора не может быть менее {0} минут. Укажите корректный интервал.&lt;br /&gt;
|-&lt;br /&gt;
|124||Specify a valid &amp;quot;Payment type&amp;quot; field value.||Укажите корректное значение поля «Тип оплаты».&lt;br /&gt;
|-&lt;br /&gt;
|125||Recepient city/town by postcode not found.||Город получателя по его индексу не найден.&lt;br /&gt;
|-&lt;br /&gt;
|126||Incorrect items prepayment and pickup.||Заказ не может содержать только вложения «Предоплата» и «Забор».&lt;br /&gt;
|-&lt;br /&gt;
|127||Package limit exceeded||Превышен лимит количества мест&lt;br /&gt;
|-&lt;br /&gt;
|128||Quantity of item Prepayment cannot be greater than 1||Количество вложений типа «Предоплата» не может быть больше 1.&lt;br /&gt;
|-&lt;br /&gt;
|129||Sum of cod must be equal sum of items||Объявленная стоимость должна быть равна сумме вложений.&lt;br /&gt;
|-&lt;br /&gt;
|130||Specify a valid respstore code.||Укажите код ответственного филиала.&lt;br /&gt;
|-&lt;br /&gt;
|131||Cannot edit, order has not been synchronized.||Невозможно изменить заказ пока он не синхронизирован.&lt;br /&gt;
|-&lt;br /&gt;
|132||Specify a valid &amp;quot;Recipient city/town&amp;quot; field value.||Укажите город получателя&lt;br /&gt;
|-&lt;br /&gt;
|133||Specify a valid &amp;quot;weight&amp;quot; for the town.||Укажите корректный вес для города&lt;br /&gt;
|-&lt;br /&gt;
|134||Specify a valid &amp;quot;paytype&amp;quot; for the town.||Укажите тип оплаты для города&lt;br /&gt;
|-&lt;br /&gt;
|135||Specify the correct SKU ID/code for item.||Укажите артикул/код вложения&lt;br /&gt;
|-&lt;br /&gt;
|136||Specify warehouse goods in the order.||Укажите вложения в заказе&lt;br /&gt;
|-&lt;br /&gt;
|137||The order's date of creation is more than 60 days ago.||Заказ создан более 60 дней назад&lt;br /&gt;
|-&lt;br /&gt;
|138||Specify a valid &amp;quot;Package dimension&amp;quot; field value.||Укажите корректные габариты места&lt;br /&gt;
|-&lt;br /&gt;
|139||Wrong type of XML query||Ошибка запроса&lt;br /&gt;
|-&lt;br /&gt;
|140||Duplicate item code in the order.||Дублирование кода вложения в заказе&lt;br /&gt;
|-&lt;br /&gt;
|141||Duplicate additional service in the order.||Дублирование кода дополнительной услуги в заказе&lt;br /&gt;
|-&lt;br /&gt;
|144||Incorrect extrafields.||Некорректные расширенные поля.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Передача значений полей в форме создания заказа в Личном Кабинете через GET параметры ===&lt;br /&gt;
Если вам требуется передавать значения полей в форме создания заказа в Личном Кабинете через GET параметры, то вы можете подробно ознакомиться с этим на данной странице - [[Личный_кабинет_клиента#Передача и подстановка значений полей формы создания заказа через GET параметры]]&lt;br /&gt;
&lt;br /&gt;
== Запрос статуса заказов ==&lt;br /&gt;
&lt;br /&gt;
=== Пример запроса статуса заказа ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;orderno2&amp;gt;5678&amp;lt;/orderno2&amp;gt;&lt;br /&gt;
  &amp;lt;ordercode&amp;gt;34234&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
  &amp;lt;givencode&amp;gt;234534&amp;lt;/givencode&amp;gt;&lt;br /&gt;
  &amp;lt;uid&amp;gt;af11c7c6-6645-4a20-9604-be911a75722d&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;datefrom&amp;gt;2016-07-21&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
  &amp;lt;dateto&amp;gt;2016-07-21&amp;lt;/dateto&amp;gt;&lt;br /&gt;
  &amp;lt;target&amp;gt;Автозавод&amp;lt;/target&amp;gt;&lt;br /&gt;
  &amp;lt;done&amp;gt;ONLY_NOT_DONE&amp;lt;/done&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains/&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts/&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;500&amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание полей запроса статуса ===&lt;br /&gt;
'''statusreq''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''client''' — Признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — Признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — Признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
* '''orderno''' — Идентификатор заказа у клиента (шифр). Необязательный элемент.&lt;br /&gt;
* '''ordercode''' — Внутренний код заказа. Необязательный элемент.&lt;br /&gt;
* '''orderno2''' — Номер заказа из срочных. Необязательный элемент. &lt;br /&gt;
* '''uid''' — Уникальный идентификатор, если он был добавлен при создании заказа. Необязательный элемент. Запрос информации по uid возможен в течении суток после создания заказа&lt;br /&gt;
* '''datefrom''' — Дата заказа «с». Необязательный элемент.&lt;br /&gt;
* '''dateto''' — Дата заказа «по». Необязательный элемент.&lt;br /&gt;
* '''target''' — Строка поиска. Позволяет указать текст, который содержится в названии компании или адресе получателя.&lt;br /&gt;
* '''done''' — Может принимать значения:&lt;br /&gt;
:* ONLY_DONE — Только доставленные (имеются в виду успешные статусы, например, '''Доставлен''' или '''Частично доставлен''')&lt;br /&gt;
:* ONLY_NOT_DONE — Только не доставленные (заказы, которые не являются доставленными, например, '''Не доставлен''' или '''Утерян''')&lt;br /&gt;
:* ONLY_NEW — Только новые&lt;br /&gt;
:* ONLY_DELIVERY — Только заказы в обработке — заказы, находящиеся в любом статусе, кроме конечных: Доставлено, Не доставлено, Отменён и т. д.&lt;br /&gt;
:* ''Пусто'' — все корреспонденции&lt;br /&gt;
&lt;br /&gt;
* '''changes''' — может принимать значение только ONLY_LAST. Если указан этот параметр, все остальные игнорируются. Описание данного режима приведено здесь: [[#Передача только изменившихся статусов|Передача только изменившихся статусов]]&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия фильтрации по «orderno». Все вложенные элементы одновременно накладывают условие «И». Минимум 5 символов!&lt;br /&gt;
:* '''namecontains''' — Поиск по номеру заказа(шифр), который содержит «orderno».&lt;br /&gt;
:* '''namestarts''' — Поиск по номеру заказа(шифр), который начинается с «orderno».&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Необязательный параметр. Дает возможность получить не все измененные заказы, а только какое-то определенное количество. Помогает на случай, если у вас скопилось очень много измененных заказов и нужно их грузить лимитировано. После каждой итерации нужно вызывать commitlaststatus с контейнером списка обработанных кодов, [[#Лимитирование запросов|читать подробнее]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# Периода запроса статусов (контейнеры '''datefrom''' и '''dateto''') ограничивается двумя месяцами — два месяца до даты '''«по»'''.&lt;br /&gt;
# Если не указаны обе даты — '''dateto''' принимается равной текущей дате.&lt;br /&gt;
# Если не указана дата '''dateto''' — она принимается равной '''datefrom''' плюс 2 месяца.&lt;br /&gt;
# Если не указана дата '''datefrom''' — она принимается равной '''dateto''' минус 2 месяца.&lt;br /&gt;
# Поиск по '''conditions''' работает только для «Номер заказа(шифр)» и только от 4 символов&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Примеры ответов ===&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq count=&amp;quot;23&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot; awb=&amp;quot;qwerty&amp;quot; orderno2=&amp;quot;123123&amp;quot; ordercode=&amp;quot;34534234&amp;quot; givencode=&amp;quot;2345334&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;contacts&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+74951234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;/contacts&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;23432&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67 - Иван (916)234.45.21 Петр,mvd@mail.ru&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;contacts&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+74951234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+79162344521&amp;lt;/phone&amp;gt;&lt;br /&gt;
       &amp;lt;email&amp;gt;mvd@mail.ru&amp;lt;/email&amp;gt;&lt;br /&gt;
     &amp;lt;/contacts&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;1112223335&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;153361&amp;quot; regioncode=&amp;quot;78&amp;quot; regionname=&amp;quot;Санкт-Петербург город&amp;quot;&amp;gt;Санкт-Петербург город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;area&amp;gt;Район 1&amp;lt;/area&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;126&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;clientcode&amp;gt;QWERTY&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
     &amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;1234&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;paytype code=&amp;quot;1&amp;quot;&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;return_type&amp;gt;3&amp;lt;/return_type&amp;gt;&lt;br /&gt;
   &amp;lt;return_weight&amp;gt;5.1&amp;lt;/return_weight&amp;gt;&lt;br /&gt;
   &amp;lt;return_message&amp;gt;Доставлено в целости&amp;lt;/return_message&amp;gt;&lt;br /&gt;
   &amp;lt;return_date&amp;gt;2026-01-19&amp;lt;/return_date&amp;gt;&lt;br /&gt;
   &amp;lt;return_time&amp;gt;13:18:00&amp;lt;/return_time&amp;gt;&lt;br /&gt;
   &amp;lt;pickup&amp;gt;NO&amp;lt;/pickup&amp;gt;&lt;br /&gt;
   &amp;lt;print_check&amp;gt;YES&amp;lt;/print_check&amp;gt;&lt;br /&gt;
   &amp;lt;waittime&amp;gt;12&amp;lt;/waittime&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;   &lt;br /&gt;
   &amp;lt;currcoords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot; accuracy=&amp;quot;50&amp;quot; RequestDateTime=&amp;quot;2014-04-21 18:07:45&amp;quot;&amp;gt;&amp;lt;/currcoords&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Иванов Владимир Петрович&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;phone&amp;gt;+79161234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
   &amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice total=&amp;quot;158.6&amp;quot; delivery=&amp;quot;100.00&amp;quot; return=&amp;quot;58.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;1&amp;quot; price=&amp;quot;150&amp;quot;&amp;gt;База&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;2&amp;quot; price=&amp;quot;0&amp;quot;&amp;gt;% от объявленной стоимости&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;3&amp;quot; price=&amp;quot;8.6&amp;quot;&amp;gt;Топливный сбор&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;4&amp;quot; price=&amp;quot;0&amp;quot;&amp;gt;Округление&amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;receiverpays&amp;gt;NO&amp;lt;/receiverpays&amp;gt;&lt;br /&gt;
   &amp;lt;acceptpartially&amp;gt;NO&amp;lt;/acceptpartially&amp;gt;&lt;br /&gt;
   &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; color=&amp;quot;16777215&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;statushistory&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-05-30 10:20:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Новый&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;NEW&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 17:38:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Планируется отправка&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DEPARTURING&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 19:53:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Отправлено со склада&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DEPARTURE&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 07:41:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Получен складом&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;ACCEPTED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 09:17:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Выдан курьеру на доставку&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DELIVERY&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен (предварительно)&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;COURIERDELIVERED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;/statushistory&amp;gt;&lt;br /&gt;
   &amp;lt;customstatecode&amp;gt;2&amp;lt;customstatecode&amp;gt;&lt;br /&gt;
   &amp;lt;clientstatecode&amp;gt;&amp;lt;/clientstatecode&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredto&amp;gt;Иванова, секр.&amp;lt;/deliveredto&amp;gt;&lt;br /&gt;
   &amp;lt;delivereddate&amp;gt;2016-06-02&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredtime&amp;gt;17:22&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
   &amp;lt;department&amp;gt;Отдел&amp;lt;/department&amp;gt;&lt;br /&gt;
   &amp;lt;costcode&amp;gt;cc12345&amp;lt;/costcode&amp;gt;&lt;br /&gt;
   &amp;lt;outstrbarcode&amp;gt;EXT123456&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
   &amp;lt;respstore&amp;gt;14&amp;lt;/respstore&amp;gt;&lt;br /&gt;
   &amp;lt;partner&amp;gt;Офис на Ленина&amp;lt;/partner&amp;gt;&lt;br /&gt;
   &amp;lt;arrival&amp;gt;2016-05-02 23:21&amp;lt;/arrival&amp;gt;&lt;br /&gt;
    &amp;lt;receipt fdNum=&amp;quot;124555&amp;quot; fnSn=&amp;quot;9289000100295555&amp;quot; kktNum=&amp;quot;0001611984048555&amp;quot; inn=&amp;quot;7722756555&amp;quot; fdValue=&amp;quot;2899551555&amp;quot; summ=&amp;quot;387.5&amp;quot; ofdUrl=&amp;quot;gate.ofd.ru&amp;quot;&amp;gt;https://ofd.ru/rec/7722756555/0001611984048555/9289000100295555/124555/2899551555&amp;lt;/receipt&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34533&amp;quot; extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; article=&amp;quot;1&amp;quot; returns=&amp;quot;0&amp;quot; origincountry=&amp;quot;040&amp;quot; GTD=&amp;quot;&amp;quot; excise=&amp;quot;0.00&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; govType=&amp;quot;1&amp;quot; suppcompany=&amp;quot;Поставщик&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; suppphone=&amp;quot;79161234567&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34456&amp;quot; extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot; govType=&amp;quot;1&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34421&amp;quot; extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; VATrate=&amp;quot;18&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; itemcode=&amp;quot;44123&amp;quot; article=&amp;quot;3&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot; govType=&amp;quot;1&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package code=&amp;quot;33331&amp;quot; strbarcode=&amp;quot;ORD0000001&amp;quot; mass=&amp;quot;1&amp;quot; message=&amp;quot;&amp;quot; got=&amp;quot;YES&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package code=&amp;quot;33332&amp;quot; strbarcode=&amp;quot;ORD0000002&amp;quot; mass=&amp;quot;2.5&amp;quot; message=&amp;quot;&amp;quot; got=&amp;quot;NO&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;extrafields&amp;gt;&lt;br /&gt;
      &amp;lt;extrafield&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;courier_car&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;ВАЗ 2106, бежевый&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/extrafield&amp;gt;&lt;br /&gt;
   &amp;lt;/extrafields&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа если нет заказов'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq count=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке авторизации'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
&amp;lt;error error=&amp;quot;1&amp;quot; errormsg=&amp;quot;authorization error&amp;quot;&amp;gt;&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке синтаксиса'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
   &amp;lt;error&amp;gt;column:1 line:11 message:expected '&amp;gt;'&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание полей ответа статусов ===&lt;br /&gt;
Все поля ответа соответствуют структуре order при создании заказа, с некоторыми добавлениями:&lt;br /&gt;
&lt;br /&gt;
* Атрибуты контейнера '''order''':&lt;br /&gt;
:* '''''awb''''' — Номер накладной в системе курьерской службы.&lt;br /&gt;
:* '''''orderno2''''' — Номер накладной в подсистеме срочной доставки курьерской службы.&lt;br /&gt;
:* '''''ordercode''''' — внутренний код заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
:* '''''givencode''''' — внутренний код заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
&lt;br /&gt;
*'''paytype''' - Тип оплаты заказа получателем. Принимает значения:&lt;br /&gt;
:: CASH - Наличными при получении (по-умолчанию)&lt;br /&gt;
:: CARD - Картой при получении&lt;br /&gt;
:: NO - Без оплаты.&lt;br /&gt;
:: OTHER - Прочее (Предусмотрен для того, чтобы оплата поступала непосредственно в курьерскую службу посредством прочих типов оплаты - таких как: вебмани, яденьги, картой на сайте, прочие платежные системы и т.д.)&lt;br /&gt;
* Атрибуты контейнера '''paytype''':&lt;br /&gt;
** '''''code''''' - (integer) внутренний код типа оплаты заказа в системном справочнике &amp;quot;Типы оплаты корреспонденции&amp;quot;. Не обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* атрибут '''''code''''' контейнера '''item''' — внутренний код строки заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
:* '''''returns''''' — количество данного товара, от которого отказался получатель. Не нулевое только в случае частичного отказа.&lt;br /&gt;
&lt;br /&gt;
* атрибут '''''got''''' контейнера '''package''' — признак принятого места YES / NO.&lt;br /&gt;
:* '''''returns''''' — количество данного товара, от которого отказался получатель. Не нулевое только в случае частичного отказа.&lt;br /&gt;
&lt;br /&gt;
* '''''area''''' в контейнере '''receiver''' — район/метро получателя.&lt;br /&gt;
* '''''coords''''' в контейнере '''receiver''' — координаты получателя.&lt;br /&gt;
* '''''deliveryPIN''''' в контейнере '''receiver''' — Пин-код.&lt;br /&gt;
* '''pickup''' — признак оформления забора, возможные значения: '''YES''', '''NO'''. Если указано '''YES''', то весь заказ считается заданием на забор груза, а не на доставку.&lt;br /&gt;
* '''currcoords''' — текущие координаты заказа. Атрибуты:&lt;br /&gt;
:* '''''lat''''' — широта&lt;br /&gt;
:* '''''lon''''' — долгота&lt;br /&gt;
:* '''''accuracy''''' — точность в метрах&lt;br /&gt;
:* '''''RequestDateTime''''' — дата/время последнего обновления координат.&lt;br /&gt;
&lt;br /&gt;
* '''courier''' — Данные курьера, которому выдан заказ. Если заказ не выдан, то выводятся данные запланированного курьера.&lt;br /&gt;
* '''waittime ''' — Время ожидания курьера.&lt;br /&gt;
* '''deliveryprice''' — Стоимость услуг в валюте расчетов с клиентом. Атрибуты:&lt;br /&gt;
:* '''''total''''' — общая стоимость услуг&lt;br /&gt;
:* '''''delivery''''' — стоимость доставки «Туда»&lt;br /&gt;
:* '''''return''''' — стоимость доставки «Обратно» (если order-&amp;gt;return=YES)&lt;br /&gt;
Тэг '''deliveryprice''' включает список дополнительных услуг (только для тарифа «Премиум»):&lt;br /&gt;
:* '''''advprice''''' — наименование дополнительной услуги&lt;br /&gt;
:* '''''code''''' — код дополнительной услуги&lt;br /&gt;
:* '''''price''''' — стоимость дополнительной услуги&lt;br /&gt;
&lt;br /&gt;
* '''status''' — статус доставки (список статусов см. ниже). Атрибуты (заполняются начиная с версии системы 2008.0.0.670):&lt;br /&gt;
:* '''''eventstore''''' — филиал, к которому относится текущий статус&lt;br /&gt;
:* '''''eventtime''''' — время события по часовому поясу места его наступления.&lt;br /&gt;
:* '''''createtimegmt''''' — время по GMT создания записи о смене статуса в БД. Используется для сортировки записей, чтобы соблюсти хронологическую последовательность. &amp;lt;spoiler text=&amp;quot;Подробнее&amp;quot;&amp;gt;Большинство событий фиксируются в полях eventtime и createtimegmt на основании одного действия, тогда они отличаются только сдвигом от GMT. Однако, если курьер доставил отправление 10.10.2010 в 20:00, по какой-то причине не внес это в мобильное приложение, на следующий день сдал накладную, и в 9 утра оператор внесла, что он доставил вчера в 20:00. Тогда в createtimegmt будет сегодня 6 утра (для Москвы), а в eventtime — вчера в 20:00. При этом оператор по каким-то причинам может внести время вручения раньше, чем какое-то предыдущее событие, т.о. нарушится последовательность времени в eventtime, но при сортировке по createtimegmt все-равно все будет правильно.&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
:* '''''message''''' — наименование филиала-получателя, при передаче между филиалами&lt;br /&gt;
:* '''''title''''' — русское наименование статуса&lt;br /&gt;
&lt;br /&gt;
* '''statushistory''' — история статусов доставки. Содержит список контейнеров '''status'''. Заполняется только для тарифа «Премиум» начиная с версии системы 2008.0.0.670.&lt;br /&gt;
* '''customstatecode''' — код внутреннего статуса курьерской службы. Значения уточняйте в курьерской службе. Назначаются курьерской службой в разделе «Справочники» — «Статусы» — «15 Статусы корреспонденции». Справочник не передается через API клиенту по причине возможного наличия в нем внутренних технологических статусов курьерской службы.&lt;br /&gt;
* '''clientstatecode''' — код статуса клиента. Используется, если клиент предлагает свои коды статусов доставки/причин недоставки.&lt;br /&gt;
* '''deliveredto''' — данные из поля «Инфо. о доставке» (может быть информация о доставке, причина недоставки и т. п.).&lt;br /&gt;
* '''delivereddate''' — дата вручения.&lt;br /&gt;
* '''deliveredtime''' — время вручения. В случае недоставки может быть пустым.&lt;br /&gt;
* '''arrival''' — плановая дата прибытия в формате гггг-мм-дд чч: мм: сс. Заполняется только при использовании автоматических систем планирования (Максоптра, Яндекс доставка), во всех остальных случаях - пустое.&lt;br /&gt;
* '''outstrbarcode''' — код у подрядчика (код заказа во внешней системе). Используется в интеграциях с внешними системами.&lt;br /&gt;
* '''partner''' — текущий филиал/подрядчик.&lt;br /&gt;
* '''return_message''' — информация о возврате&lt;br /&gt;
* '''return_date''' - дата возврата&lt;br /&gt;
* '''return_time''' - время возврата&lt;br /&gt;
* '''department''' — Подразделение, в котором оформляется заказ.&lt;br /&gt;
&lt;br /&gt;
Контейнер '''status''' может принимать следующие значения:&lt;br /&gt;
: AWAITING_SYNC — Ожидает синхронизации. Данные заказа пока не появились в службе доставки.&lt;br /&gt;
: '''NEW''' — Успешно создан, передан в службу доставки.&lt;br /&gt;
: NEWPICKUP — Создан забор.&lt;br /&gt;
: PICKUP — Забран у отправителя.&lt;br /&gt;
: WMSASSEMBLED — Скомплектован на складе фулфилмента.&lt;br /&gt;
: WMSDISASSEMBLED — Разукомплектован на склад фулфилмента.&lt;br /&gt;
: '''ACCEPTED''' — Получен складом.&lt;br /&gt;
: CUSTOMSPROCESS — Производится таможенный контроль.&lt;br /&gt;
: CUSTOMSFINISHED — Таможенный контроль произведен.&lt;br /&gt;
: CONFIRM — Согласована доставка.&lt;br /&gt;
: UNCONFIRM — Не удалось согласовать доставку.&lt;br /&gt;
: DEPARTURING — Планируется отправка со склада на другой склад.&lt;br /&gt;
: DEPARTURE — Отправлено со склада на другой склад.&lt;br /&gt;
: INVENTORY — Инвентаризация. Убедились в наличии отправления на складе.&lt;br /&gt;
: PICKUPREADY — Готов к выдаче в ПВЗ.&lt;br /&gt;
: '''DELIVERY''' — Выдан курьеру на доставку.&lt;br /&gt;
: COURIERDELIVERED — Доставлен (предварительно, ожидает подтверждения менеджером, чтобы перейти в статус COMPLETE).&lt;br /&gt;
: COURIERPARTIALLY — Частично доставлен (предварительно, ожидает подтверждения менеджером, чтобы перейти в статус PARTIALLY).&lt;br /&gt;
: COURIERCANCELED — Отказ (предварительно, после этого ожидается COURIERRETURN).&lt;br /&gt;
: COURIERRETURN — Возвращено курьером. Курьер не смог доставить до получателя и вернул заказ обратно на склад. Это промежуточный статус, после которого менеджер выясняет, нужно ли повторно доставлять (статусы DATECHANGE/DELIVERY) или это окончательная недоставка (CANCELED).&lt;br /&gt;
: DATECHANGE — Перенос даты доставки.&lt;br /&gt;
&lt;br /&gt;
: '''COMPLETE''' — Доставлен.&lt;br /&gt;
: '''PARTIALLY''' — Доставлен частично.&lt;br /&gt;
: '''CANCELED''' — Не доставлен (Возврат/Отмена). После этого статуса отправление должны вернуть заказчику, будут статусы RETURNING и RETURNED&lt;br /&gt;
&lt;br /&gt;
: RETURNING — Планируется возврат заказчику (после CANCELED).&lt;br /&gt;
: RETURNED — Возвращен заказчику.&lt;br /&gt;
: LOST — Утрачен/утерян.&lt;br /&gt;
&lt;br /&gt;
: PARTLYRETURNING — Планируется возврат остатков.&lt;br /&gt;
: PARTLYRETURNED — Остаток возвращен.&lt;br /&gt;
: TRANSACCEPTED — Прибыл на склад перевозчика.&lt;br /&gt;
: PICKUPTRANS — Забран у перевозчика.&lt;br /&gt;
: WITHDRAWN_FROM_PICKUP_POINT - Изъят.&lt;br /&gt;
: CUSTOMSDELAY - Задержка отправления таможенным органом.&lt;br /&gt;
: DEPARTUREDELAY - Задержка отправления перевозчиком.&lt;br /&gt;
: STORETAKE - Принят в работу на складе.&lt;br /&gt;
&lt;br /&gt;
'''Примечание.''' В будущем возможно дополнение используемого набора статусов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
&lt;br /&gt;
# Контейнер '''statushistory''' и '''deliveryprice''' заполняется для тарифов [[Личный кабинет курьерской службы#Функции личного кабинета|Премиум и Максимум]].&lt;br /&gt;
# Контейнер '''packages''' не возвращает более 1000 элементов.&lt;br /&gt;
# Система никогда не гарантирует последовательность прохождения заказом набора статусов. То есть Вы можете получить статус «COMPLETE», а следующим запросом — «NEW» — такое может произойти, например, если оператор ошибочно отметил заказ выполненным, а затем исправил ошибку.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Передача только изменившихся статусов ===&lt;br /&gt;
В нашем API предусмотрено удобное средство получения статусов всех заказов, без необходимости «бомбить» сервер запросами статусов по каждому заказу. Работает это так: раз, например, в 10 минут, вы посылаете запрос «покажите все изменившиеся статусы». Пример запроса ниже. Система вам отдает ВСЕ заказы, статусы (или некоторые другие поля, см. ниже) которых изменились с момента последнего запроса. Вы разбираете полученный документ, по каждому заказу сохраняете его актуальный статус в своей системе, и если все хорошо, у вас все получилось, ваша система неожиданно не упала от наплыва информации, посылаете нам запрос подтверждения получения статусов (commitlaststatus). Мы у себя отмечаем, что эти статусы вами получены и их не надо передавать повторно. Таким образом, сколько бы заказов у вас ни было, статусы по ним всем почти в реальном времени вы можете получать всего двумя запросами.&lt;br /&gt;
&lt;br /&gt;
Для получения только изменившихся статусов отправьте запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;streamid&amp;gt;1234&amp;lt;/streamid&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Система выдает все заказы, в которых с момента последнего запроса в этом режиме изменилось хотя бы одно из полей:&lt;br /&gt;
 orderno&lt;br /&gt;
 status&lt;br /&gt;
 delivereddate&lt;br /&gt;
 deliveredtime&lt;br /&gt;
 deliveredto&lt;br /&gt;
 receiver-&amp;gt;date&lt;br /&gt;
 receiver-&amp;gt;address&lt;br /&gt;
 price&lt;br /&gt;
&lt;br /&gt;
После успешной обработки ответа необходимо отметить полученные статусы успешно полученными, отправив запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;streamid&amp;gt;1234&amp;lt;/streamid&amp;gt;&lt;br /&gt;
&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей запроса'''&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — авторизация. Обязательный элемент.&lt;br /&gt;
* '''streamid''' — идентификатор потока. Если у вас несколько интеграций и каждая нуждается в получении статусов, вы можете передавать данный параметр и тем самым разделять получение и отметку об успешном получении статусов по заказам. Значение должно входить в промежуток от 100 до 10000, включительно. Необязательный элемент.&lt;br /&gt;
* '''client''' — признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
&lt;br /&gt;
В случае успеха вы получите ответ:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus error=&amp;quot;0&amp;quot;&amp;gt;OK&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Такой способ передачи статусов гарантирует полную корректную передачу статусов, даже если в нашей системе статус изменился между запросом статусов и подтверждением их получения. Если система не получила подтверждение передачи статуса, она будет считать информацию непереданной и выдаст ее при повторном запросе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
# При этом способе передачи (&amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;) система просматривает заказы, оформленные за последние 3 месяца. Если заказ сделан ранее, изменение статуса по нему не попадет в результат выполнения запроса.&lt;br /&gt;
# Система всегда выдает текущий статус. Вы можете одним запросом получить статус «NEW», а следующим — «COMPLETE». Между запросами отправление могло пройти через несколько промежуточных статусов. Если нужна гарантия получения всех промежуточных статусов, нужно анализировать блок statushistory (может не заполняться вследствие ограничений версии или тарифа конкретной службы доставки).&lt;br /&gt;
# Система не гарантирует последовательность прохождения заказом набора статусов. Вы можете получить статус «COMPLETE», а следующим запросом «NEW» — такое может произойти, например, если оператор ошибочно отметил заказ выполненным, а затем исправил ошибку.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Лимитирование запросов ===&lt;br /&gt;
Дает возможность получить не все измененные заказы, а только какое-то определенное количество. Помогает на случай, если у вас скопилось очень много измененных заказов и нужно их грузить лимитировано. После успешной обработки получнных заказов, '''обязательно''' нужно вызвать commitlaststatus с кодами обработанных заказов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример'''&lt;br /&gt;
&lt;br /&gt;
Для получения ограниченного числа изменившихся заказов отправьте запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;5&amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После успешной обработки ответа необходимо отметить полученные статусы успешно полученными, отправив запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;acs&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;11111&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;22222&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;33333&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;44444&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;55555&amp;lt;/ac&amp;gt;&lt;br /&gt;
  &amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''acs''' — контейнер. Обязательный элемент.&lt;br /&gt;
* '''ac''' — атрибут''' ordercode''' контейнера '''order''' полученного на этапе запроса '''statusreq'''.&lt;br /&gt;
&lt;br /&gt;
Помимо приведенных в примере параметров, вы также можете передавать и остальные, описанные ранее, например '''streamid'''.&lt;br /&gt;
&lt;br /&gt;
== Трекинг заказа по номеру ==&lt;br /&gt;
Запрос трекинга по номеру предназначен для выдачи минимальной обезличенной информации о конкретном заказе не авторизованному пользователю. Наша система имеет для этого интерфейс по адресу «home.courierexe.ru/{код экстра}/tracking». Вы можете либо сделать ссылку на такую страницу на своем сайте, либо разместить ее [[#Размещение страниц на своем сайте (iframe)|iframe’ом]] у себя, либо сделать свою и пользоваться нашим API. Этот интерфейс создан специально для выдачи информации живому пользователю сайта. Для получения статусов заказов в свою информационную систему нужно использовать запрос «statusreq», желательно с параметром changes=ONLY_LAST!&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking&amp;gt;&lt;br /&gt;
  &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/tracking&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot; ordercode=&amp;quot;12345&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;AWB&amp;gt;111111&amp;lt;/AWB&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;1&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Москва город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;1&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Москва город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;2&amp;lt;/return_service&amp;gt;&lt;br /&gt;
   &amp;lt;return_date&amp;gt;&amp;lt;/return_date&amp;gt;&lt;br /&gt;
   &amp;lt;return_time&amp;gt;&amp;lt;/return_time&amp;gt;&lt;br /&gt;
   &amp;lt;return_message&amp;gt;&amp;lt;/return_message&amp;gt;&lt;br /&gt;
   &amp;lt;waittime&amp;gt;12&amp;lt;/waittime&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice total=&amp;quot;158.6&amp;quot; delivery=&amp;quot;100.00&amp;quot; return=&amp;quot;58.6&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Иванов Владимир Петрович&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;phone&amp;gt;+79161234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
   &amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;currcoords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot; accuracy=&amp;quot;50&amp;quot; RequestDateTime=&amp;quot;2014-04-21 18:07:45&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;statushistory&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-05-30 10:20:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Новый&amp;quot;&amp;gt;NEW&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 17:38:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Планируется отправка&amp;quot;&amp;gt;DEPARTURING&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 19:53:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Отправлено со склада&amp;quot;&amp;gt;DEPARTURE&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 07:41:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Получен складом&amp;quot;&amp;gt;ACCEPTED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 09:17:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Выдан курьеру на доставку&amp;quot;&amp;gt;DELIVERY&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен (предварительно)&amp;quot;&amp;gt;COURIERDELIVERED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;/statushistory&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredto&amp;gt;Иванова, секр.&amp;lt;/deliveredto&amp;gt;&lt;br /&gt;
   &amp;lt;delivereddate&amp;gt;2016-06-02&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredtime&amp;gt;17:22&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
   &amp;lt;outstrbarcode&amp;gt;EXT123456&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34533&amp;quot; extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; article=&amp;quot;1&amp;quot; returns=&amp;quot;0&amp;quot; origincountry=&amp;quot;040&amp;quot; GTD=&amp;quot;&amp;quot; excise=&amp;quot;0.00&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; suppcompany=&amp;quot;Поставщик&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; suppphone=&amp;quot;79161234567&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34456&amp;quot; extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34421&amp;quot; extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; VATrate=&amp;quot;18&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; article=&amp;quot;3&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;acquirers&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;2&amp;quot; name=&amp;quot;Ibox&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;5&amp;quot; name=&amp;quot;Payme&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;6&amp;quot; name=&amp;quot;Click&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/acquirers&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/tracking&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где,&lt;br /&gt;
* '''acquirers''' / '''acquirer''' - эквайринг, доступный для получения ссылки на оплату заказа&lt;br /&gt;
** '''acquirers''' / '''acquirer''' / ''code'' - внутренний код эквайринга&lt;br /&gt;
** '''acquirers''' / '''acquirer''' / ''name'' - наименование эквайринга&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Получение информации в формате 17 TRACK'''&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking17&amp;gt;&lt;br /&gt;
  &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/tracking17&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;number&amp;quot;:&amp;quot;ExtNumber&amp;quot;,&lt;br /&gt;
	&amp;quot;oriNumber&amp;quot;:&amp;quot;1234&amp;quot;,&lt;br /&gt;
	&amp;quot;oriCountry&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
	&amp;quot;destCountry&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
	&amp;quot;status&amp;quot;:&amp;quot;Complete&amp;quot;,&lt;br /&gt;
	&amp;quot;events&amp;quot;:[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 17:22:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Complete&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 17:22:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Courierdelivered&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 09:17:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Delivery&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 07:41:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Accepted&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-01 19:53:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Departure&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-01 17:38:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Departuring&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-05-30 10:20:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;New&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функция ищет последний заказ по номеру среди заказов всех клиентов. Выдает неперсонализированную информацию о текущем состоянии заказа.&amp;lt;br&amp;gt;&lt;br /&gt;
Описание контейнеров ответа аналогично описанию [[API#.D0.97.D0.B0.D0.BF.D1.80.D0.BE.D1.81 .D1.81.D1.82.D0.B0.D1.82.D1.83.D1.81.D0.B0 .D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.BE.D0.B2|Запроса статусов заказов]].&lt;br /&gt;
&lt;br /&gt;
=== Получение ссылки для оплаты заказа ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
Этим методом вы можете только получить ссылку на оплату. Фискализация этого платежа идет отдельным процессом. По его возможности уточняйте в службе поддержки.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заказ доступен для оплаты, если:&lt;br /&gt;
* тип оплаты заказа не наличными, а например картой или по договору, альтернативой может стать установка параметра &amp;quot;Спрашивать тип оплаты&amp;quot; в карточке клиента.&lt;br /&gt;
* заказ имеет наложенный платеж&lt;br /&gt;
* не оплачен&lt;br /&gt;
* активен (не доставлен, не возвращен в т.ч. курьером)&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink&amp;gt;&lt;br /&gt;
    &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
    &amp;lt;acq&amp;gt;&lt;br /&gt;
        &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/acq&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
        &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/acqlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*'''extra''' - код экстраклиента в системе Measoft.&lt;br /&gt;
*acq.'''code''' - внутренний код платформы эквайринга в системе Measoft. (известен в МП из [https://wiki.courierexe.ru/index.php/API#.D0.A2.D1.80.D0.B5.D0.BA.D0.B8.D0.BD.D0.B3_.D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.B0_.D0.BF.D0.BE_.D0.BD.D0.BE.D0.BC.D0.B5.D1.80.D1.83 Трекинга]) &lt;br /&gt;
*order.'''ordercode''' - внутренний код заказа, типа ''int'', уникальный в пределах экстраклиента&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink error=&amp;quot;0&amp;quot; amount=&amp;quot;2000&amp;quot; extid=&amp;quot;161083231&amp;quot;&amp;gt;https://qr.nspk.ru/AD10001A7GLVGA9YDO2I0789SIOPV3?type=02&amp;amp;amp;bank=1000011&amp;amp;amp;sum=2000&amp;amp;amp;cur=RUB&amp;amp;amp;crc=7E9C&amp;lt;/acqlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*'''acqlink''' - ссылка на оплату заказа&lt;br /&gt;
*acqlink.'''amount''' - тип integer сумма платежа в копейках в общем случае, в других случаях в соответствии с типом валюты&lt;br /&gt;
*acqlink.'''extid''' - идентификатор счета на стороне платежной системы&lt;br /&gt;
*acqlink.'''error'' - код ошибки, если отличается от 0, означает невозможность получения ссылки на оплату, в этом случае ссылки на оплату не будет и ответ будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink error=&amp;quot;2&amp;quot; message=&amp;quot;Ошибка авторизации: Invalid token&amp;quot; amount=&amp;quot;2000&amp;quot; extid=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*acqlink.'''message''' - текст ошибки возвращаемой эквайрингом&lt;br /&gt;
&lt;br /&gt;
Возможные типы ошибок получения ссылки:&lt;br /&gt;
* '''1''' - не настроен эквайринг, либо не найден заказ&lt;br /&gt;
* '''2''' - ошибка на стороне эквайринга&lt;br /&gt;
* '''3''' - запрещающий статус курьера (заказ доставлен, частично доставлен)&lt;br /&gt;
* '''4''' - оплата заказа не разрешена&lt;br /&gt;
&lt;br /&gt;
== Изменение заказа ==&lt;br /&gt;
Запрос предназначен для изменения заказов.&lt;br /&gt;
&lt;br /&gt;
Изменять заказы могут курьерские службы с тарифами «Премиум» и «Максимум». Чтобы разрешить изменение заказов, в личном кабинете курьерской службы перейдите в '''Настройки''' &amp;gt; '''Заказы''' и в разделе '''Отмена и редактирование''' установите флажок '''Разрешить отмену и изменение заказов'''.  Вы также можете пометить в списке '''Статусы для отмены и редактирования заказов'''   галками статусы корреспонденции, для которых возможны отмена и изменение заказов. По умолчанию (когда в этом списке ничего не выбрано) редактирование и отмена разрешены для статуса  «Новый»&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# Данные запроса изменения указываются '''полностью''', как если бы заказ создавался впервые.&lt;br /&gt;
# При отсутствии вложения в запросе изменения данное вложение '''не удаляется''' из заказа, но его количество становится равным 0.&lt;br /&gt;
# При одновременном изменении заказа в API и системе курьерской службы приоритет отдается данным системы курьерской службы. То есть изменения в API приняты не будут.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При редактировании заказа может быть отменен запланированный курьер. Это зависит от значения переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Корреспонденция''' &amp;gt; '''Автоматически устанавливать заплан. курьера по району''':&lt;br /&gt;
* '''Нет''' — при редактировании заказа по АПИ курьер не изменяется;&lt;br /&gt;
* '''Район''' — если изменен адрес доставки, курьер сбрасывается;&lt;br /&gt;
* '''Район или дата план. доставки''' — если изменен адрес доставки или плановая дата вручения, курьер сбрасывается.&lt;br /&gt;
&lt;br /&gt;
=== Описание полей запроса изменения ===&lt;br /&gt;
Все поля запроса соответствуют структуре order при создании заказа за исключением:&lt;br /&gt;
&lt;br /&gt;
* значение '''orderno''' данным методом изменить нельзя.&lt;br /&gt;
* значение '''barcode''' изменяется в случае явного его указания. В случае отсутствия или пустого значения - остается прежним.&lt;br /&gt;
* вместо корневого тэга '''neworder''' указывается '''editorder''';&lt;br /&gt;
* тэг курьера '''courier''' можно изменить только при включенной настройке '''Разрешить изменение курьера по АПИ''';&lt;br /&gt;
* для вложений '''item''' указывается внутренний код вложения в атрибуте '''code''', который можно получить при получении статуса заказа.&lt;br /&gt;
* для мест '''package''' указывается внутренний код вложения в атрибуте '''code''', который можно получить при получении статуса заказа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Необходимо иметь в виду, что:&lt;br /&gt;
&lt;br /&gt;
# Заказ нельзя изменить, пока он не синхронизирован с системой (пока предыдущие изменения не переданы в бэк-офис)&lt;br /&gt;
# Удаление вложений и мест выполняется не моментально, а в процессе синхронизации с бэк-офисом (для записей указываются метки Удалено)&lt;br /&gt;
&lt;br /&gt;
=== Описание полей ответа изменения ===&lt;br /&gt;
Все поля ответа соответствуют ответу при создании заказа за исключением корневого тэга — вместо '''neworder''' возвращается '''editorder'''.&lt;br /&gt;
&lt;br /&gt;
== Отмена заказа ==&lt;br /&gt;
Запрос предназначен для отмены заказов.&lt;br /&gt;
&lt;br /&gt;
Отменять заказы могут курьерские службы с тарифами «Премиум» и «Максимум». Разрешения для отмены заказов и статусы в которых заказы можно отменять описаны в разделе '''Изменение заказов'''&lt;br /&gt;
&lt;br /&gt;
При отмене заказа поле «Инфо о доставке» получает значение «Отменено заказчиком», поле «Дата доставки» — текущую дату, а «Вручил курьер» — системную запись «ОТМЕНА».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса отмены заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;cancelorder&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;&amp;quot; ordercode=&amp;quot;123456&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123aaa&amp;quot; ordercode=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/cancelorder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''cancelorder''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''order''' — Контейнер отменяемого заказа. Обязательный элемент. Запрос может содержать более одного контейнера '''order'''. Атрибуты:&lt;br /&gt;
:* '''''orderno''''' — Шифр заказа.&lt;br /&gt;
:* '''''ordercode''''' — Внутренний код заказа.&lt;br /&gt;
Обратите внимание, что должен быть указан хотя бы один из атрибутов ''orderno'' или ''ordercode''!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;cancelorder&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123test&amp;quot; ordercode=&amp;quot;123456&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123aaa&amp;quot; ordercode=&amp;quot;&amp;quot; error=&amp;quot;52&amp;quot; errormsg=&amp;quot;order not found&amp;quot; errormsgru=&amp;quot;Заказ не найден&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/cancelorder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавление вложений к накладной ==&lt;br /&gt;
&lt;br /&gt;
Метод позволяет прикрепить файлы к корреспонденции.&lt;br /&gt;
Размер загружаемого файла не должен превышать 1 Мб.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;addattachments&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234567&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;attachments&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo1.jpg&amp;quot;&amp;gt;JVBERi0xLjMN1wb25lbnQgMQ&lt;br /&gt;
    JUBQREYwMTIzNDU2Nzg5IDI NMyAwIG9iag08PA0vVHlwZSA&lt;br /&gt;
    U3VidHlwZSAvSW1hZ2UNL1d pZHRoIDE4MDgNL0hlaWdodCA&lt;br /&gt;
    ggNCAwIFINL0JpdHNQZXJDb 21wb25lbnQgMQ0vRGVjb2RlU&lt;br /&gt;
    ENL0NvbHVtbnMgMTgwOA0+P g0vSW1hZ2VNYXNrIHRydWUNL&lt;br /&gt;
    XhEZWNvZGUNPj4Nc3RyZWFt DQ&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo2.jpg&amp;quot;&amp;gt;VBERi0xLjMNAwIG9iag0HRoJ&lt;br /&gt;
    JUBQREYwMTIzNDU2Nzg5IDI NMyAwIG9iag08PA0vVHlwZSA&lt;br /&gt;
    vWE9iamVjdA0vU3VidHlwZS AvSW1hZ2UNL1dpZHRoIDEzNj &lt;br /&gt;
    gNL0hlaWdodCAxMzMzDS9MZ W5ndGggNCAwIFINL0JpdHNQZ &lt;br /&gt;
    XJDb21wb25lbnQgMQ0vRGVj b2RlUGFybXMgPDwNL0sgLTEN &lt;br /&gt;
    L0NvbHVtbnMgMTM2OA0+Pg0 vSW&amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/addattachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''addattachments''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''orderno''' — Номер заказа. Обязательный элемент. Может использоваться тэг &amp;lt;ordercode&amp;gt; с указанием внутреннего кода заказа.&lt;br /&gt;
* '''attachments''' — Обязательный элемент, в котором перечисляются передаваемые данные файлов.&lt;br /&gt;
** '''item''' — Бинарные данные (файл), закодированные в base64. Обязательный элемент.&lt;br /&gt;
*** '''name''' — Атрибут элемента '''item''', в котором передается имя файла. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addattachments&amp;gt;&lt;br /&gt;
  &amp;lt;attachments&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo1.jpg&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo2.jpg&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/addattachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Получение вложений к накладной ==&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;attachments&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234567&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''attachments''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''orderno''' — Номер/код заказа. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;attachments&amp;gt;&lt;br /&gt;
  &amp;lt;item name=&amp;quot;doc1.docx&amp;quot; timestamp=&amp;quot;2025-01-01 12:00:00&amp;quot; size=&amp;quot;35654&amp;quot;&amp;gt;JVBERixLjMN&lt;br /&gt;
  UwLJdLwIDKxTn+AScMjKqor7Xm3sp1yj1k6BzlPdX2Qsiit6yg3g1fCI4YVAgclUOIY5tDra2LvAcIS&lt;br /&gt;
  5/+8PsL/sXb0+aoper/9kL/4Ov/YE9QsHwyg7YZTtKICy0YVIYb4Nt7L1tPUMfaX9NpuTsvFCtBAvYG&lt;br /&gt;
  eJVZoZ2tm6+fZVqAavZpeLizVLtct1a+xvG0+bTSkw3Ac8PhdNfL4smrT2hSgPJLfyaVGyA2ndyW22t&lt;br /&gt;
  sFtTP5knktPNumSZ56QsFRPJkaU8ExDxAcMYMDIoBiIoR4/dDjHMbMW/EW4fiB1pvWmV2ONWIl1Xdub&lt;br /&gt;
  Xg1ob0qWX9W4qagsqzGhjRLsEGeJGVXg9oVC+XkJa9esrhGUmC0tuKEla+AplVO/OtHwXcW0FWui1z7&lt;br /&gt;
  6KHrtobuWV0xa9sCEiSvb91w3ePHOvfcveo5xt9o4ZevHF7ZOeKxV5qmVx2MI44a1L+Mhk5YuGT12xd&lt;br /&gt;
  Ibsb7r+j9bff/unQlv0al6HBnoD5G89q4+tkjgDtvwwARmqm2aa2Jgvmth8mrXquTNtl2u467vbF/5r&lt;br /&gt;
  vnMt9uesu21Me1bjeNJGlVfAaCtw+/jfenJ/fWjqa7ygExx+L0BcTGroxrKexQXIQ1ImfEW7ZRJZa+O&lt;br /&gt;
  ip7xJmmNESMxrgu/dquBbGypjJpFDJVRH1rVPR1Ifl4aFS5IEdDWZFSdyBBWKWhVSVu517ZgzOCFAwp&lt;br /&gt;
  wwbFph29g4fTaxnvn/3X78x+Tt56ZNffArgULt+HByvy7+yz6U6XWMawCi3+6gJXN0S+jf4t+HT34wg&lt;br /&gt;
  km7/HDp55YTSWMoCMgZsvZkBrXtIv4WA7xgkT4YpYpxjwLvnsWKkGE+pDbxER0UUWlpVFRY4oilTfM4&lt;br /&gt;
  MIzgCPgxjOlZ87ceA7ceRJrgpipFGyugPQ4OTI2S8lWJoqTpHJlJbNOeYM7zTcoVxSNyJXiYWSAMklT&lt;br /&gt;
  q/xd+3fd3/USq2V1rJ7RyBLHsuDSiLwgaOFc5LUCRGI+QWuBAsIwPlZrgRpSMseJyTzD15PKiIRE7bc&lt;br /&gt;
  Rggk5ijXAPpqISetD4wVm0AD2LHuBZdaxmK3HOKIZoG0QLmiZdVqspXnFIJwVyCKhWiDCI4bzH8Y76w&lt;br /&gt;
  TAnwM67HIqMISOkmJXY8mlYhpiNa7g2oTBkKxo4wgnvETQIUUrlFOn9KdOreDiKQx071rN4N61yRAi1&lt;br /&gt;
  7EGRhSOgoeLYv+k41+KZ1SVBXAuDjB+xuxnQmm8wJDcP5IRn+5penzbR/ivm7qleHK5o790w8ejXchI&lt;br /&gt;
  vOHIPWtWwYhtAO34LdDXqFqWxZEBLNstMCwwITBTWirxk12zuUppp&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В тегах item возвращаются бинарные данные (файлы), закодированные в base64.&lt;br /&gt;
&lt;br /&gt;
== Изменение статуса агентом ==&lt;br /&gt;
Запрос изменения статуса заказа позволяет установить окончательный статус заказа — «Доставлен» или «Не доставлен (Возврат/Отмена)».&lt;br /&gt;
&lt;br /&gt;
Кроме этого, устанавливается дата и время (при необходимости) изменения статуса, а также сообщение в поле ''Инфо о доставке''.&lt;br /&gt;
&lt;br /&gt;
При необходимости к заказу можно прикрепить изображения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса изменения статуса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;setorderinfo&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;123456&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;Получил Иванов&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;outstrbarcode&amp;gt;7654312&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;234567&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;PICKUPREADY&amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;eventtime&amp;gt;2016-05-30 10:20:00&amp;lt;/eventtime&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;Клиент отказался от покупки&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;storeprice&amp;gt;123&amp;lt;/storeprice&amp;gt;&lt;br /&gt;
    &amp;lt;items&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34533&amp;quot; quantity=&amp;quot;1&amp;quot; reason=&amp;quot;0&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34456&amp;quot; quantity=&amp;quot;0&amp;quot; reason=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34421&amp;quot; quantity=&amp;quot;2&amp;quot; reason=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/items&amp;gt;&lt;br /&gt;
    &amp;lt;attachments&amp;gt;&lt;br /&gt;
      &amp;lt;attachment filename=&amp;quot;filename1.jpg&amp;quot;&amp;gt; /9j/4AAQSkZJRgA&lt;br /&gt;
      BAQAAAQABAAD/2wBDAA0JCg sKCA0LCgsODg0PEyAVExISEy&lt;br /&gt;
      ccHhcgLikxMC4pLSwzOko+M zZGNywtQFdBRkxOUlNSMj5aY&lt;br /&gt;
      VpQYEpRUk//2wBDAQ4ODhMR EyYVFSZPNS01T09PT09PT09P&lt;br /&gt;
      T09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09&lt;br /&gt;
      PT09PT0//wAARCAYACAADAS IA&amp;lt;/attachment&amp;gt;&lt;br /&gt;
      &amp;lt;attachment filename=&amp;quot;filename2.jpg&amp;quot;&amp;gt; /9j/4AAQSkZJRgA&lt;br /&gt;
      BAQAAAQABAAD/2wBDAA0JCg sKCA0LCgsODg0PEyAVExISEy&lt;br /&gt;
      ccHhcgLikxMC4pLSwzOko+M zZGNywtQFdBRkxOUlNSMj5aY&lt;br /&gt;
      VpQYEpRUk//2wBDAQ4ODhMR EyYVFSZPNS01T09PT09PT09P&lt;br /&gt;
      T09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09&lt;br /&gt;
      PT09PT0//wAARCAYACAADAS IA&amp;lt;/attachment&amp;gt;&lt;br /&gt;
    &amp;lt;/attachments&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/setorderinfo&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей запроса статуса:'''&lt;br /&gt;
&lt;br /&gt;
'''setorderinfo''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''order''' — Контейнер заказа. Обязательный элемент. Запрос может содержать более одного контейнера '''order'''. Атрибут '''''ordercode''''' — внутренний код заказа.&lt;br /&gt;
* '''status''' — Новый статус заказа. Доступны статусы из раздела [[#Описание полей ответа статусов]], кроме AWAITING_SYNC и NEW.&lt;br /&gt;
* '''eventtime''' — Дата и время изменения статуса. Обязательно при указании статуса.&lt;br /&gt;
* '''message''' — Текст сообщения ''Инфо о доставке''.&lt;br /&gt;
* '''outstrbarcode''' — код у подрядчика (код заказа во внешней системе). Используется в интеграциях с внешними системами.&lt;br /&gt;
* '''paytype''' — Тип оплаты заказа. Допустимые значения CASH/CARD.&lt;br /&gt;
* '''storeprice''' — Агентское вознаграждение.&lt;br /&gt;
* '''items''' — Контейнер для описания вложений '''item''' . Атрибуты:&lt;br /&gt;
:* '''''code''''' — Код вложения.&lt;br /&gt;
:* '''''quantity''''' — Количество доставленных единиц вложения.&lt;br /&gt;
:* '''''reason''''' — Причина недоставки, выбирается из соответствующего списка статусов.&lt;br /&gt;
:* '''''governmentCode''''' — Указание кода ТН для вложения при необходимости.&lt;br /&gt;
* '''attachments''' — Контейнер прикрепляемых изображений. Может содержать несколько контейнеров '''attachment'''&lt;br /&gt;
:* '''attachment''' — Контейнер изображения. Содержит текст файла изображения, закодированный по стандарту ''base64''. Атрибут:&lt;br /&gt;
::* '''''filename''''' — Имя файла.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;setorderinfo&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;123456&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;234567&amp;quot; error=&amp;quot;59&amp;quot; errormsg=&amp;quot;value [date_put] is already set&amp;quot; errormsgru=&amp;quot;Значение [Дата доставки] уже указано&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/setorderinfo&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Получение документов для печати ==&lt;br /&gt;
'''Пример запроса получения печатных форм:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;orders&amp;gt;&lt;br /&gt;
    &amp;lt;order orderno=&amp;quot;1234567&amp;quot; ordercode=&amp;quot;33331&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;order orderno=&amp;quot;1234568&amp;quot; ordercode=&amp;quot;33332&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/orders&amp;gt;&lt;br /&gt;
  &amp;lt;form&amp;gt;1&amp;lt;/form&amp;gt;&lt;br /&gt;
  &amp;lt;start&amp;gt;5&amp;lt;/start&amp;gt;&lt;br /&gt;
  &amp;lt;integration&amp;gt;21&amp;lt;/integration&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''waybill''' — Корневой контейнер. Обязательный элемент&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент&lt;br /&gt;
* '''client''' — Признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — Признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — Признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
* '''orders''' — Список заказов для получения печатных форм. Содержит тэги '''order''' с атрибутами:&lt;br /&gt;
:* '''''orderno''''' — шифр заказа&lt;br /&gt;
:* '''''ordercode''''' — внутренний код заказа. Указывать необходимо один из атрибутов для всех заказов. Приоритет имеет атрибут '''''ordercode'''''&lt;br /&gt;
* '''form''' — Формат накладной. Не обязательный элемент. Принимает значения:&lt;br /&gt;
:* 1 — Подробная накладная (по-умолчанию)&lt;br /&gt;
:* 2 — Наклейки Zebra&lt;br /&gt;
:* 3 — Наклейки на страницу формата А4&lt;br /&gt;
:* 4 — Акты приема-передачи&lt;br /&gt;
* '''start''' — Имеет смысл только для form = 3. Начальная позиция первой наклейки. Используется для пропуска наклеек на листе для их экономии.&lt;br /&gt;
* '''integration''' - Получение наклеек от подрядчика. Не обязательный элемент, имеет смысл при наличии кода подрядчика в карточке заказа. Принимает значение:&lt;br /&gt;
:* 21 - подрядчик GTD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;integration code=&amp;quot;21&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;order code=&amp;quot;33331&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;content&amp;gt;JVBERi0xLjYNJeLjz9MNC...&amp;lt;/content&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order code=&amp;quot;33332&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;content&amp;gt;JVBERi0xLjYNJeLjz9MNC...&amp;lt;/content&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;/integration&amp;gt;&lt;br /&gt;
  &amp;lt;content&amp;gt;EODIcaI8KSBlwQ 4MnEOR7Px8U8EBAyGICBnwpw &lt;br /&gt;
  IZhQgz0ZxuPs8EBM/GcbjzB AwhBl8hwQYIO00GmEwg1CeEG &lt;br /&gt;
  mqYTChNU0wqf8l8nz4zgc+K fCno+zwU5GjOZmzXGcbEQYIM &lt;br /&gt;
  4zkegRE40zWzONyoNNMIOIa cWnp6aDCGEGE9NQmoQd2mg00 &lt;br /&gt;
  79U4f3hPTwnfp6Sdrafeqpa JDpFw/1aYT077VNNNdO00G3q &lt;br /&gt;
  mqqvp9p2E7T0/wiFemv8uG6 OM&amp;lt;/content&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В тэге content возвращаются бинарные данные (файл pdf), закодированные в base64.&lt;br /&gt;
При записи в файл необходимо использовать двоичный формат записи!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Блок integration содержит отдельные наклейки для заказов, предоставленные подрядчиком, так же закодированные в base64.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание''' Лимит количества при единовременном получении печатных форм - 1000 штук. Если нужно получить больше - делайте это несколькими запросами.&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание''' Печатные формы для заборов не формируются.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;error&amp;gt;Текст ошибки&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник городов ==&lt;br /&gt;
'''Пример запроса справочника городов:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;townlist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;zipcode&amp;gt;110000&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;0100000100800&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;bd21979d-46f8-49d0-9105-e8d65172a983&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Краснодарский край&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;новгород&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namecontainsparts&amp;gt;молоково моск&amp;lt;/namecontainsparts&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Моск&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Москва&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Москва город&amp;lt;/fullname&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;1&amp;lt;/country&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
  &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/townlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера townlist все элементы могут как отсутствовать, так и комбинироваться. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Авторизация, необязательный элемент. Используется в случае включенного и настроенного ограничения по населенным пунктам в конкретной курьерской службе.&lt;br /&gt;
&lt;br /&gt;
* '''codesearch''' — Поиск по кодам. В случае использования — контейнеры conditions и limit игнорируются.&lt;br /&gt;
:* '''zipcode''' — Поиск по индексу. Обратите внимание на то, что один почтовый индекс может распространяться на несколько населенных пунктов. В этом случае система вернет несколько записей.&lt;br /&gt;
:* '''kladrcode''' — Поиск по 13-ти значному коду КЛАДР.&lt;br /&gt;
:* '''fiascode''' — Поиск по коду ФИАС (AOGUID).&lt;br /&gt;
:* '''code''' — Поиск по коду в системе.&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''city''' — Поиск по всем населенным пунктам региона.&lt;br /&gt;
:* '''namecontainsparts''' — Поиск населенных пунктов, название которых содержит все указанные слова, с разбиением поисковой фразы через пробел. Например &amp;quot;моск моло&amp;quot; найдет деревню &amp;quot;Молоково&amp;quot; в Московской области.&lt;br /&gt;
:* '''namecontains''' — Поиск населенных пунктов, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск населенных пунктов, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск населенных пунктов, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''fullname''' — Поиск населенных пунктов, название вместе с типом населенного пункта которых соответствует указанному тексту.&lt;br /&gt;
:* '''country''' — Поиск только по стране с указанным внутренним кодом или текстовым кодом в соответствии [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» для России.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 10000.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено — в ответе не указываются totalcount и totalpages.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;townlist count=&amp;quot;3&amp;quot; page=&amp;quot;1&amp;quot; totalcount=&amp;quot;3&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;26379&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;23&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Краснодарский край&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочи город&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;79da737a-603b-4c19-9b54-9114c96fb912&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;2300000700000&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;typename /&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;43.5855&amp;quot; lon=&amp;quot;39.7231&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;40331&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;32&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Брянская область&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочилов хутор&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;c9c96c67-2cc9-4f10-afde-fd32417ea216&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;3201900011100&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;&lt;br /&gt;
    &amp;lt;typename /&amp;gt;&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;52.6407&amp;quot; lon=&amp;quot;33.1724&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;114016&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Псковская область&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочихино деревня&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;10df7588-19c1-49d1-a387-9de1cf3eb26f&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;6001900015400&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;&lt;br /&gt;
    &amp;lt;typename /&amp;gt;&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;56.6003&amp;quot; lon=&amp;quot;29.3542&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
&amp;lt;/townlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ответе города сортируются по популярности, важности (районные центры и т. д.), и только затем — по алфавиту.&lt;br /&gt;
&lt;br /&gt;
== Справочник регионов ==&lt;br /&gt;
'''Пример запроса справочника:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;regionlist&amp;gt;&lt;br /&gt;
  &amp;lt;codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;77&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;край&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Моск&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Московская область&amp;lt;/fullname&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;RU&amp;lt;/country&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
&amp;lt;/regionlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;regionlist count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;city&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Россия&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;643&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName1&amp;gt;RU&amp;lt;/ShortName1&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName2&amp;gt;RUS&amp;lt;/ShortName2&amp;gt;&lt;br /&gt;
    &amp;lt;/country&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Агинский Бурятский автономный округ&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/city&amp;gt;&lt;br /&gt;
  &amp;lt;city&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Россия&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;643&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName1&amp;gt;RU&amp;lt;/ShortName1&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName2&amp;gt;RUS&amp;lt;/ShortName2&amp;gt;&lt;br /&gt;
    &amp;lt;/country&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Адыгея республика&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/city&amp;gt;&lt;br /&gt;
&amp;lt;/regionlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник улиц ==&lt;br /&gt;
'''Пример запроса справочника улиц:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;streetlist&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;town&amp;gt;Москва город&amp;lt;/town&amp;gt;   // ОБЯЗАТЕЛЬНОЕ ПОЛЕ!&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;Хохло&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Академика Х&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Академика Хохлова&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Академика Хохлова ул.&amp;lt;/fullname&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
  &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/streetlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''town''' — Обязательное поле. Название или код населенного пункта.&lt;br /&gt;
:* '''namecontains''' — Поиск улиц, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск улиц, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск улиц, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''fullname''' — Поиск улиц, для которых название вместе с типом соответствует указанному тексту.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 10000.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено, в ответе не указываются totalcount и totalpages.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;streetlist count=&amp;quot;1&amp;quot; page=&amp;quot;1&amp;quot; totalcount=&amp;quot;3&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;street&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;124&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Академика Хохлова ул.&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;shortname&amp;gt;Академика Хохлова&amp;lt;/shortname&amp;gt;&lt;br /&gt;
     &amp;lt;typename&amp;gt;ул.&amp;lt;/typename&amp;gt;&lt;br /&gt;
  &amp;lt;/street&amp;gt;&lt;br /&gt;
&amp;lt;/streetlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ответе улицы сортируются по алфавиту.&lt;br /&gt;
&lt;br /&gt;
== Справочник номенклатуры ==&lt;br /&gt;
'''Пример запроса справочника номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemlist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
    &amp;lt;codesearch&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;123456&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;article&amp;gt;FD343&amp;lt;/article&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;2345625213125&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;conditions&amp;gt;&lt;br /&gt;
      &amp;lt;namecontains&amp;gt;телевизор&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
      &amp;lt;namestarts&amp;gt;sony&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Sony KDL-55W905 ЖК-телевизор&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;EXISTING_ONLY&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;store&amp;gt;2&amp;lt;/store&amp;gt;&lt;br /&gt;
    &amp;lt;/conditions&amp;gt;&lt;br /&gt;
    &amp;lt;except&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;123478&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/except&amp;gt;&lt;br /&gt;
    &amp;lt;limit&amp;gt;&lt;br /&gt;
      &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
      &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
      &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
    &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера itemlist все элементы могут как отсутствовать, так и комбинироваться. Поиск не чувствителен к регистру.&lt;br /&gt;
* '''codesearch''' — Поиск по кодам. В случае использования — контейнеры conditions и limit игнорируются.&lt;br /&gt;
:* '''code''' — Поиск по внутреннему коду системы.&lt;br /&gt;
:* '''article''' — Поиск по артикулу.&lt;br /&gt;
:* '''barcode''' — Поиск по штрихкоду.&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''namecontains''' — Поиск товаров, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск товаров, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск товаров, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''quantity''' — Наличие на складе. Принимает значения EXISTING_ONLY — Только в наличии, NOT_EXISTING_ONLY — Только не в наличии, ALL — Все. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
:* '''store''' — Поиск товаров по определенному складу.&lt;br /&gt;
&lt;br /&gt;
* '''except''' — Описание исключений для корректного определения количества зарезервированной номенклатуры.&lt;br /&gt;
:* '''code''' — Код заказа.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ.&lt;br /&gt;
:* '''limitcount''' — Задает количество записей результата, которые нужно вернуть.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;itemlist count=&amp;quot;3&amp;quot; totalcount=&amp;quot;3&amp;quot; page=&amp;quot;1&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;item&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123456&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;article&amp;gt;FD343&amp;lt;/article&amp;gt;&lt;br /&gt;
    &amp;lt;barcode&amp;gt;2345625213125&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Sony KDL-55W905 ЖК-телевизор&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;retprice&amp;gt;65000&amp;lt;/retprice&amp;gt;&lt;br /&gt;
    &amp;lt;purchprice&amp;gt;50000&amp;lt;/purchprice&amp;gt;&lt;br /&gt;
    &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
    &amp;lt;length&amp;gt;50&amp;lt;/length&amp;gt;&lt;br /&gt;
    &amp;lt;width&amp;gt;30&amp;lt;/width&amp;gt;&lt;br /&gt;
    &amp;lt;height&amp;gt;40&amp;lt;/height&amp;gt;&lt;br /&gt;
    &amp;lt;VATrate&amp;gt;20&amp;lt;/VATrate&amp;gt;&lt;br /&gt;
    &amp;lt;CountInPallet&amp;gt;30&amp;lt;/CountInPallet&amp;gt;&lt;br /&gt;
    &amp;lt;CountInBox&amp;gt;2&amp;lt;/CountInBox&amp;gt;&lt;br /&gt;
    &amp;lt;HasSerials&amp;gt;1&amp;lt;/HasSerials&amp;gt;&lt;br /&gt;
    &amp;lt;CountryOfOrigin&amp;gt;Малайзия&amp;lt;/CountryOfOrigin&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;Message&amp;gt;Хороший телевизор&amp;lt;/Message&amp;gt;&lt;br /&gt;
    &amp;lt;Message2&amp;gt;Снова хороший телевизор&amp;lt;/Message2&amp;gt;&lt;br /&gt;
    &amp;lt;quantity&amp;gt;12&amp;lt;/quantity&amp;gt;&lt;br /&gt;
    &amp;lt;reserved&amp;gt;3&amp;lt;/reserved&amp;gt;&lt;br /&gt;
  &amp;lt;item&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
* '''code''' — Внутренний идентификатор, присвоенный системой.&lt;br /&gt;
* '''article''' — Артикул, назначенный клиентом (поставщиком).&lt;br /&gt;
* '''barcode''' — Штрихкод производителя.&lt;br /&gt;
* '''name''' — Наименование.&lt;br /&gt;
* '''retprice''' — Розничная цена по-умолчанию. При оформлении заказа цена используется та, которая указана в заказе.&lt;br /&gt;
* '''purchprice''' — Закупочная цена.&lt;br /&gt;
* '''weight''' — Масса в килограммах.&lt;br /&gt;
* '''length''' — Длина в сантиметрах.&lt;br /&gt;
* '''width''' — Ширина в сантиметрах.&lt;br /&gt;
* '''height''' — Высота в сантиметрах.&lt;br /&gt;
* '''VATrate''' — Ставка НДС, целое число процентов.&lt;br /&gt;
* '''CountInPallet''' — Количество штук в паллете.&lt;br /&gt;
* '''CountInBox''' — Количество штук в упаковке.&lt;br /&gt;
* '''HasSerials''' — Требует учета серийных номеров. Принимает значения 1 — да, 0 — нет.&lt;br /&gt;
* '''CountryOfOrigin''' — Наименование страны происхождения на русском языке.&lt;br /&gt;
* '''Message''' — Комментарий.&lt;br /&gt;
* '''Message2''' — Дополнительный комментарий.&lt;br /&gt;
* '''quantity''' — Количество на складе. Товары, уже собранные в заказы в этом количестве не присутствуют, считаются покинувшими товарный склад. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
* '''reserved''' — Количество зарезервированного товара. Может превышать остаток на складе, если покупатели ждут следующей поставки. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
&lt;br /&gt;
== Движение номенклатуры ==&lt;br /&gt;
'''Пример запроса движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemmovements&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;datefrom&amp;gt;2020-10-01&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
 &amp;lt;dateto&amp;gt;2020-10-02&amp;lt;/dateto&amp;gt;&lt;br /&gt;
&amp;lt;/itemmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — внутренний код товара в справочнике номенклатуры.&lt;br /&gt;
* '''datefrom''' — дата начала периода.&lt;br /&gt;
* '''dateto''' — дата окончания периода.&lt;br /&gt;
Может быть указан или код, или период, или код и период одновременно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemmovements count=&amp;quot;16&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;itemmovement&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;151500&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;retprice&amp;gt;0&amp;lt;/retprice&amp;gt;&lt;br /&gt;
    &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
    &amp;lt;delivered&amp;gt;0&amp;lt;/delivered&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Возврат от покупателя&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;store&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;офис в Москве&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/store&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
      &amp;lt;ordercode&amp;gt;3374830&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;123660-0&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-24&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
      &amp;lt;company&amp;gt;ТОВАР&amp;lt;/company&amp;gt;&lt;br /&gt;
      &amp;lt;address&amp;gt;Кравченко ул., 1&amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;delivereddate&amp;gt;2017-05-29&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredtime&amp;gt;12:00:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredto /&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;document&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/document&amp;gt;&lt;br /&gt;
    &amp;lt;serials&amp;gt;&lt;br /&gt;
      &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
    &amp;lt;/serials&amp;gt;&lt;br /&gt;
  &amp;lt;/itemmovements&amp;gt;&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''code''' — внутренний код операции движения&lt;br /&gt;
* '''date''' — дата операции&lt;br /&gt;
* '''retprice''' — цена товара&lt;br /&gt;
* '''quantity''' — количество товара операции&lt;br /&gt;
* '''delivered''' — количество доставленного товара&lt;br /&gt;
&lt;br /&gt;
* '''item''' — контейнер товара&lt;br /&gt;
:* '''code''' — внутренний код товара&lt;br /&gt;
:* '''name''' — наименование товара&lt;br /&gt;
&lt;br /&gt;
* '''status''' — контейнер статуса операции&lt;br /&gt;
:* '''code''' — код статуса&lt;br /&gt;
:* '''name''' — наименование&lt;br /&gt;
&lt;br /&gt;
* '''store''' — контейнер филиала, к которому относится операция&lt;br /&gt;
:* '''code''' — код филиала&lt;br /&gt;
:* '''name''' — наименование филиала&lt;br /&gt;
&lt;br /&gt;
* '''order''' — контейнер корреспонденции&lt;br /&gt;
:* '''ordercode''' — внутренний код заказа&lt;br /&gt;
:* '''number''' — номер заказа&lt;br /&gt;
:* '''date''' — дата заказа&lt;br /&gt;
:* '''orderno''' — шифр&lt;br /&gt;
:* '''barcode''' — штрихкод&lt;br /&gt;
:* '''company''' — компания&lt;br /&gt;
:* '''address''' — адрес&lt;br /&gt;
:* '''delivereddate''' — дата вручения&lt;br /&gt;
:* '''deliveredtime''' — время вручения&lt;br /&gt;
:* '''deliveredto''' — данные о вручении, либо причина недоставки&lt;br /&gt;
&lt;br /&gt;
* '''document''' — контейнер документа операции&lt;br /&gt;
:* '''code''' — внутренний код документа&lt;br /&gt;
:* '''number''' — номер документа&lt;br /&gt;
:* '''extnumber''' — внешний номер документа&lt;br /&gt;
:* '''date''' — дата документа&lt;br /&gt;
:* '''message''' — комментарий&lt;br /&gt;
&lt;br /&gt;
* '''serials''' — контейнер серийных номеров&lt;br /&gt;
:* '''serial''' — серийный номер единицы номенклатуры, участвующей в движении&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Серийные номера ==&lt;br /&gt;
'''Пример запроса движения номенклатуры с серийным номером:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;serialmovements&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
&amp;lt;/serialmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''serial''' — серийный номер единицы номенклатуры.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры с серийным номером:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;serialmovements count=&amp;quot;16&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;serialmovement&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;151500&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;delivered&amp;gt;0&amp;lt;/delivered&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Возврат от покупателя&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
      &amp;lt;ordercode&amp;gt;3374830&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;123660-0&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-24&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
      &amp;lt;company&amp;gt;ТОВАР&amp;lt;/company&amp;gt;&lt;br /&gt;
      &amp;lt;address&amp;gt;Кравченко ул., 1&amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;delivereddate&amp;gt;2017-05-29&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredtime&amp;gt;12:00:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredto /&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;document&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/document&amp;gt;&lt;br /&gt;
  &amp;lt;/serialmovement&amp;gt;&lt;br /&gt;
&amp;lt;/serialmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
&lt;br /&gt;
Описание аналогично описанию полей [[#Движение номенклатуры|движения номенклатуры]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Серийные номера по заказу ==&lt;br /&gt;
'''Пример запроса движения серийных номеров заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;orderserials&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;ordercode&amp;gt;123456789&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;123456789&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;barcode&amp;gt;123456789&amp;lt;/barcode&amp;gt;&lt;br /&gt;
&amp;lt;/orderserials&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''ordercode''' — внутренний код заказа.&lt;br /&gt;
* '''orderno''' — шифр заказа.&lt;br /&gt;
* '''barcode''' — штрих-код заказа.&lt;br /&gt;
Указывать необходимо один из идентификаторов заказа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения серийных номеров заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;orderserials&amp;gt;&lt;br /&gt;
  &amp;lt;order&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;3374830&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
    &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;delivereddate&amp;gt;2024-07-20&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
    &amp;lt;deliveredtime&amp;gt;10:04:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
    &amp;lt;assemblydate&amp;gt;2024-07-19 07:05:34&amp;lt;/assemblydate&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;items&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;article&amp;gt;123000&amp;lt;/article&amp;gt;&lt;br /&gt;
      &amp;lt;state&amp;gt;Delivered&amp;lt;/state&amp;gt;&lt;br /&gt;
      &amp;lt;serials&amp;gt;&lt;br /&gt;
        &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
      &amp;lt;/serials&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/items&amp;gt;&lt;br /&gt;
&amp;lt;/orderserials&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
&lt;br /&gt;
* '''order''' — блок заказа:&lt;br /&gt;
:* '''code''' — код&lt;br /&gt;
:* '''orderno''' — шифр&lt;br /&gt;
:* '''barcode''' — штрих-код&lt;br /&gt;
:* '''delivereddate''' — дата доставки факт&lt;br /&gt;
:* '''deliveredtime''' — время доставки факт&lt;br /&gt;
:* '''assemblydate''' — дата сборки&lt;br /&gt;
&lt;br /&gt;
* '''item''' — блок товара:&lt;br /&gt;
:* '''code''' — код&lt;br /&gt;
:* '''name''' — наименование&lt;br /&gt;
:* '''article''' — артикул&lt;br /&gt;
:* '''state''' — статус Доставлено (Delivered) или Возвращено (Returned)&lt;br /&gt;
:* '''serials''' — блок серийных номеров по заказу&lt;br /&gt;
&lt;br /&gt;
== Получение справочника тарифов по городам ==&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса справочника тарифов по городам'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tariffs&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;townfrom&amp;gt;Москва&amp;lt;/townfrom&amp;gt;&lt;br /&gt;
 &amp;lt;service&amp;gt;1&amp;lt;/service&amp;gt;&lt;br /&gt;
 &amp;lt;mainonly&amp;gt;1&amp;lt;/mainonly&amp;gt;    &lt;br /&gt;
&amp;lt;/tariffs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — атрибут '''extra''' обязателен, по нему определяется курьерская служба.&lt;br /&gt;
* '''townfrom''' — город-отправитель. Если не передан, то городом будет «Москва».&lt;br /&gt;
* '''service''' — режим доставки. Обязательный элемент.&lt;br /&gt;
* '''mainonly''' — необязательный элемент. Если передан, то в ответе будут данные только по городам из справочника '''Межгород''' &amp;gt; '''Зоны'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что в ответе отдаются только тарифы, указанные в разделе &amp;quot;Тарифы по зонам&amp;quot; раздела &amp;quot;Межгород&amp;quot; в офисной системе курьерской службы, т.е. считающихся междугородними. &lt;br /&gt;
Доставка до городов, рассчитываемая по внутригородским тарифам,  в ответе НЕ ОТДАЕТСЯ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника тарифов по городам'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;townfrom&amp;quot;: &amp;quot;0c5b2444-70a0-4932-980c-b4dc0d3f02b5&amp;quot;,&lt;br /&gt;
    &amp;quot;service&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;tariffs&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;towntofias&amp;quot;: &amp;quot;0c5b2444-70a0-4932-980c-b4dc0d3f02b5&amp;quot;,&lt;br /&gt;
            &amp;quot;towntocode&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;towntoname&amp;quot;: &amp;quot;Москва город&amp;quot;,&lt;br /&gt;
            &amp;quot;townregion&amp;quot;: &amp;quot;Город Москва&amp;quot;,&lt;br /&gt;
            &amp;quot;distance&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;pricedistance&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;pricesnew&amp;quot;: {&lt;br /&gt;
                &amp;quot;before&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 100,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 1&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 150,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 5&lt;br /&gt;
                    }&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;after&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 1,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 38.01&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 15,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 1,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 51.01&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;deliveryPeriodMin&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;deliveryPeriodMax&amp;quot;: 2&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''townfrom''' — код ФИАС города-отправителя.&lt;br /&gt;
* '''service''' — режим доставки.&lt;br /&gt;
* '''tariffs''' — cписок тарифов по городу.&lt;br /&gt;
:* '''townregion''' — регион города-получателя.&lt;br /&gt;
:* '''towntofias''' — код ФИАС города-получателя.&lt;br /&gt;
:* '''towntocode''' — внутренний код города-получателя.&lt;br /&gt;
:* '''towntoname''' — наименование города-получателя.&lt;br /&gt;
:* '''distance''' — дистанция в км до города от МКАД, если в запросе townfrom — Москва.&lt;br /&gt;
:* '''pricedistance''' — сумма за километраж до города от МКАД, если в запросе townfrom — Москва.&lt;br /&gt;
:* '''pricesnew''' — ваши настройки тарифов из справочника '''Межгород''' &amp;gt; '''Тарифы по зонам'''.&lt;br /&gt;
::* '''before/after''' — контейнеры ДО/ОТ.&lt;br /&gt;
:::* '''price''' — цена. Если ответ идет по «before», то в цену также плюсуется сумма pricedistance&lt;br /&gt;
:::* '''every''' — за каждые.&lt;br /&gt;
:::* '''mass''' — масса.&lt;br /&gt;
:* '''prices''' — устаревший элемент, не используется.&lt;br /&gt;
:* '''deliveryPeriodMin''' — минимальный срок доставки.&lt;br /&gt;
:* '''deliveryPeriodMax''' — максимальный срок доставки.&lt;br /&gt;
&lt;br /&gt;
== Номенклатура приходной накладной ==&lt;br /&gt;
'''Пример запроса номенклатуры приходной накладной:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemdoc&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/itemdoc&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — внутренний код документа приходной накладной (см. предыдущий запрос).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemdoc&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;items&amp;gt;&lt;br /&gt;
    &amp;lt;item code=&amp;quot;4259&amp;quot; quantity=&amp;quot;1&amp;quot; barcode=&amp;quot;200300&amp;quot; article=&amp;quot;123555&amp;quot;&amp;gt;Настольная игра Дженга&amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/items&amp;gt;&lt;br /&gt;
&amp;lt;/itemdoc&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''code''' — внутренний код приходной накладной&lt;br /&gt;
* '''number''' — номер документа&lt;br /&gt;
* '''date''' — дата документа&lt;br /&gt;
* '''message''' — комментарий&lt;br /&gt;
&lt;br /&gt;
* '''item''' — контейнер товара&lt;br /&gt;
:* '''code''' — внутренний код товара&lt;br /&gt;
:* '''barcode''' — штрихкод товара&lt;br /&gt;
:* '''article''' — артикул товара&lt;br /&gt;
:* '''quantity''' — количество поступившего товара&lt;br /&gt;
&lt;br /&gt;
== Справочник филиалов ==&lt;br /&gt;
'''Пример запроса списка филиалов:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;storelist&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;json&amp;gt;YES&amp;lt;/json&amp;gt;&lt;br /&gt;
 &amp;lt;client_code&amp;gt;7890&amp;lt;/client_code&amp;gt;&lt;br /&gt;
&amp;lt;/storelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Атрибут '''extra''' — обязателен, по нему определяется курьерская служба&lt;br /&gt;
* '''json''' — Признак вывода ответа в виде JSON YES/NO&lt;br /&gt;
* '''client_code''' — Код клиента курьерской службы&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;storelist count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;store&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt;    &lt;br /&gt;
    &amp;lt;name&amp;gt;ABC&amp;lt;/name&amp;gt; &lt;br /&gt;
  &amp;lt;/store&amp;gt;&lt;br /&gt;
  &amp;lt;store&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;456&amp;lt;/code&amp;gt;   &lt;br /&gt;
    &amp;lt;name&amp;gt;Филиал 2&amp;lt;/name&amp;gt; &lt;br /&gt;
  &amp;lt;/store&amp;gt;&lt;br /&gt;
&amp;lt;/storelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код филиала.&lt;br /&gt;
* '''name''' — Наименование филиала.&lt;br /&gt;
&lt;br /&gt;
== Справочник пунктов самовывоза ==&lt;br /&gt;
Для отображения списка пунктов выдачи (ПВЗ) есть '''готовый JavaScript модуль''': https://home.courierexe.ru/js/measoft_map.js Инструкция по использованию — внутри. Посмотреть пример работы можно [https://home.courierexe.ru/pvz_test.html Здесь]&lt;br /&gt;
&lt;br /&gt;
Уникальные запросы списка ПВЗ кешируются на стороне личного кабинета и хранятся до 7 часов утра по московскому времени следующего дня. Например, если уникальный запрос с массой 2 кг был отправлен сегодня в 10 часов, то завтра в 7 утра он сбросится. Если сегодня в 18 часов в этом же запросе вы укажете массу 2 кг, в ответе вернется тот же список ПВЗ. Если передадите массу 3 кг, список может быть другим.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что если в выборке количество ПВЗ больше '''10000''' и не указаны параметры '''code''', '''json''' или '''limitcount''', то будет возвращаться ошибка. В этом случае необходимо использовать блок '''limit'''.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса пунктов самовывоза:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;pvzlist&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;1234&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;client_code&amp;gt;7890&amp;lt;/client_code&amp;gt;&lt;br /&gt;
 &amp;lt;city&amp;gt;Свердловская область&amp;lt;/city&amp;gt;&lt;br /&gt;
 &amp;lt;town regioncode=&amp;quot;66&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Нижний Тагил&amp;lt;/town&amp;gt;&lt;br /&gt;
 &amp;lt;address&amp;gt;Щёлковское шоссе&amp;lt;/address&amp;gt;&lt;br /&gt;
 &amp;lt;house&amp;gt;77&amp;lt;/house&amp;gt;&lt;br /&gt;
 &amp;lt;advanced_search&amp;gt;Строка поиска&amp;lt;/advanced_search&amp;gt;&lt;br /&gt;
 &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
 &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
 &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
 &amp;lt;acceptfitting&amp;gt;YES&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
 &amp;lt;maxweight&amp;gt;30&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
 &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
 &amp;lt;respstores&amp;gt;YES&amp;lt;/respstores&amp;gt;&lt;br /&gt;
 &amp;lt;lt&amp;gt;57.924737&amp;lt;/lt&amp;gt;&lt;br /&gt;
 &amp;lt;lg&amp;gt;59.940019&amp;lt;/lg&amp;gt;&lt;br /&gt;
 &amp;lt;rt&amp;gt;57.905682&amp;lt;/rt&amp;gt;&lt;br /&gt;
 &amp;lt;rg&amp;gt;59.984669&amp;lt;/rg&amp;gt;&lt;br /&gt;
 &amp;lt;json&amp;gt;YES&amp;lt;/json&amp;gt;&lt;br /&gt;
 &amp;lt;with_coords&amp;gt;YES&amp;lt;/with_coords&amp;gt;&lt;br /&gt;
 &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;2&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
 &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/pvzlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Атрибут '''extra''' — обязателен, по нему определяется курьерская служба, '''login''' и '''pass''' позволяют авторизоваться под клиентом: для отдельного клиента могут быть ограничения по доступности некоторых ПВЗ, и в этом случае они будут учтены.&lt;br /&gt;
* '''code''' — Внутренний код, целое число.&lt;br /&gt;
* '''client_code''' — Код клиента курьерской службы.&lt;br /&gt;
* '''city''' — Регион получателя. Можно указать код региона или полное наименование региона из [[#Справочник регионов|справочника регионов]].&lt;br /&gt;
* '''town''' — Город получателя.&lt;br /&gt;
Для тега города '''town''' можно указать код региона в атрибуте '''''regioncode''''' из [[#Справочник регионов|справочника регионов]]. Поиск будет производиться в указанном регионе.&lt;br /&gt;
&lt;br /&gt;
Также можно указать страну получателя в атрибуте '''''country''''' в соответствии с [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
Для формата запроса JSON фильтрация по городу работает только в связке с фильтром по адресу.&lt;br /&gt;
&lt;br /&gt;
* '''address''' — Фильтр по адресу, работает только в связке с фильтром по городу&lt;br /&gt;
* '''house''' — Фильтр по номеру дома, работает только в связке с фильтрами по адресу и городу&lt;br /&gt;
* '''advanced_search''' — Фильтр по коду агента, наименованию, телефону или комментарию&lt;br /&gt;
* '''parentcode''' — Фильтр по родительскому [[#Справочник филиалов|филиалу]]&lt;br /&gt;
* '''acceptcash''' — Фильтр по приему наличных YES/NO&lt;br /&gt;
* '''acceptcard''' — Фильтр по приему банковских карт YES/NO&lt;br /&gt;
* '''acceptfitting''' — Фильтр по наличию примерки YES/NO&lt;br /&gt;
* '''maxweight''' — Фильтр по максимальному весу, с которым работает ПВЗ&lt;br /&gt;
* '''acceptindividuals''' — Фильтр по доступности физическим лицам YES/NO&lt;br /&gt;
* '''respstores''' - Признак вывода ответственных филиалов при значении YES&lt;br /&gt;
* '''lt''' — Широта левого верхнего угла&lt;br /&gt;
* '''lg''' — Долгота левого верхнего угла&lt;br /&gt;
* '''rt''' — Широта правого нижнего угла&lt;br /&gt;
* '''rg''' — Долгота правого нижнего угла&lt;br /&gt;
* '''json''' — Признак вывода ответа в виде JSON YES/NO&lt;br /&gt;
* '''with_coords''' — Признак вывода ПВЗ только с наличием координат YES/NO&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 100.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено — в ответе не указываeтся totalcount.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника пунктов самовывоза:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;pvzlist count=&amp;quot;2&amp;quot; totalcount=&amp;quot;40465&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;pvz&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;126&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;clientcode&amp;gt;3&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Нижний Тагил&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
    &amp;lt;parentname&amp;gt;Интеграция&amp;lt;/parentname&amp;gt;&lt;br /&gt;
    &amp;lt;town code=&amp;quot;124267&amp;quot; regioncode=&amp;quot;66&amp;quot; regionname=&amp;quot;Свердловская область&amp;quot;&amp;gt;Нижний Тагил город&amp;lt;/town&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;622036, г. Нижний Тагил, ул. Циолковского, д. 17&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;+73435417709, +73435254989&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Новый пункт доставки&amp;lt;/comment&amp;gt;&lt;br /&gt;
    &amp;lt;worktime&amp;gt;Вс 10:00-16:00, Сб 10:00-16:00, Пн-Пт 10:00-20:00&amp;lt;/worktime&amp;gt;&lt;br /&gt;
    &amp;lt;traveldescription&amp;gt;Жилое 5-ти этажное здание, торцом к дороге, второе здание от перекрестка Пархоменко-Циолковского&amp;lt;/traveldescription&amp;gt;&lt;br /&gt;
    &amp;lt;maxweight&amp;gt;10&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
    &amp;lt;acceptfitting&amp;gt;YES&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
    &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
    &amp;lt;latitude&amp;gt;57.93457&amp;lt;/latitude&amp;gt;&lt;br /&gt;
    &amp;lt;longitude&amp;gt;59.95131&amp;lt;/longitude&amp;gt;&lt;br /&gt;
    &amp;lt;uid&amp;gt;40606d00-9c51-11eb-b2c9-cfd6c1111392&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;/pvz&amp;gt;&lt;br /&gt;
  &amp;lt;pvz&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;245&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;clientcode&amp;gt;NTG1&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;На Красноармейской&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
    &amp;lt;parentname&amp;gt;Интеграция&amp;lt;/parentname&amp;gt;&lt;br /&gt;
    &amp;lt;town code=&amp;quot;124267&amp;quot; regioncode=&amp;quot;66&amp;quot; regionname=&amp;quot;Свердловская область&amp;quot;&amp;gt;Нижний Тагил город&amp;lt;/town&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;КРАСНОАРМЕЙСКАЯ, д.79&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;+7(3435)379-044&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Возможность примерки отсутствует&amp;lt;/comment&amp;gt;&lt;br /&gt;
    &amp;lt;worktime&amp;gt;Вс 10:00-16:00, Сб 10:00-16:00, Пн-Пт 10:00-20:00&amp;lt;/worktime&amp;gt;&lt;br /&gt;
    &amp;lt;traveldescription&amp;gt;Напротив ТЦ Пирамида&amp;lt;/traveldescription&amp;gt;&lt;br /&gt;
    &amp;lt;maxweight&amp;gt;20&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
    &amp;lt;acceptfitting&amp;gt;NO&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
    &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
    &amp;lt;latitude&amp;gt;57.93468&amp;lt;/latitude&amp;gt;&lt;br /&gt;
    &amp;lt;longitude&amp;gt;60.55476&amp;lt;/longitude&amp;gt;&lt;br /&gt;
    &amp;lt;uid&amp;gt;41116853-9c51-11eb-b2c9-cfd6c1451392&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;/pvz&amp;gt;&lt;br /&gt;
&amp;lt;/pvzlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код ПВЗ в системе. Используется в запросе [[API#Оформление заказа|оформления заказов]]&lt;br /&gt;
* '''clientcode''' — Код ПВЗ используемый компанией-подрядчиком.&lt;br /&gt;
* '''name''' — Наименование ПВЗ.&lt;br /&gt;
* '''parentcode''' — Код родительского элемента.&lt;br /&gt;
* '''parentname''' — Наименование родительского элемента.&lt;br /&gt;
* '''town''' — Населенный пункт с кодом из [[#Справочник городов|справочника городов]], а также с кодом и наименованием региона.&lt;br /&gt;
* '''address''' — Адрес ПВЗ.&lt;br /&gt;
* '''phone''' — Телефоны ПВЗ.&lt;br /&gt;
* '''comment''' — Дополнительная информация.&lt;br /&gt;
* '''worktime''' — Режим работы ПВЗ.&lt;br /&gt;
* '''traveldescription''' — Описание местонахождения ПВЗ или пути к нему.&lt;br /&gt;
* '''maxweight''' — Максимальный вес, с которым работает ПВЗ.&lt;br /&gt;
* '''acceptcash''' — Признак приема наличных&lt;br /&gt;
* '''acceptcard''' — Признак приема банковских карт&lt;br /&gt;
* '''acceptfitting''' — Наличие примерки&lt;br /&gt;
* '''latitude''' — Широта&lt;br /&gt;
* '''longitude''' — Долгота&lt;br /&gt;
* '''uid''' — Уникальный идентификатор ПВЗ в системе Measoft. Создается автоматически при получении данных о ПВЗ от агентов.&lt;br /&gt;
* '''count''' — Количество записей в ответе&lt;br /&gt;
* '''totalcount''' — Общее количество записей, отвечающее параметрам запроса&lt;br /&gt;
&lt;br /&gt;
== Получение фискальных данных заказа ==&lt;br /&gt;
'''Пример запроса получения фискальных данных:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;receiptdata&amp;gt;&lt;br /&gt;
   &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;orders&amp;gt;&lt;br /&gt;
      &amp;lt;order orderno=&amp;quot;123456&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;order orderno=&amp;quot;890111C&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/orders&amp;gt;&lt;br /&gt;
&amp;lt;/receiptdata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа получения фискальных данных:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;receipts count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;receipt&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;123456&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;fdDatetime&amp;gt;2020-06-07 12:14:00&amp;lt;/fdDatetime&amp;gt;&lt;br /&gt;
      &amp;lt;fdValue&amp;gt;123&amp;lt;/fdValue&amp;gt;&lt;br /&gt;
      &amp;lt;fdNum&amp;gt;456&amp;lt;/fdNum&amp;gt;&lt;br /&gt;
      &amp;lt;fnSn&amp;gt;789&amp;lt;/fnSn&amp;gt;&lt;br /&gt;
      &amp;lt;kktNum&amp;gt;100&amp;lt;/kktNum&amp;gt;&lt;br /&gt;
      &amp;lt;inn&amp;gt;222&amp;lt;/inn&amp;gt;&lt;br /&gt;
      &amp;lt;ofdUrl&amp;gt;gate.ofd.ru&amp;lt;/ofdUrl&amp;gt;&lt;br /&gt;
      &amp;lt;fullUrl&amp;gt;https://check.ofd.ru/123&amp;lt;/fullUrl&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;12345&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;payType&amp;gt;2&amp;lt;/payType&amp;gt;&lt;br /&gt;
      &amp;lt;lines count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;line&amp;gt;&lt;br /&gt;
            &amp;lt;item&amp;gt;1111764&amp;lt;/item&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Сапоги&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;extcode&amp;gt;27113415&amp;lt;/extcode&amp;gt;&lt;br /&gt;
            &amp;lt;qty&amp;gt;1&amp;lt;/qty&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;1000&amp;lt;/price&amp;gt;&lt;br /&gt;
            &amp;lt;vatRate&amp;gt;20&amp;lt;/vatRate&amp;gt;&lt;br /&gt;
            &amp;lt;governmentCode&amp;gt;Z16513LK2&amp;lt;/governmentCode&amp;gt;&lt;br /&gt;
            &amp;lt;itemType&amp;gt;1&amp;lt;/itemType&amp;gt;&lt;br /&gt;
         &amp;lt;/line&amp;gt;&lt;br /&gt;
      &amp;lt;/lines&amp;gt;&lt;br /&gt;
   &amp;lt;/receipt&amp;gt;&lt;br /&gt;
&amp;lt;/receipts&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры ответа:&lt;br /&gt;
* '''orderno''' — Номер заказа&lt;br /&gt;
* '''fdDatetime''' — Дата и время пробития фискального чека&lt;br /&gt;
* '''fdValue''' — ФПД (фискальный признак документа)&lt;br /&gt;
* '''fdNum''' — ФИСКАЛЬНЫЙ ДОКУМЕНТ (фискальный номер чека)&lt;br /&gt;
* '''fnSn''' — ФН (номер фискального накопителя)&lt;br /&gt;
* '''kktNum''' — РН (регистрационный номер кассы)&lt;br /&gt;
* '''inn''' — ИНН&lt;br /&gt;
* '''ofdUrl''' — URL адрес (доменное имя) ОФД&lt;br /&gt;
* '''price''' — Сумма чека&lt;br /&gt;
* '''paytype''' — Тип оплаты чека. Принимает значения:&lt;br /&gt;
:* CASH — Наличными (по-умолчанию)&lt;br /&gt;
:* CARD — Безналичным способом&lt;br /&gt;
* '''fullUrl''' — URL чека для просмотра онлайн&lt;br /&gt;
* '''lines''' — Позиции чека&lt;br /&gt;
:* '''item''' — код товара&lt;br /&gt;
:* '''name''' — наименование товара&lt;br /&gt;
:* '''extcode''' — код товара во внешних системах&lt;br /&gt;
:* '''qty''' — количество товара&lt;br /&gt;
:* '''price''' — цена товара&lt;br /&gt;
:* '''governmentCode''' — считанная последовательность, которая в дальнейшем преобразуется по алгоритму тега 1162&lt;br /&gt;
:* '''vatRate''' — НДС товара&lt;br /&gt;
:* '''itemType''' — тип товара (товар, доставка и т. д.)&lt;br /&gt;
&lt;br /&gt;
== Справочник Виды срочности ==&lt;br /&gt;
'''Пример запроса видов срочности:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;services&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/services&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника видов срочности:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;services count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;service&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Эконом&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/service&amp;gt;&lt;br /&gt;
  &amp;lt;service&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Срочно&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/service&amp;gt;&lt;br /&gt;
&amp;lt;/services&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник дополнительных услуг ==&lt;br /&gt;
'''Пример запроса дополнительных услуг:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;advprices&amp;gt;&lt;br /&gt;
   &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/advprices&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''advprices''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника дополнительных услуг:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;advprices&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Этажей в доме&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;int&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Коэффициент надбавки&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Расписаться на упаковке&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;bool&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
&amp;lt;/advprices&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
* '''code''' — внутренний код услуги&lt;br /&gt;
* '''name''' — наименование услуги. Если поле «название в ЛК» в настройках услуги не пусто, то возвращает значение поля «название в ЛК».&lt;br /&gt;
* '''hine''' — подсказка по доп услуге для пользователя&lt;br /&gt;
* '''type''' — тип услуги. Может иметь значения:&lt;br /&gt;
:* '''bool''' — для услуг вида «чекбокс», «Да»&lt;br /&gt;
:* '''float''' — для числа с плавающей точкой&lt;br /&gt;
:* '''int''' — для целого числа&lt;br /&gt;
&lt;br /&gt;
== Расчет стоимости доставки ==&lt;br /&gt;
'''Пример запроса стоимости доставки:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;calculator&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;order&amp;gt;&lt;br /&gt;
  &amp;lt;pricetype&amp;gt;CUSTOMER&amp;lt;/pricetype&amp;gt;&lt;br /&gt;
  &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;78&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;124&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice&amp;gt;150&amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package mass=&amp;quot;1&amp;quot; quantity=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package mass=&amp;quot;2.5&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;userid&amp;gt;user123&amp;lt;/userid&amp;gt;&lt;br /&gt;
   &amp;lt;groupid&amp;gt;customer&amp;lt;/groupid&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/calculator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
Структура данных и заполнение полей аналогичны и совместимы с [[#Оформление заказа]].&lt;br /&gt;
&lt;br /&gt;
Дополнительные поля:&lt;br /&gt;
* '''pricetype''' — тип требуемой цены. Возможные значения: «CUSTOMER» (по-умолчанию) — [[Личный кабинет клиента#Цена доставки для получателя|цена для конечного получателя]], «CLIENT» — цена курьерской службы для клиента.&lt;br /&gt;
* '''userid''' — Идентификатор пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенного покупателя.&lt;br /&gt;
* '''groupid''' — Идентификатор группы пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенной группы покупателей.&lt;br /&gt;
&lt;br /&gt;
Суммы НП и ОЦ, а также тип оплаты CARD имеют значение при настроенных в тарифе на вкладке Прочее долях (в процентах) от данных сумм.&lt;br /&gt;
&lt;br /&gt;
В авторизации можно опустить параметры login и pass, тогда расчет будет производиться по стандартному тарифу курьерской службы, без учета возможных отличий для конкретного клиента.&amp;lt;br&amp;gt;&lt;br /&gt;
Объемный вес будет учитываться только при условии указания всех габаритов: длины, ширины и высоты.&amp;lt;br&amp;gt;&lt;br /&gt;
В полях город-отправитель и город-получатель можно указывать название города (не рекомендуется!), либо код города из нашего справочника, либо 13-ти значный код КЛАДР, либо 36-ти значный код адресной системы ФИАС (AOID).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа стоимости доставки:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;calculator&amp;gt;&lt;br /&gt;
  &amp;lt;calc&amp;gt;&lt;br /&gt;
    &amp;lt;townfrom code=&amp;quot;1&amp;quot;&amp;gt;Москва город&amp;lt;/townfrom&amp;gt;&lt;br /&gt;
    &amp;lt;townto code=&amp;quot;56603&amp;quot;&amp;gt;Иркутск город&amp;lt;/townto&amp;gt;&lt;br /&gt;
    &amp;lt;mass&amp;gt;3.7&amp;lt;/mass&amp;gt;&lt;br /&gt;
    &amp;lt;service name=&amp;quot;Экспресс&amp;quot;&amp;gt;1&amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;zone&amp;gt;2&amp;lt;/zone&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;1113&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;mindeliverydays&amp;gt;1&amp;lt;/mindeliverydays&amp;gt;&lt;br /&gt;
    &amp;lt;maxdeliverydays&amp;gt;3&amp;lt;/maxdeliverydays&amp;gt;&lt;br /&gt;
    &amp;lt;mindeliverydate&amp;gt;2020-05-13&amp;lt;/mindeliverydate&amp;gt;&lt;br /&gt;
    &amp;lt;intervals&amp;gt;&lt;br /&gt;
        &amp;lt;workdays&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;10:00-16:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;16:00-22:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
        &amp;lt;/workdays&amp;gt;&lt;br /&gt;
        &amp;lt;holidays&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;12:00-16:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
        &amp;lt;/holidays&amp;gt;&lt;br /&gt;
    &amp;lt;/intervals&amp;gt;&lt;br /&gt;
    &amp;lt;deliveryprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;1&amp;quot; price=&amp;quot;1000&amp;quot;&amp;gt;База&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;4&amp;quot; price=&amp;quot;100&amp;quot;&amp;gt;Процент от суммы руб&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;5&amp;quot; price=&amp;quot;63&amp;quot;&amp;gt;Процент от объявленной стоимости&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;6&amp;quot; price=&amp;quot;-50&amp;quot;&amp;gt;Скидка при доставке&amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
  &amp;lt;/calc&amp;gt;&lt;br /&gt;
&amp;lt;/calculator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
* '''townfrom''' — Город-отправитель так, как система его распознала и привязала к справочнику. Атрибут '''code''' — код из справочника городов системы.&lt;br /&gt;
* '''townto''' — Город-получатель так, как система его распознала и привязала к справочнику. Атрибут '''code''' — код из справочника городов системы.&lt;br /&gt;
* '''mass''' — Масса в килограммах&lt;br /&gt;
* '''service''' — Режим доставки — число, указывающее на запись в справочнике видов срочности (см описание на этой странице).&lt;br /&gt;
* '''zone''' — номер тарифной зоны, по которой рассчиталась стоимость. В зависимости от зоны выбирается тарифная сетка. Так же к цене могут применяться повышающие или понижающие коэффициенты при доставке не из/в региональный центр.&lt;br /&gt;
* '''price''' — рассчитанная стоимость доставки в валюте прайс-листа курьерской службы. Рекомендуется к использованию в отличие от одноименного атрибута родительского контейнера.&lt;br /&gt;
* '''maxdeliverydays''' — максимальный срок доставки в рабочих днях.&lt;br /&gt;
* '''mindeliverydate''' — минимальная дата доставки в учетом выходных дней.&lt;br /&gt;
* '''intervals''' — список интервалов доставки для соответствующей зоны и режима срочности.&lt;br /&gt;
* '''deliveryprice''' — Данные по составляющим ценам доставки&lt;br /&gt;
&lt;br /&gt;
'''''Обратите внимание:''''' В реальном ответе сервера в теге calc присутствует атрибут «price». Он оставлен для обратной совместимости, не используйте его. Пользуйтесь вложенным тегом price.&lt;br /&gt;
&lt;br /&gt;
=== Коды и описание ошибок ===&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!Код ошибки&lt;br /&gt;
!Английское описание&lt;br /&gt;
!Русское описание&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|15||tarif not found||Тариф не найден||Ошибка получения тарифов: для клиента не указан тариф&lt;br /&gt;
|-&lt;br /&gt;
|19||field [town to] cannot be empty||Поле [город получателя] не может быть пустым||Необходимо указать город получателя или ПВЗ&lt;br /&gt;
|-&lt;br /&gt;
|20||field [weight] is incorrect||Некорректное значение [масса]||Значение массы некорректное, например, не является числом. Его необходимо исправить&lt;br /&gt;
|-&lt;br /&gt;
|21||town from not found||Город отправителя не найден||Системе не удалось найти указанный населенный пункт отправителя&lt;br /&gt;
|-&lt;br /&gt;
|22||town to not found||Город получателя не найден||Системе не удалось найти указанный населенный пункт отправителя&lt;br /&gt;
|-&lt;br /&gt;
|23||field [weight] cannot be empty||Поле [масса] не может быть пустым||Необходимо указать значение массы отправления, поле [weight]&lt;br /&gt;
|-&lt;br /&gt;
|36||subtown not found||Город в регионе не найден||Не настроено направление доставки до города в регионе: не добавлен регион или указанный город отсутствует в списке региона&lt;br /&gt;
|-&lt;br /&gt;
|37||zoneprice not found||Тариф зоны не найден||Отсутствуют зоны тарификации или для них не указаны стоимости&lt;br /&gt;
|-&lt;br /&gt;
|38||tarif not found - 1||Тариф не найден 1||Результаты расчета отсутствуют: общая ошибка в случае, если других ошибок нет, но результат пустой &lt;br /&gt;
|-&lt;br /&gt;
|39||tarif not found - 2||Тариф не найден 2||Ошибка получения тарифов: для клиента не настроен тариф или тарификация от количества заказов&lt;br /&gt;
|-&lt;br /&gt;
|82||field [weight] exceeded limit PVZ||Значение [weight] превышает ограничение ПВЗ||Указанное значение массы больше, чем максимально допустимое для указанного ПВЗ&lt;br /&gt;
|-&lt;br /&gt;
|83||attribute [paytype] not allowed PVZ||Значение [paytype] не допустимо для ПВЗ||В ПВЗ не допустим указанный тип оплаты&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Получение информации о клиенте ==&lt;br /&gt;
'''Пример запроса получения информации о клиенте:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;client&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt; &lt;br /&gt;
&amp;lt;/client&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''client''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос получения информации о клиенте:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;client&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;1082&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/client&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код клиента&lt;br /&gt;
&lt;br /&gt;
== Список актов передачи денег ==&lt;br /&gt;
'''Пример запроса списка актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;smalist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;datefrom&amp;gt;2016-02-10&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
  &amp;lt;dateto&amp;gt;2016-03-10&amp;lt;/dateto&amp;gt;&lt;br /&gt;
&amp;lt;/smalist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''smalist''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''datefrom''' — Дата «с». Необязательный элемент.&lt;br /&gt;
* '''dateto''' — Дата «по». Необязательный элемент.&lt;br /&gt;
Если интервал дат не указан, то возвращаются акты передачи денег за последний месяц.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос списка актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;smalist count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;sma&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;6278&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;number&amp;gt;3992&amp;lt;/number&amp;gt;&lt;br /&gt;
    &amp;lt;actdate&amp;gt;2016-02-12&amp;lt;/actdate&amp;gt;&lt;br /&gt;
    &amp;lt;datepay&amp;gt;&amp;lt;/datepay&amp;gt;&lt;br /&gt;
    &amp;lt;dateto&amp;gt;2016-02-12&amp;lt;/dateto&amp;gt;&lt;br /&gt;
    &amp;lt;promiseddatepay&amp;gt;&amp;lt;/promiseddatepay&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;637.00&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;pricecorr&amp;gt;113.00&amp;lt;/pricecorr&amp;gt;&lt;br /&gt;
    &amp;lt;rur&amp;gt;13430.00&amp;lt;/rur&amp;gt;&lt;br /&gt;
    &amp;lt;pricekur&amp;gt;570.00&amp;lt;/pricekur&amp;gt;&lt;br /&gt;
    &amp;lt;priceag&amp;gt;67.00&amp;lt;/priceag&amp;gt;&lt;br /&gt;
    &amp;lt;payno&amp;gt;42423&amp;lt;/payno&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;1&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;paytypename&amp;gt;Безнал&amp;lt;/paytypename&amp;gt;&lt;br /&gt;
    &amp;lt;signedcopyreceived&amp;gt;NO&amp;lt;/signedcopyreceived&amp;gt;&lt;br /&gt;
  &amp;lt;/sma&amp;gt;&lt;br /&gt;
&amp;lt;/smalist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код акта&lt;br /&gt;
* '''number''' — Номер акта в системе&lt;br /&gt;
* '''actdate''' — Дата акта&lt;br /&gt;
* '''datepay''' — Дата оплаты по акту&lt;br /&gt;
* '''dateto''' — Дата конечного периода для формирования АПД&lt;br /&gt;
* '''promiseddatepay''' — Плановая дата оплаты&lt;br /&gt;
* '''price''' — Стоимость услуг&lt;br /&gt;
* '''pricecorr''' — Сумма корректировки&lt;br /&gt;
* '''rur''' — Сумма заказа&lt;br /&gt;
* '''pricekur''' — Стоимость курьерской доставки&lt;br /&gt;
* '''priceag''' — Агентское вознаграждение&lt;br /&gt;
* '''payno''' — Номер платежного поручения&lt;br /&gt;
* '''paytype''' — Тип оплаты: 1 — безнал, 2 — наличными курьером, 3 — наличными в офисе, 4 — перевод на карту&lt;br /&gt;
* '''paytypename''' — Строковое представление типа оплаты&lt;br /&gt;
* '''signedcopyreceived''' — Признак факта возврата акта YES/NO&lt;br /&gt;
&lt;br /&gt;
== Детализация актов передачи денег ==&lt;br /&gt;
'''Пример запроса детализации актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;smadetail&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;6278&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/smadetail&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''smadetail''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''code''' — Код акта передачи денег (см. запрос списка АПД). Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос детализации актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;smadetail count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;specialsma&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;42494&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ordercode&amp;gt;14424&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
    &amp;lt;orderno&amp;gt;11111&amp;lt;/orderno&amp;gt;&lt;br /&gt;
    &amp;lt;orderdate&amp;gt;2018-01-01&amp;lt;/orderdate&amp;gt;&lt;br /&gt;
    &amp;lt;delivereddate&amp;gt;2018-10-01&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
    &amp;lt;company&amp;gt;Компания&amp;lt;/company&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;314.00&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;rur&amp;gt;8800.00&amp;lt;/rur&amp;gt;&lt;br /&gt;
    &amp;lt;inshprice&amp;gt;314.00&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
    &amp;lt;pricekur&amp;gt;270.00&amp;lt;/pricekur&amp;gt;&lt;br /&gt;
    &amp;lt;priceag&amp;gt;44.00&amp;lt;/priceag&amp;gt;&lt;br /&gt;
    &amp;lt;pricecalc&amp;gt;8486.00&amp;lt;/pricecalc&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;2&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;paytypename&amp;gt;наличными курьером&amp;lt;/paytypename&amp;gt;&lt;br /&gt;
    &amp;lt;weight&amp;gt;0.400&amp;lt;/weight&amp;gt;&lt;br /&gt;
    &amp;lt;distance&amp;gt;0.0&amp;lt;/distance&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;Доставлено&amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;/specialsma&amp;gt;&lt;br /&gt;
&amp;lt;/smadetail&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код записи.&lt;br /&gt;
* '''ordercode''' — Код заказа.&lt;br /&gt;
* '''orderno''' — Шифр заказа.&lt;br /&gt;
* '''orderdate''' — Дата заказа.&lt;br /&gt;
* '''delivereddate''' — Дата доставки.&lt;br /&gt;
* '''company''' — Получатель.&lt;br /&gt;
* '''price''' — Стоимость услуг.&lt;br /&gt;
* '''rur''' — Сумма заказа.&lt;br /&gt;
* '''inshprice''' — Стоимость заказа.&lt;br /&gt;
* '''pricekur''' — Стоимость курьерской доставки.&lt;br /&gt;
* '''priceag''' — Агентское вознаграждение.&lt;br /&gt;
* '''pricecalc''' — Сумма для передачи агенту.&lt;br /&gt;
* '''paytype''' — Тип оплаты: 1 — безнал, 2 — наличными курьером, 3 — наличными в офисе, 4 — перевод на карту.&lt;br /&gt;
* '''paytypename''' — Строковое представление типа оплаты&lt;br /&gt;
* '''weight''' — Вес заказа.&lt;br /&gt;
* '''distance''' — Дистанция по заказу&lt;br /&gt;
* '''status''' — Статус заказа.&lt;br /&gt;
&lt;br /&gt;
== Установка статуса согласования заказа ==&lt;br /&gt;
Для возможности клиентом установки статуса согласования заказа необходимо включить переменную [[Личный кабинет курьерской службы#Заказы|Разрешить менять статус согласования]]&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса установки статуса согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;setapprovalstatus&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234561&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;1&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Сообщение статуса&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234562&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;2&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Согласовано&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234563&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;3&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Не согласовано&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/setapprovalstatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''order''' — Контейнер заказа. Обязателен как минимум один элемент.&lt;br /&gt;
:* '''ordercode''' — Внутренний код заказа.&lt;br /&gt;
* '''confirmstate''' — Код статуса заказа. Все статусы с кодами можно получить запросом [[#Получение списка статусов согласования заказа|Получение списка статусов согласования заказа]]&lt;br /&gt;
* '''message''' — Дополнительный комментарий, который отобразится в поле ''Инфо о доставке''.&lt;br /&gt;
&lt;br /&gt;
== Получение списка статусов согласования заказа ==&lt;br /&gt;
'''Пример запроса списка статусов согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;approvalstatuses&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/approvalstatuses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа списка статусов согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;approvalstatuses count=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Неизвестно&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Согласование запрошено&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Доставка полностью согласована&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Согласовано с изменением времени&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Перенос на другую дату&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Отказ&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/approvalstatuses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Генерация коротких ссылок ==&lt;br /&gt;
В некоторых случаях, например, при использовании в СМС, может потребоваться использование коротких ссылок на ЛК.&lt;br /&gt;
Для этого, необходимо отправить запрос с полной ссылкой, в ответ на который придёт хэш-код для ссылки.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса генерации коротких ссылок:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;shortlink&amp;gt;&lt;br /&gt;
  &amp;lt;link short=&amp;quot;0&amp;quot;&amp;gt; https://home.courierexe.ru/8/site/orders &amp;lt;/link&amp;gt;&lt;br /&gt;
&amp;lt;/shortlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''shortlink''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''link''' — Полная ссылка, для которой необходимо получить код. Обязательный элемент. Если атрибут '''short''' равен 1, то ответ не будет содержать XML, а только хэш-код.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос генерации коротких ссылок:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;shortlink&amp;gt;&lt;br /&gt;
  &amp;lt;hash&amp;gt;35AF350C&amp;lt;/hash&amp;gt;&lt;br /&gt;
&amp;lt;/shortlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''hash''' — Хэш-код ссылки.&lt;br /&gt;
&lt;br /&gt;
Далее, можно использовать ссылку на ЛК:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://home.courierexe.ru/35AF350C или curie.ru/35AF350C&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Примечание!''' Сервис коротких ссылок работает только для ресурсов компании MeaSoft.&lt;br /&gt;
&lt;br /&gt;
== Проверка надежности покупателя ==&lt;br /&gt;
Проверка надежности работает только для тарифа «Максимум» личного кабинета.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;mcheck&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;phones&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;89161147992&amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/phones&amp;gt;&lt;br /&gt;
&amp;lt;/mcheck&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;mcheck&amp;gt;&lt;br /&gt;
  &amp;lt;phones&amp;gt;&lt;br /&gt;
    &amp;lt;phone rate=&amp;quot;90&amp;quot;&amp;gt;89161147992&amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/phones&amp;gt;&lt;br /&gt;
&amp;lt;/mcheck&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Размещение страниц на своем сайте (iframe) ==&lt;br /&gt;
&lt;br /&gt;
В некоторых случаях имеет смысл разметить те или иные страницы на своем сайте.&lt;br /&gt;
&lt;br /&gt;
Например, чтобы клиенты могли рассчитать стоимость доставки не переходя по внешней ссылке, а там же, на сайте, калькулятор можно разместить прямо на странице такого сайта посредством так называемого фрейма — '''iframe'''.&lt;br /&gt;
&lt;br /&gt;
[https://ya.ru/search/?text=iframe Фрейм] — контейнер внутри обычной страницы, который позволяет загружать сторонние страницы. Пример загрузки калькулятора:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe id=&amp;quot;frame&amp;quot; src=&amp;quot;https://home.courierexe.ru/8/calculator&amp;quot;&amp;gt;&lt;br /&gt;
    Здесь должен отобразиться калькулятор&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для удобства пользователей вашего сайта можно указать язык интерфейса (который переключается непосредственно на сайте) параметром '''lang''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe id=&amp;quot;frame&amp;quot; src=&amp;quot;https://home.courierexe.ru/8/calculator?lang=2&amp;quot;&amp;gt;&lt;br /&gt;
    Здесь должен отобразиться калькулятор&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# При использовании iFrame могут не работать некоторые функции, например, подписка на push-уведомления на странице трекинга или отслеживания.&lt;br /&gt;
# Если язык не указать, то на страницах калькулятора и трекинга отображается свой переключатель языка. Если язык указан, то переключатель не отображается.&lt;br /&gt;
&lt;br /&gt;
Поддерживаемые языки и их коды:&lt;br /&gt;
:'''1''' — русский&lt;br /&gt;
:'''2''' — английский&lt;br /&gt;
:'''4''' — узбекский&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Оформление манифеста ==&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса на создание манифеста:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;store_from&amp;gt;1&amp;lt;/store_from&amp;gt;&lt;br /&gt;
    &amp;lt;store_to&amp;gt;2&amp;lt;/store_to&amp;gt;&lt;br /&gt;
    &amp;lt;trn_code&amp;gt;3&amp;lt;/trn_code&amp;gt;&lt;br /&gt;
    &amp;lt;sentdate&amp;gt;2024-11-07&amp;lt;/sentdate&amp;gt;&lt;br /&gt;
    &amp;lt;places&amp;gt;&lt;br /&gt;
        &amp;lt;place&amp;gt;&lt;br /&gt;
            &amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;&lt;br /&gt;
            &amp;lt;seal&amp;gt;7890AABBB&amp;lt;/seal&amp;gt;&lt;br /&gt;
        &amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;place&amp;gt;&lt;br /&gt;
            &amp;lt;number&amp;gt;2&amp;lt;/number&amp;gt;&lt;br /&gt;
            &amp;lt;seal&amp;gt;123456ABC&amp;lt;/seal&amp;gt;&lt;br /&gt;
        &amp;lt;/place&amp;gt;&lt;br /&gt;
    &amp;lt;/places&amp;gt;&lt;br /&gt;
    &amp;lt;addresses&amp;gt;&lt;br /&gt;
        &amp;lt;address&amp;gt;&lt;br /&gt;
            &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;place&amp;gt;1&amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;/address&amp;gt;&lt;br /&gt;
        &amp;lt;address&amp;gt;&lt;br /&gt;
            &amp;lt;code&amp;gt;67890&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;place&amp;gt;2&amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''manifest''' - Корневой контейнер. Обязательный элемент.&lt;br /&gt;
*'''auth''' - Авторизация. Обязательный элемент.&lt;br /&gt;
*'''store_from''' - код филиала отправителя. Обязательный элемент.&lt;br /&gt;
*'''store_to''' - код филиала получателя. Обязательный элемент.&lt;br /&gt;
*'''trn_code''' - код перевозчика. Обязательный элемент.&lt;br /&gt;
*'''sentdate''' - дата отправки манифеста. Не обязательный элемент.&lt;br /&gt;
*'''addresses''' - корневой элемент для списка заказов.&lt;br /&gt;
*:'''address''' - корневой элемент для заказа.&lt;br /&gt;
*::'''code''' - наш внутренний номер заказа. Обязательный элемент.&lt;br /&gt;
*::'''place''' - номер места заказа. Обязательный элемент, если переданы места.&lt;br /&gt;
*'''places''' - корневой элемент для списка мест.&lt;br /&gt;
*::'''place''' - корневой элемент для места.&lt;br /&gt;
*::'''number''' - номер места. Обязательный элемент.&lt;br /&gt;
*::'''seal''' - номер пломбы. Необязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
  &amp;lt;result&amp;gt;OK&amp;lt;/result&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
  &amp;lt;result error=&amp;quot;Текст ошибки&amp;quot;&amp;gt;ERROR&amp;lt;/result&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''manifest''' - Корневой контейнер. Обязательный элемент.&lt;br /&gt;
*'''result ''' - Результат. Принимает значения OK или ERROR.&lt;br /&gt;
*'''error''' - атрибут с текстом ошибки, если она была.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=API&amp;diff=15871</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=API&amp;diff=15871"/>
				<updated>2026-03-20T14:04:50Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Описание полей ответа статусов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 18px; color: #a92424; background-color: #ffdede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Изменения для 54-ФЗ'''&lt;br /&gt;
&lt;br /&gt;
Для передачи ставки НДС при оформлении заказа добавлен атрибут items &amp;gt; item &amp;gt; VATrate.&lt;br /&gt;
&lt;br /&gt;
При использовании услуги кассового обслуживания необходимо в обязательном порядке передавать состав заказа со ставками НДС.&lt;br /&gt;
&lt;br /&gt;
'''ВНИМАНИЕ'''&lt;br /&gt;
&lt;br /&gt;
В ближайшем будущем при подключенной услуге кассового обслуживания система '''перестанет''' принимать заказы без состава вложений.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 24px; color: #2424a9; background-color: #deffde; border: 1px solid #ebccd1; padding: 3px 10px 10px; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
'''English version is [[API Documentation|HERE!]]'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вы можете настроить интеграцию с MeaSoft средствами XML API по протоколу HTTP POST.&lt;br /&gt;
&lt;br /&gt;
API предназначено для интеграции клиентов (интернет-магазинов и прочих компаний-заказчиков доставки) с [http://courierexe.ru/our_clients.htm курьерскими службами], работающими под управлением системы [https://curie.ru/ MeaSoft].&lt;br /&gt;
&lt;br /&gt;
Если вы '''агрегатор''', передающий данные от клиентов, возможно, вам придется последовательно подключаться под разными пользователями, если курьерская служба должна вести раздельный учет взаиморасчетов по клиентам.&lt;br /&gt;
&lt;br /&gt;
Если вы '''подрядчик''', вы можете забирать заказы, используя значение client=AGENT в запросе [[#Пример запроса статуса заказа|statusreq]], и передавать статусы заказов, используя метод [[#Изменение статуса агентом|setorderinfo]]. Также для интеграций с подрядчиками у нас есть специальная платформа, но добавлять подрядчиков в нее можно только на нашей стороне. Присылайте нам коммерческое предложение, описание вашего сервиса, и мы с радостью его рассмотрим.&lt;br /&gt;
&lt;br /&gt;
При написании этой документации мы предполагаем, что ее читатель обладает необходимой для понимания квалификацией программиста, владеет XML и средой разработки, в которой он делает интеграцию. Если вы не программист, вам необходимо привлечь к проекту профессионального программиста.&lt;br /&gt;
&lt;br /&gt;
Если у вас после прочтения документации остались вопросы, задайте их по почте [mailto:support@courierexe.ru support@courierexe.ru]. Обязательно представьтесь, напишите ваши контактные данные (телефон, скайп) и название компании, с которой вы хотите интегрироваться.&lt;br /&gt;
&lt;br /&gt;
== Готовые интеграции ==&lt;br /&gt;
Для работы с популярными CMS и CRM-системами разработаны модули интеграции, перечисленные в таблице ниже.&lt;br /&gt;
&lt;br /&gt;
'''Модули распространяются бесплатно, без гарантий со стороны разработчика''', и не являются средством полной автоматизации взаимодействия с курьерской службой. Модули — это помощь разработчикам интернет-магазинов в построении интеграции с курьерскими службами. '''Ответственность за корректность передачи данных лежит на интернет-магазине.'''&lt;br /&gt;
Модули сторонних разработчиков обслуживаются и разрабатываются сторонними компаниями. Все вопросы по их приобретению и поддержке необходимо задавать им.&lt;br /&gt;
&lt;br /&gt;
Сообщайте нам свои пожелания по работе наших модулей. Мы учтем их в новых версиях.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width: 80%; margin: auto; background-color:#ffffff; border: 1px solid #999999;&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 35%;&amp;quot;|Система управления контентом (CMS)&lt;br /&gt;
!style=&amp;quot;width: 15%;&amp;quot;|Ссылка&lt;br /&gt;
!style=&amp;quot;width: 35%;&amp;quot;|Примечание&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:bitrix.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot; | [https://marketplace.1c-bitrix.ru/solutions/measoft.courier/ Установить] &amp;lt;!--[https://courierexe.ru/download/api/measoft.courier.zip Скачать] --&amp;gt;&lt;br /&gt;
|Поддерживает версии 20.5.0 и выше. Подробнее см. [[1C-Битрикс|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:prestashop.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/prestashop.zip Скачать]&lt;br /&gt;
|Поддерживает версии 1.5.2.0 и выше. Подробнее см. [[PrestaShop|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:OpencartOCStore.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/opencart.zip Скачать для версии 1.5.5.1]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc2.ocmod.zip Скачать для версии 2.0]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc2.3.ocmod.zip Скачать для версии 2.3]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc3.ocmod.zip Скачать для версии 3.0]&lt;br /&gt;
|Поддерживает версии с 1.5.5.1.&amp;lt;br&amp;gt;Скачивайте модули для своей версии OpenCart.&amp;lt;br&amp;gt;Подробнее см. [[OpenCart|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:webasyst-shopscript.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.webasyst.ru/store/plugin/shop/measoftcourier/ Установить модуль]&amp;lt;br&amp;gt;[https://www.webasyst.ru/store/plugin/shipping/measoftcourier/ Установить плагин]&lt;br /&gt;
|Модуль предназначен для отправки заявок в КС, а плагин для расчета стоимости доставки при оформлении заказа. Инструкции есть в маркете, а также см. [[Webasyst|описание]].&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--|[[Файл:advantshop.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://promo-z.ru/ Сайт компании PROMO]&lt;br /&gt;
|Компания PROMO разработала этот модуль и настраивает интеграцию MeaSoft с ADVANTSHOP своим клиентам.&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
|[[Файл:insales.png|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Настраивается в [[Личный кабинет клиента|ЛК пользователя]]&lt;br /&gt;
|[[InSales|Инструкция по настройке]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:iiko.jpg|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Настраивается в [[Личный кабинет клиента|ЛК пользователя]]&lt;br /&gt;
|[[Iiko|Инструкция по настройке]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Leadvertex.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://blog.leadvertex.ru/news/2110-integraciya-s-kurerkami-na-platforme-measoft Настраивается] в ЛК [https://Leadvertex.ru Leadvertex]&lt;br /&gt;
|[[LeadVertex|Инструкция по настройке]]&amp;lt;br&amp;gt;Модуль разработан и поддерживается компанией LeadVertex.&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Retailcrm.png|center|x30px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.retailcrm.ru/ RetailCRM]&lt;br /&gt;
|[[RetailCRM|Настраивается]] в ЛК пользователя в системе&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:1C.jpg|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|-&lt;br /&gt;
|[https://infostart.ru/public/692790/ Альтернативный модуль сторонних разработчиков (1 версия)]&lt;br /&gt;
&lt;br /&gt;
[https://infostart.ru/public/1531484/ Альтернативный модуль сторонних разработчиков (2 версия)]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Joomla2.jpg|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/com_measoft.zip Скачать]&lt;br /&gt;
|Работает только с компонентом Virtuemart. Инструкция в архиве&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Amocrm.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.amocrm.ru/extensions/measoft Описание на сайте amoCRM]&lt;br /&gt;
|Подробное описание настроек читайте [[amoCRM|тут]].&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|[[Файл:MoySclad.jpg|center|x30px]]&lt;br /&gt;
|style=&amp;quot;height:50px; text-align: center;&amp;quot;|&lt;br /&gt;
|[[МойСклад|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;height:50px; text-align: center;&amp;quot;|[https://itmdev.ru/ms/shipping/ Скачать модуль сторонних разработчиков]&lt;br /&gt;
|Интеграция МойСклад с курьерскими службами от сторонних разработчиков&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:wordpress.jpg|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/wordpress/wordpress.php Скачать]&lt;br /&gt;
|[[Wordpress|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Cscart.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://marketplace.cs-cart.com/measoft-en.html Установить]&lt;br /&gt;
|Поддерживает версии 4.10 и выше.&amp;lt;br&amp;gt;[[CS-Cart|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:webhooks.jpg|center|x100px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Читайте описание [[Webhook|на этой странице]]&lt;br /&gt;
|Передача информации о статусах и заказах в вашу систему&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Logo_tilda_black.png|center|x100px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Читайте описание [[Tilda|на этой странице]]&lt;br /&gt;
|Работает только на платных тарифах&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание!''' В модулях систем PrestaShop и Joomla для отправки заказа в курьерскую службу зайдите в карточку заказа. В карточке отображается специальная форма отправки заказа, а если заказ отправлен, она позволяет проверить его статус:[[Файл:Form.png|400 px|Форма отправки заказа|none]]&lt;br /&gt;
&lt;br /&gt;
Для отображения списка пунктов выдачи есть [https://home.courierexe.ru/js/measoft_map.js JavaScript модуль]. Инструкция по использованию — внутри. Посмотреть пример работы можно [https://home.courierexe.ru/pvz_test.html здесь].&lt;br /&gt;
&lt;br /&gt;
== Тестовый аккаунт ==&lt;br /&gt;
Для отладки зайдите в тестовый личный кабинет по адресу [https://home.courierexe.ru/8 https://home.courierexe.ru/8], логин: login пароль: pass.&lt;br /&gt;
&lt;br /&gt;
На вкладке '''Интеграция''' &amp;gt; '''Отладка''' вы можете пробовать выполнять запросы к API для отладки, а также видеть историю отправленных запросов. Созданные заказы появятся в пункте основного меню '''Отслеживание'''.&lt;br /&gt;
&lt;br /&gt;
Для упрощения интеграции можно скачать [https://courierexe.ru/download/api/php_sample.zip пример обращения к сервису на PHP].&lt;br /&gt;
&lt;br /&gt;
== Рабочий аккаунт для подключения ==&lt;br /&gt;
Строка подключения выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание параметров:&lt;br /&gt;
* '''extra''' — экстра-код, уникальный идентификатор компании, с которой вы интегрируетесь.&lt;br /&gt;
* '''login''' — логин клиента;&lt;br /&gt;
* '''pass''' — пароль клиента;&lt;br /&gt;
* '''measoftid''' — системная переменная, используемая системой.&lt;br /&gt;
&lt;br /&gt;
Запросите эти данные у курьерской службы, к которой вы подключаетесь. Курьерская служба передает временный пароль, его нужно сменить после первого входа в [[Личный кабинет клиента|ЛК клиента]].&lt;br /&gt;
&lt;br /&gt;
== Авторизация курьерской службы ==&lt;br /&gt;
Если курьерской службе требуется подключение под своими учетным данными, используйте строку вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; clientcode=&amp;quot;123&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание:&lt;br /&gt;
* '''extra''' — уникальный идентификатор компании;&lt;br /&gt;
* '''login''' — логин курьерской службы;&lt;br /&gt;
* '''pass''' — пароль курьерской службы;&lt;br /&gt;
* '''clientcode''' — внутренний код клиента (вкладка '''Клиенты''', столбец «Внутренний код»).&lt;br /&gt;
&lt;br /&gt;
Вы можете узнать код экстра, логин и пароль курьерской службы в офисном приложении MeaSoft в справочнике '''Дополнительные возможности'''. Подробнее см. раздел «[[Личный кабинет курьерской службы#Подключение|Подключение]]».&lt;br /&gt;
&lt;br /&gt;
== Общие понятия ==&lt;br /&gt;
На стороне курьерской службы имеется веб-сервис по адресу: https://home.courierexe.ru/api/. &amp;lt;rspoiler text=&amp;quot;Еще есть порт 8443.&amp;quot;&amp;gt;Некоторые маршрутизаторы, используемые провайдерами, РНК и прочее, в попытке глубокого анализа могут повреждать трафик на стандартный порт 443. Сделано по тикету 10964.&amp;lt;/rspoiler&amp;gt; Обратите внимание на символ '''«/»''' (slash) в конце адреса.&lt;br /&gt;
&lt;br /&gt;
Тестовые авторизационные данные: логин: login пароль: pass, параметр extra: 8. Обратите внимание, что тестовая площадка для всех одна. Не нужно передавать в нее заказы с конфиденциальными данными, их смогут увидеть другие участники.&lt;br /&gt;
&lt;br /&gt;
Для использования интеграции в «боевом» режиме, запросите '''логин''', '''пароль''', и параметр '''extra''' у той компании, с которой интегрируетесь.&lt;br /&gt;
&lt;br /&gt;
Вы можете отправлять тестовые запросы к нашему сервису и видеть историю отправленных запросов в личном кабинете на закладке '''Интеграция'''.&lt;br /&gt;
&lt;br /&gt;
Клиент отправляет запросы к сервису методом HTTP POST, сервис обрабатывает запросы и возвращает результат выполнения. Все запросы и ответы передаются в формате XML.&lt;br /&gt;
Кодировка — UTF-8. Разделитель целой и дробной частей чисел — используется символ точки. Даты представляются в виде YYYY-MM-DD, время — HH:MM.&lt;br /&gt;
&lt;br /&gt;
В силу [https://ru.wikipedia.org/wiki/XML#.D0.A0.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC.D1.8B_.D0.BD.D0.B5.D0.BE.D0.B4.D0.BD.D0.BE.D0.B7.D0.BD.D0.B0.D1.87.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.82.D0.BA.D0.B8 особенностей языка XML], некоторые символы в тексте должны быть заменены: &amp;amp; на &amp;amp;amp;amp; &amp;lt; на &amp;amp;amp;lt; &amp;gt; на &amp;amp;amp;gt; &amp;quot; на &amp;amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Наше API принципиально работает только по HTTPS, так как передает конфиденциальные данные. В некоторых системах с этим возникают проблемы. Если ваша система не может полноценно работать с шифрованием, мы рекомендуем развернуть http-сервер у себя локально, установить [http://courierexe.ru/download/api/proxy.zip прокси на PHP]. &amp;lt;spoiler text=&amp;quot;Как запустить&amp;quot;&amp;gt;Для теста можете запустить его на сервере следующей командой: php -S &amp;lt;IP&amp;gt;:8080 proxy.php&lt;br /&gt;
где &amp;lt;IP&amp;gt; — это адрес вашего сервера, а 8080 порт, на котором будут приниматься запросы.&lt;br /&gt;
Тогда для обмена данными с нашим АПИ необходимо будет использовать адрес &amp;lt;IP&amp;gt;:8080&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
Доступность функций, описанных в этом разделе, зависит от [[Личный кабинет курьерской службы#Функции личного кабинета|тарифа вашего личного кабинета]].&lt;br /&gt;
&lt;br /&gt;
== Ограничения ==&lt;br /&gt;
С целью защиты от нецелевого использования сервисов и DDoS-атак действуют следующие ограничения:&lt;br /&gt;
* 30 запросов tracking с одного IP-адреса за 1 минуту (используйте statusreq!);&lt;br /&gt;
* 150 запросов с одного IP-адреса/акаунта за 1 минуту;&lt;br /&gt;
* 1500 запросов с одного IP-адреса/акаунта за 20 минут;&lt;br /&gt;
* 3000 запросов с одного аккаунта за 1 час;&lt;br /&gt;
* 200 Мб скачанных текстовых данных за 3 часа.&lt;br /&gt;
* Превышение количества запросов статусов несуществующих заказов над существующими&lt;br /&gt;
&lt;br /&gt;
В случае превышения IP-адрес или аккаунт блокируется на время до 3-х часов.&lt;br /&gt;
&lt;br /&gt;
Чтобы не происходило блокировок:&lt;br /&gt;
* не нужно «бомбить» наше API запросами статусов, последовательно перебирая номера всех ваших заказов, особенно запросами «tracking», они предназначены не для этого (смотрите описание). Особенно ровно в 00 минут каждого часа;&lt;br /&gt;
* не нужно каждые 5 минут делать запросы «Покажите статусы всех заказов за последние 3 месяца»;&lt;br /&gt;
* для проверки статусов заказов лучше всего использовать запросы [[#Передача только изменившихся статусов|измененных статусов changes=ONLY_LAST]];&lt;br /&gt;
* при запросе измененных статусов ОБЯЗАТЕЛЬНО нужно подтверждать успешное получение запросом [[#Передача только изменившихся статусов|commitlaststatus]].&lt;br /&gt;
* вы должны знать номера заказов, которые вы отправили. Не нужно перебирать номера всех заказов или брутфорсом перебирать все возможные номера.&lt;br /&gt;
* нужно проверять с каким ответом возвращаются ваши АПИ-запросы. Если мы отвечаем ошибкой, то даже запрос на создание нового заказа учитывается в количестве запросов.&lt;br /&gt;
&lt;br /&gt;
Мы абсолютно уверены, что данные ограничения на порядки превосходят необходимые объемы предоставления сервиса для решения любых задач. Если у вас возникают проблемы, вы не знаете, как уложиться в эти рамки — спросите у нас, мы обязательно поможем!&lt;br /&gt;
&lt;br /&gt;
== Оформление заказа ==&lt;br /&gt;
&lt;br /&gt;
=== Пример оформления заказа ===&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder newfolder=&amp;quot;NO&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Чип &amp;amp;amp; Дейл&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;78&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;124&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;1112223335&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;1234&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice VATrate=&amp;quot;20&amp;quot;&amp;gt;150&amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;discount&amp;gt;120&amp;lt;/discount&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;1&amp;lt;/return_service&amp;gt;&lt;br /&gt;
   &amp;lt;return_type&amp;gt;3&amp;lt;/return_type&amp;gt;&lt;br /&gt;
   &amp;lt;return_weight&amp;gt;5.1&amp;lt;/return_weight&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;22&amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;receiverpays&amp;gt;NO&amp;lt;/receiverpays&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;&lt;br /&gt;
   &amp;lt;department&amp;gt;Отдел&amp;lt;/department&amp;gt;&lt;br /&gt;
   &amp;lt;pickup&amp;gt;NO&amp;lt;/pickup&amp;gt;&lt;br /&gt;
   &amp;lt;acceptpartially&amp;gt;NO&amp;lt;/acceptpartially&amp;gt;&lt;br /&gt;
   &amp;lt;costcode&amp;gt;cc12345&amp;lt;/costcode&amp;gt;&lt;br /&gt;
   &amp;lt;respstore&amp;gt;4&amp;lt;/respstore&amp;gt;&lt;br /&gt;
   &amp;lt;uid&amp;gt;af11c7c6-6645-4a20-9604-be911a75722d&amp;lt;/uid&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; textArticle=&amp;quot;1&amp;quot; article=&amp;quot;1&amp;quot; volume=&amp;quot;3&amp;quot; origincountry=&amp;quot;AUT&amp;quot; GTD=&amp;quot;321546654&amp;quot; excise=&amp;quot;15.20&amp;quot; suppcompany=&amp;quot;ООО &amp;amp;quot;Рога и копыта&amp;amp;quot;&amp;quot; suppphone=&amp;quot;79161234567&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; govType=&amp;quot;2&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; extraTags=&amp;quot;&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; inshprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot; origincountry=&amp;quot;004&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; inshprice=&amp;quot;50&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; itemcode=&amp;quot;44123&amp;quot; article=&amp;quot;3&amp;quot; type=&amp;quot;1&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package strbarcode=&amp;quot;ORD0000001&amp;quot; mass=&amp;quot;1&amp;quot; message=&amp;quot;&amp;quot; quantity=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package strbarcode=&amp;quot;ORD0000002&amp;quot; mass=&amp;quot;2.5&amp;quot; message=&amp;quot;&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryset above_price=&amp;quot;100&amp;quot; return_price=&amp;quot;1000&amp;quot; VATrate=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;below below_sum=&amp;quot;500&amp;quot; price=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;below below_sum=&amp;quot;2000&amp;quot; price=&amp;quot;300&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/deliveryset&amp;gt;&lt;br /&gt;
   &amp;lt;advprices&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;123&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;10.5&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
  &amp;lt;/advprices&amp;gt;&lt;br /&gt;
  &amp;lt;extrafields&amp;gt;&lt;br /&gt;
    &amp;lt;extrafield&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;courier_car&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;ВАЗ 2106, бежевый&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/extrafield&amp;gt;&lt;br /&gt;
  &amp;lt;/extrafields&amp;gt;&lt;br /&gt;
  &amp;lt;overall_volume&amp;gt;81&amp;lt;/overall_volume&amp;gt;&lt;br /&gt;
  &amp;lt;userid&amp;gt;user123&amp;lt;/userid&amp;gt;&lt;br /&gt;
  &amp;lt;groupid&amp;gt;customer&amp;lt;/groupid&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание элементов для оформления заказа ===&lt;br /&gt;
'''Обязательные поля'''&lt;br /&gt;
&lt;br /&gt;
Обязательными на уровне системы являются только 3 поля: receiver-&amp;gt;company или receiver-&amp;gt;person, receiver-&amp;gt;address и receiver-&amp;gt;phone. Так же в настройках системы сама курьерская служба может назначить какие-то дополнительные поля обязательными, тогда, если вы их не укажете, получите сообщение об ошибке.&lt;br /&gt;
&amp;lt;spoiler text=&amp;quot;Пример минимально возможного заказа&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;order&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;(495)123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка, 38&amp;lt;/address&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей'''&lt;br /&gt;
&lt;br /&gt;
* '''neworder''' — Корневой контейнер, обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
:* '''''newfolder''''' — Признак нового заказа YES/NO. Если стоит YES, то в системе курьерской службы для данной корреспонденции создастся новый заказ. Необязательный элемент.&lt;br /&gt;
&lt;br /&gt;
* '''order''' — Контейнер для описания одного заказа, обязательный элемент. В одном контейнере '''neworder''' может быть много контейнеров '''order''' для создания нескольких заказов одним запросом.&lt;br /&gt;
&lt;br /&gt;
:* '''''orderno''''' — Номер заказа. Если присваивается клиентом — указывается здесь. Если не присваивается — можно оставить пустым, система сгенерирует свой номер, и вернет его в ответе. Система проверяет '''у клиента''' наличие заказов с указанным номером в '''пределах текущего календарного года''', которые '''не являются недоставленными''', и в случае их существования — заказ создан не будет, а в ответе вернется ошибка 17 «Such number exists».&lt;br /&gt;
Если не указан штрихкод (поле barcode), и значение поля подходит для использования его в качестве штрихкода, данное значение будет скопировано в поле «Штрихкод». Это накладывает ограничения в частности, на длину указанного поля (25 знаков, чтобы работали стандартные печатные формы).&lt;br /&gt;
&lt;br /&gt;
* '''barcode''' — Штрихкод заказа. Если клиент штрихкодирует свои отправления и штрихкод отличается от номера заказа, в этом поле указывается штрихкод. Если ШК содержит кириллицу или малое количество символов, то формируется ШК в формате EAN13.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler text=&amp;quot;Заполнение номера заказа (шифра) и штрих-кода&amp;quot;&amp;gt;&lt;br /&gt;
Шифр и штрих-код заполняются исходя из начальных значений:&lt;br /&gt;
&lt;br /&gt;
# Если шифр и ШК пустые - оба поля заполняются автоматически значением вида XXX#YYY, а после ШК проверяется на корректность (валидируется)&lt;br /&gt;
# Если ШК пустой, а шифр заполнен - ШК заполняется значением из шифра и валидируется&lt;br /&gt;
# Если шифр пустой, а ШК заполнен - шифр заполняется значением из ШК, после чего ШК валидируется&lt;br /&gt;
# Если оба непустые - валидируется ШК, шифр не проверяется&lt;br /&gt;
&lt;br /&gt;
Корректный (валидный) ШК отвечает следующим требованиям:&lt;br /&gt;
* длина не меньше 5 символов&lt;br /&gt;
* значение не меньше значения переменной &amp;lt;mparam code=&amp;quot;MinPrePrintedNum&amp;quot;/&amp;gt;&lt;br /&gt;
* содержит символы, которые можно использовать для формирования штрих-код а формате Code128 (т.е.все печатные символы, кроме кириллицы)&lt;br /&gt;
&lt;br /&gt;
Если ШК не прошел проверку, то:&lt;br /&gt;
* если переменная &amp;lt;mparam code=&amp;quot;StoreInvLength&amp;quot;/&amp;gt; равна 0, ШК заполняются автоматически значением вида XXX#YYY (или приравнивается шифру в том же формате)&lt;br /&gt;
* если переменная &amp;lt;mparam code=&amp;quot;StoreInvLength&amp;quot;/&amp;gt; больше 0, ШК заполняются автоматически сквозным номером (если шифр в формате XXX#YYY, то шифр приравнивается ШК)&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В случае наличия нескольких мест и раздельной их маркировки в этом поле допустимы маски в виде символов подчеркивания, говорящие о позициях штрихкода, переменных для разных мест в рамках одного заказа.&amp;lt;br&amp;gt;&lt;br /&gt;
''Например'': В заказе номер 123 имеется 20 товарных вложений, которые упакованы в 3 транспортных места. Клиент формирует 3 штрихкода на транспортные места: CLNT0012301, CLNT0012302, CLNT0012303, где CLNT — префикс клиента, 00123 — номер заказа, 01-03 — номер транспортного места в заказе. В поле barcode нужно указать CLNT00123__ (система поймет, что 2 последних символа могут быть любыми и будут отражать штрихкоды к одному заказу). Если вы не сами печатаете накладные с указанным штрихкодом, то указанный штрихкод не должен быть длиннее 25 знаков, иначе он не поместится на стандартных печатных формах.&lt;br /&gt;
&lt;br /&gt;
* '''sender''' — Информация о отправителе заказа. Необязательный контейнер.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;Название компании отправителя&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Контактное лицо отправителя&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;Телефон, Email отправителя&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Город отправителя в формате &amp;quot;Москва город&amp;quot;&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Адрес отправителя&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;Дата забора в формате &amp;quot;YYYY-MM-DD&amp;quot;&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;Желаемое время забора в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;Желаемое время забора в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''receiver''' — Информация о получателе заказа. Обязательный контейнер.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;Название компании получателя&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Контактное лицо получателя&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;Телефон, Email получателя&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;Код региона&amp;quot;&amp;gt;Город получателя в формате &amp;quot;Москва город&amp;quot;&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Адрес получателя&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;ИНН получателя&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;Код пункта самовывоза по справочнику&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;Дата доставки в формате &amp;quot;YYYY-MM-DD&amp;quot;&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;Желаемое время доставки в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;Желаемое время доставки в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;Пин-код для подтверждения получателем&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''company''' — Компания-получатель.&lt;br /&gt;
* '''person''' — Контактное лицо. ''Должно быть заполнено хотя бы одно из полей — company или person!''&lt;br /&gt;
* '''phone''' — Телефон. Можно указывать несколько телефонов, E-mail в этом поле.&lt;br /&gt;
* '''town''' — Город.&lt;br /&gt;
* '''pvz''' — Код пункта самовывоза по справочнику. Кроме того, ПВЗ можно указать в строке '''''address''''' в виде:&lt;br /&gt;
:* код ПВЗ в нашей системе&lt;br /&gt;
:* код ПВЗ в системе подрядчика&lt;br /&gt;
:* наименование ПВЗ в виде строки &amp;quot;ПВЗ &amp;quot; + «Наименование ПВЗ». &lt;br /&gt;
&lt;br /&gt;
При указании ПВЗ в поле адреса необходимо проверять значение поля город получателя (он должен соответствовать данным ПВЗ) либо не передавать его вообще.&lt;br /&gt;
&lt;br /&gt;
Для тега города '''town''' можно указать код региона в атрибуте '''''regioncode''''' из [[#Справочник регионов|справочника регионов]]. Поиск будет производиться в указанном регионе.&lt;br /&gt;
&lt;br /&gt;
Также можно указать страну получателя в атрибуте '''''country''''' в соответствии с [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
&lt;br /&gt;
Кроме того, поиск города осуществляется с учетом почтового индекса, указанного в теге '''zipcode'''.&lt;br /&gt;
&lt;br /&gt;
Поле '''Город''' контейнеров '''sender''' и '''receiver''' можно указать одним из следующих способов:&lt;br /&gt;
:* код населенного пункта из [[#Справочник городов|справочника городов]]&lt;br /&gt;
:* 13-ти значный код адресного классификатора КЛАДР&lt;br /&gt;
:* 36-ти значный код адресной системы &amp;lt;rspoiler text=&amp;quot;ФИАС&amp;quot;&amp;gt;Федеральная информационная адресная система — единый российский государственный адресный реестр&amp;lt;/rspoiler&amp;gt; (AOID)&lt;br /&gt;
:* название города (не рекомендуется!)&lt;br /&gt;
&lt;br /&gt;
* '''coords''' — Координаты получателя. Если не указаны, система будет геокодировать самостоятельно.&lt;br /&gt;
&lt;br /&gt;
* '''zipcode''' — Почтовый индекс.&lt;br /&gt;
* '''price''' — Сумма заказа (наложенный платеж)  - денежные средства, которые курьер должен забрать у получателя в пользу заказчика. В случае наличия контейнера items значение этого параметра будет проигнорировано и рассчитано автоматически.&lt;br /&gt;
* '''inshprice''' — Объявленная ценность. Если явно не указана сумма — автоматически считается как сумма по товарам.&lt;br /&gt;
* '''deliveryprice''' — Стоимость доставки, которая устанавливается заказчиком и будет взиматься с получателя в пользу заказчика. Не имеет отношения к стоимости доставки самой курьерской службы, которая рассчитывается в соответствии с тарифамии, не указывается при оформлении заказа и добавляется в заказ автоматически при его обработке курьерской службой. В случае наличия контейнера items в него будет добавлено вложение «Доставка».&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов.&lt;br /&gt;
* '''discount''' — Сумма скидки. Скидка «размазывается» по товарным вложениям, сумма НП уменьшается на сумму скидки. При этом вложение Скидка не создается. ВНИМАНИЕ, при использовании этого тега общая сумма может расходиться на копейки из-за округления! Старайтесь не использовать этот тег, а указывать цену товаров уже с учетом скидок.&lt;br /&gt;
* '''paytype''' — Тип оплаты заказа получателем. Принимает значения:&lt;br /&gt;
:* CASH — Наличными при получении (по-умолчанию)&lt;br /&gt;
:* CARD — Картой при получении&lt;br /&gt;
:* NO — Без оплаты. Этот тип оплаты передается, если заказ уже оплачен и не требует инкассации. API добавит к товарам строку предоплаты в сумму заказа, чтобы общая сумма была 0, однако в кассовом чеке будут все товары с ценами, и оплата предоплатой, как того требует 54-ФЗ.&lt;br /&gt;
:* OTHER — Прочее (Предусмотрен для того, чтобы оплата поступала непосредственно в курьерскую службу посредством прочих типов оплаты — таких как: вебмани, яденьги, картой на сайте, прочие платежные системы и т. д.)&lt;br /&gt;
:* OPTION — На выбор получателя. Этот тип оплаты нельзя передавать с заказом. Он выставляется автоматически в зависимости от настройки клиента.&lt;br /&gt;
* '''weight''' — Общий вес заказа в килограммах.&lt;br /&gt;
* '''quantity''' — Количество мест.&lt;br /&gt;
* '''service''' — Режим доставки (тип услуги) передается код из справочника «[[#Справочник Виды срочности|Виды срочности]]».&lt;br /&gt;
* '''type''' — Тип корреспонденции (отправления) передается код из справочника «Типы корреспонденции».&lt;br /&gt;
* '''return''' — Признак необходимости возврата. Принимает значения:&lt;br /&gt;
:* NO — Возврат не требуется&lt;br /&gt;
:* YES — Требуется возврат, например, документов&lt;br /&gt;
:* ONLY — Требуется забрать отправление у поставщика (см. раздел «[[Личный_кабинет_клиента#Привезти ко мне|Привезти ко мне]]»). &lt;br /&gt;
* '''return_service''' — Режим возврата (тип услуги) передается код из справочника «Виды срочности».&lt;br /&gt;
* '''return_type''' — Тип возвратной корреспонденции (отправления) передается код из справочника «Типы корреспонденции».&lt;br /&gt;
* '''return_weight''' — Общий вес возврата заказа в килограммах.&lt;br /&gt;
* '''enclosure''' — Вложение.&lt;br /&gt;
* '''instruction''' — Поручение — Примечание.&lt;br /&gt;
* '''courier''' — Запланированный курьер. Согласно коду курьера в КС2008.&lt;br /&gt;
* '''receiverpays''' — Признак оплаты стоимости доставки — услуг службы доставки получателем, а не заказчиком YES/NO.&lt;br /&gt;
* '''department''' — Подразделение, в котором оформляется заказ.&lt;br /&gt;
* '''costcode''' — Кост-код сотрудника.&lt;br /&gt;
* '''respstore''' — Код ответственного филиала. Для ответственного филиала в который передается заказ, требуется включение параметра &amp;quot;Разрешить клиенту передавать заказы в этот филиал&amp;quot;&lt;br /&gt;
* '''pickup''' — Признак оформления забора YES/NO. Если стоит YES, то весь заказ считается заданием на забор груза, а не на доставку! Применяется для вызова курьера к отправителю для забора других отправлений. ''Внимание!'' при добавлении в забор складских товаров, их тип '''''type''''' всегда должен быть установлен как [7] Забор товара, если будет указан другой тип, то он будет исправлен в момент добавления заказа на [7] Забор товара&lt;br /&gt;
* '''acceptpartially''' — Признак возможности частичного выкупа товаров отправления YES/NO.&lt;br /&gt;
* '''uid''' - Универсальный идентификатор заказа на стороне отправителя. Не обязательный параметр, ограниченного по времени действия. Время хранения в системе, - сутки.&lt;br /&gt;
&lt;br /&gt;
* '''items''' — Контейнер для описания вложений. &amp;lt;rspoiler text=&amp;quot;Необязательный контейнер&amp;quot;&amp;gt;Если для поставщика товара в системе MeaSoft не указаны полное наименование компании и ИНН в карточке клиента, заполните параметры &amp;lt;code&amp;gt;suppcompany&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;suppINN&amp;lt;/code&amp;gt; в этом контейнере. Отсутствие информации о поставщике приведет к [[Настройка модуля печати кассовых чеков#Ошибка фискализации (ошибка программирования реквизита 1226)|ошибке фискализации]].&amp;lt;/rspoiler&amp;gt;. Атрибуты:&lt;br /&gt;
:* '''''item''''' — Название вложения.&lt;br /&gt;
:* '''''quantity''''' — Количество единиц товара.&lt;br /&gt;
:* '''''mass''''' — Масса единицы товара в килограммах.&lt;br /&gt;
:* '''''volume''''' — Объемный вес единицы товара в килограммах. При указании объемного веса значение подставляется вместо массы&lt;br /&gt;
:* '''''length''''' — Длина единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''width''''' — Ширина единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''height''''' — Высота единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''retprice''''' — Цена единицы товара. Округляется до копеек. Должна быть с учетом всех скидок и наценок. Для вложений типов 1, 2, 3 не может быть отрицательной. &amp;lt;!-- , либо мы сами посчитаем скидку при указании тега order-&amp;gt;discount --&amp;gt;&lt;br /&gt;
:* '''''inshprice''''' — Объявленная ценность единицы товара. Округляется до копеек. Если не указана принимается равной '''''retprice'''''.&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов. Если товар хранится в КС (смотрите '''article''' ниже), значение берется из номенклатуры. Иначе, если значение указано, берется указанное значение, если нет - значение из настроек фирмы КС. Значение «0» означает ставку «Без НДС», ставка «0%» на данный момент не поддерживается.&lt;br /&gt;
:* '''''barcode''''' — Штрихкод вложения.&lt;br /&gt;
:* '''''article''''' — Артикул вложения. ''Внимание!'' Указание артикула используется только тогда, когда товар хранится на ответственном хранении в службе доставки, и необходима комплектация. В этом случае система пытается привязать товар к [[API#Справочник номенклатуры|справочнику номенклатуры]]. Если товар в справочнике не найден — система выдаст соответствующую ошибку. Если по артикулу найдено несколько товаров — система выберет один из них случайным образом, что может привести к ошибочной комплектации! Если товар НЕ на ответственном хранении — артикул указывать НЕ нужно. Позиция попадет в систему просто текстом.&lt;br /&gt;
:* '''''itemcode''''' — Внутренний код товара, может использоваться вместо артикула. ''Внимание!'' Указание кода товара используется только тогда, когда товар хранится на ответственном хранении в службе доставки, и необходима комплектация. В этом случае система пытается привязать товар к [[API#Справочник номенклатуры|справочнику номенклатуры]]. Если товар в справочнике не найден — система выдаст соответствующую ошибку. Если товар НЕ на ответственном хранении — код товара указывать НЕ нужно.&lt;br /&gt;
:* '''''type''''' — Тип вложения. Принимает значения:&lt;br /&gt;
:: 1 — Товар. По-умолчанию.&lt;br /&gt;
:: 2 — Доставка. Такое вложение добавится автоматически, если заполнить order-&amp;gt;deliveryprice&lt;br /&gt;
:: 3 — Услуга&lt;br /&gt;
:: 4 — Предоплата. Указывается сумма. Поле quantity игнорируется, всегда «1». В заказе сумма будет отрицательной независимо от знака в запросе. Такое вложение добавится автоматически при указании order-&amp;gt;paytype=NO.&lt;br /&gt;
:: 6 — Оплата кредитом. Указывается сумма. Поле quantity игнорируется, всегда «1». В заказе сумма будет отрицательной независимо от знака в запросе.&lt;br /&gt;
:: 7 — Забор товара. Если товар нужно у получателя забрать, возможно — вернуть деньги, или его стоимость вычтется из суммы других товаров. У такого товара в заказе будет отрицательное количество независимо от знака в запросе.&lt;br /&gt;
:* '''''extcode''''' — Внешний код строки. Используется для идентификации строк заказов при получении статусов. Необязательное поле.&lt;br /&gt;
:* '''''origincountry''''' — Код страны-производителя в соответствии со [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
:* '''''GTD''''' — Номер ГТД.&lt;br /&gt;
:* '''''excise''''' — Сумма акциза.&lt;br /&gt;
:* '''''suppcompany''''' — Наименование компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''suppphone''''' — Номер телефона компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''suppINN''''' — ИНН компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''governmentCode''''' — Код товарной номенклатуры. Используется для [[Маркировка|маркированных товаров, например («Честный знак»)]]. Для кода '''Честный знак''' Нужно указывать все данные из нанесенного QR-кода кроме не читаемых символов (#29). Если код не известен — укажите знак вопроса «?», тогда курьер отсканирует код фактически передаваемого покупателю товара. Для некоторых процессов может использоваться значение «!» — в этом случае курьер сканирует серийный номер товара, но это не считается кодом маркировки. При этом, если указано значение «?» или «!» и quantity больше 1, то такое вложение растиражируется quantity раз.&lt;br /&gt;
:* '''''govType''''' — Тип маркировки товара. В данный момент существуют следующие типы маркировки:&lt;br /&gt;
:: 1 — Честный знак. По-умолчанию.&lt;br /&gt;
:: 2 — ГИИС ДМДК.&lt;br /&gt;
:: 3 — Серийный номер.&lt;br /&gt;
:* '''''message''''' — Строка сообщения.&lt;br /&gt;
:* '''''extraTags''''' — Строка в формате JSON для отправки в ОФД.&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1265 - значение отраслевого реквизита = код места деятельности аптеки&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1262 – идентификатор ФОИВ = &amp;quot;020&amp;quot; (константа ФОИВ МИНЗДРАВа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1263 - дата нормативного акта федерального органа исполнительной власти = &amp;quot;14.12.2018&amp;quot; (константа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1264 - номер нормативного акта федерального органа исполнительной власти = &amp;quot;1556&amp;quot;(константа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1212 - Признак предмета расчета&lt;br /&gt;
&lt;br /&gt;
:: Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;item_industry_props&amp;quot;:{&amp;quot;tag1262&amp;quot;:&amp;quot;020&amp;quot;,&amp;quot;tag1263&amp;quot;:&amp;quot;14.12.2018&amp;quot;,&amp;quot;tag1264&amp;quot;:&amp;quot;1556&amp;quot;,&amp;quot;tag1265&amp;quot;:&amp;quot;tm=mdlp&amp;amp;sid=00000000XXXXXX&amp;quot;},&lt;br /&gt;
&amp;quot;tag1212&amp;quot;: &amp;quot;1&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для клиентов из '''Узбекистана''' необходимо указывать код ИКПУ и код упаковки в следующем формате:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;ikpu&amp;quot;:&amp;quot;123123123&amp;quot;,&amp;quot;packageCode&amp;quot;:&amp;quot;123456&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''packages''' — Контейнер для описания мест. Необязательный контейнер. Атрибуты:&lt;br /&gt;
:* '''''package''''' — Название места.&lt;br /&gt;
:* '''''code''''' — Внутренний код строки.&lt;br /&gt;
:* '''''strbarcode''''' — Штрихкод места.&lt;br /&gt;
:* '''''mass''''' — Масса места в килограммах.&lt;br /&gt;
:* '''''message''''' — Строка сообщения.&lt;br /&gt;
:* '''''length''''' — Длина товарного места (в сантиметрах).&lt;br /&gt;
:* '''''width''''' — Ширина товарного места (в сантиметрах).&lt;br /&gt;
:* '''''height''''' — Высота товарного места (в сантиметрах).&lt;br /&gt;
:* '''''quantity''''' — Количество мест с данным набором параметров. Действует ограничение на общее количество мест в заказе. Общее количество мест в заказе не может быть больше 1000.&lt;br /&gt;
&lt;br /&gt;
* '''deliveryset''' — настройка [[Дифференцированная стоимость доставки|дифференцированной стоимости доставки]]. Атрибуты:&lt;br /&gt;
:* '''''above_price''''' — стоимость в случае полного выкупа заказа (действует как «сумма от» последней границы, указанной в теге below_sum)&lt;br /&gt;
:* '''''return_price''''' — стоимость в случае возврата заказа&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов.&lt;br /&gt;
&lt;br /&gt;
* '''below''' — граница стоимости настроек&lt;br /&gt;
:* '''''below_sum''''' — граница стоимости выкупаемого заказа&lt;br /&gt;
:* '''''price''''' — стоимость выкупаемого заказа до соответствующей границы&lt;br /&gt;
&lt;br /&gt;
* '''advprices''' — Контейнер для описания дополнительных услуг. Необязательный элемент. &amp;lt;span style=&amp;quot;color: red;&amp;gt;Для обработки в API включите дополнительные услуги в настройках полей [[Личный кабинет курьерской службы#Настройка личного кабинета клиента|заказов и заборов]]&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''''code''''' — код услуги.&lt;br /&gt;
:* '''''value''''' — значение услуги. Если тип услуги bool, то в значении передаем true.&lt;br /&gt;
&lt;br /&gt;
* '''extrafields''' — Контейнер для описания расширенных полей. Необязательный элемент. Может содержать несколько элементов extrafield&lt;br /&gt;
* '''extrafield''' — Контейнер для описания расширенного поля.&lt;br /&gt;
:* '''''name''''' — наименование переменной. Может содержать только латинские буквы, цифры и знак подчеркивания &amp;quot;_&amp;quot;, но начинаться может только с буквы. Максимальная длина - 20 символов.&lt;br /&gt;
:* '''''value''''' — значение переменной. Максимальная длина - 250 символов.&lt;br /&gt;
&lt;br /&gt;
* '''overall_volume''' — Общий объем, м3. Виртуальное поле. Необязательное. Из этого поля рассчитывается длина/высота/ширина места. Расчет срабатывает только если в каждом месте есть нулевые значения длины или высоты или ширины.&lt;br /&gt;
&lt;br /&gt;
* '''userid''' — Идентификатор пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенного покупателя.&lt;br /&gt;
&lt;br /&gt;
* '''groupid''' — Идентификатор группы пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенной группы покупателей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
При передаче заказов, у которых плановая дата доставки/забора меньше ближайшей возможной, дата автоматически меняется на самую раннюю возможную. [[Личный кабинет курьерской службы#Как считается минимальная дата возможной доставки|Подробнее]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В случае необходимости указания, помимо товаров, дополнительных услуг (например, ДОСТАВКА, комплектация, подъем на этаж и т. д.) — их нужно указать в том же контейнере items как товары, без артикула.&lt;br /&gt;
&lt;br /&gt;
=== Примеры ответов ===&lt;br /&gt;
При успешном выполнении запроса, создании заказа, возвращается сумма заказа в атрибуте orderprice, а также ошибка 0. При не успешном — номер ошибки и текст ее на английском языке в атрибуте errormsg, для некоторых ошибок выводится перевод на русский в атрибуте errormsgru.&lt;br /&gt;
В атрибут orderno помещается номер заказа, в атрибут barcode — штрихкод заказа.&lt;br /&gt;
&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23541&amp;quot; barcode=&amp;quot;67567#114&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;5000&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23542&amp;quot; barcode=&amp;quot;67567#115&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;6000&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23543&amp;quot; barcode=&amp;quot;67567#116&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23541&amp;quot; barcode=&amp;quot;67567#114&amp;quot; error=&amp;quot;67&amp;quot; errormsg=&amp;quot;Order barcode already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой штрихкод заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23542&amp;quot; barcode=&amp;quot;67567#115&amp;quot; error=&amp;quot;17&amp;quot; errormsg=&amp;quot;Order number already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой номер заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23543&amp;quot; barcode=&amp;quot;67567#116&amp;quot; error=&amp;quot;67&amp;quot; errormsg=&amp;quot;Order barcode already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой штрихкод заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке авторизации'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
&amp;lt;error error=&amp;quot;1&amp;quot; errormsg=&amp;quot;authorization error&amp;quot;&amp;gt;&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке синтаксиса'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
   &amp;lt;error&amp;gt;column:1 line:11 message:expected '&amp;gt;'&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Коды и описание ошибок ===&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!Код ошибки&lt;br /&gt;
!Английское описание&lt;br /&gt;
!Русское описание&lt;br /&gt;
|-&lt;br /&gt;
|0||Success||Успешно&lt;br /&gt;
|-&lt;br /&gt;
|1||Wrong XML||Некорректный файл XML.&lt;br /&gt;
|-&lt;br /&gt;
|2||Lat is empty||Укажите широту.&lt;br /&gt;
|-&lt;br /&gt;
|3||Specify a valid «Price» field value.||Укажите корректное значение поля «Сумма».&lt;br /&gt;
|-&lt;br /&gt;
|4||Specify a valid «Weight» field value.||Укажите корректное значение поля «Вес».&lt;br /&gt;
|-&lt;br /&gt;
|5||Recepient city/town not found.||Город назначения не найден.&lt;br /&gt;
|-&lt;br /&gt;
|6||Sender city/town not found.||Город отправления не найден.&lt;br /&gt;
|-&lt;br /&gt;
|7||Specify the «Recipient address» field value.||Укажите значение поля «Адрес получателя».&lt;br /&gt;
|-&lt;br /&gt;
|8||Specify the «Recipient phone» field value.||Укажите значение поля «Телефон получателя».&lt;br /&gt;
|-&lt;br /&gt;
|9||Specify the «Recipient name» field value.||Укажите значение поля «ФИО получателя».&lt;br /&gt;
|-&lt;br /&gt;
|10||Specify a valid «Quantity» field value.||Укажите корректное значение поля «Количество».&lt;br /&gt;
|-&lt;br /&gt;
|11||Specify a valid «Declared value» field value.||Укажите корректное значение поля «Объявленная ценность».&lt;br /&gt;
|-&lt;br /&gt;
|12||Supplier SKU ID not found.||Артикул не найден.&lt;br /&gt;
|-&lt;br /&gt;
|17||Order number already exists in the database.||Такой номер заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|18||Order code already exists in the database.||Такой код заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|19||The delivery date format is not valid. Specify a date in YYYY-MM-DD format.||Укажите значение поля «Дата доставки» в формате гггг-мм-дд.&lt;br /&gt;
|-&lt;br /&gt;
|20||Specify a valid «Delivery mode» field value.||Укажите корректное значение поля «Режим доставки».&lt;br /&gt;
|-&lt;br /&gt;
|21||Specify a valid «Return trip mode» field value.||Укажите корректное значение поля «Режим возврата».&lt;br /&gt;
|-&lt;br /&gt;
|22||Specify a valid «Delivery type» field value.||Укажите корректное значение поля «Тип доставки».&lt;br /&gt;
|-&lt;br /&gt;
|23||Specify a valid «Return shipment type» field value.||Укажите корректное значение поля «Тип возврата».&lt;br /&gt;
|-&lt;br /&gt;
|30||Specify the «Order number» field value.||Укажите значение поля «Номер заказа».&lt;br /&gt;
|-&lt;br /&gt;
|31||Specify the «Barcode» field value.||Укажите значение поля «Штрихкод».&lt;br /&gt;
|-&lt;br /&gt;
|32||Specify the «Sender company» field value.||Укажите значение поля «Компания-отправитель».&lt;br /&gt;
|-&lt;br /&gt;
|33||Specify the «Sender name» field value.||Укажите значение поля «ФИО отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|34||Specify the «Sender phone» field value.||Укажите значение поля «Телефон отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|35||Specify the «Sender city/town» field value.||Укажите значение поля «Город отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|36||Specify the «Sender address» field value.||Укажите значение поля «Адрес отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|37||Specify the «Pickup date» field value.||Укажите значение поля «Дата забора».&lt;br /&gt;
|-&lt;br /&gt;
|38||Specify the «Pickup time from» field value.||Укажите значение поля «Время забора с».&lt;br /&gt;
|-&lt;br /&gt;
|39||Specify the «Pickup time to» field value.||Укажите значение поля «Время забора до».&lt;br /&gt;
|-&lt;br /&gt;
|40||Specify the «Recipient company» field value.||Укажите значение поля «Компания-получатель».&lt;br /&gt;
|-&lt;br /&gt;
|41||Specify the «Recipient name» field value.||Укажите значение поля «ФИО получателя».&lt;br /&gt;
|-&lt;br /&gt;
|42||Specify the «Recipient phone» field value.||Укажите значение поля «Телефон получателя».&lt;br /&gt;
|-&lt;br /&gt;
|43||Specify the «Recipient city/town» field value.||Укажите значение поля «Город получателя».&lt;br /&gt;
|-&lt;br /&gt;
|44||Specify the «Recipient address» field value.||Укажите значение поля «Адрес получателя».&lt;br /&gt;
|-&lt;br /&gt;
|45||Specify the «Delivery date» field value.||Укажите значение поля «Дата доставки».&lt;br /&gt;
|-&lt;br /&gt;
|46||Specify the «Delivery time from» field value.||Укажите значение поля «Время доставки с».&lt;br /&gt;
|-&lt;br /&gt;
|47||Specify the «Delivery time to» field value.||Укажите значение поля «Время доставки до».&lt;br /&gt;
|-&lt;br /&gt;
|48||Specify the «Recipient postcode» field value.||Укажите значение поля «Индекс получателя».&lt;br /&gt;
|-&lt;br /&gt;
|49||Specify the «Weight» field value.||Укажите значение поля «Вес».&lt;br /&gt;
|-&lt;br /&gt;
|50||Specify the «Payment type» field value.||Укажите значение поля «Тип оплаты».&lt;br /&gt;
|-&lt;br /&gt;
|51||Specify the «Quantity» field value.||Укажите значение поля «Количество».&lt;br /&gt;
|-&lt;br /&gt;
|52||Specify the «Amount» field value.||Укажите значение поля «Сумма».&lt;br /&gt;
|-&lt;br /&gt;
|53||Specify the «Declared value» field value.||Укажите значение поля «Объявленная стоимость».&lt;br /&gt;
|-&lt;br /&gt;
|54||Specify the «Description» field value.||Укажите значение поля «Описание».&lt;br /&gt;
|-&lt;br /&gt;
|55||Specify the «Instruction» field value.||Укажите значение поля «Поручение».&lt;br /&gt;
|-&lt;br /&gt;
|56||Specify the «Delivery mode» field value.||Укажите значение поля «Режим доставки».&lt;br /&gt;
|-&lt;br /&gt;
|57||Specify the «Shipment type» field value.||Укажите значение поля «Тип отправления».&lt;br /&gt;
|-&lt;br /&gt;
|58||Specify whether return trip is required.||Укажите значение поля «Необходимость возврата».&lt;br /&gt;
|-&lt;br /&gt;
|59||Specify the «Return trip mode» field value.||Укажите значение поля «Режим возврата»&lt;br /&gt;
|-&lt;br /&gt;
|60||Specify the «Return shipment type» field value.||Укажите значение поля «Тип возврата».&lt;br /&gt;
|-&lt;br /&gt;
|61||Specify barcode.||Укажите штрихкод.&lt;br /&gt;
|-&lt;br /&gt;
|62||Specify item weight.||Укажите массу единицы товара.&lt;br /&gt;
|-&lt;br /&gt;
|63||Specify item quantity.||Укажите количество товара.&lt;br /&gt;
|-&lt;br /&gt;
|64||Specify item price.||Укажите цену единицы товара.&lt;br /&gt;
|-&lt;br /&gt;
|65||Specify item name.||Укажите название товара.&lt;br /&gt;
|-&lt;br /&gt;
|66||Wrong XLS file||Некорректный файл XLS.&lt;br /&gt;
|-&lt;br /&gt;
|67||Order barcode already exists in the database.||Такой штрихкод заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|68||Select the «Payment by recipient» field value.||Укажите значение поля «Оплата получателем».&lt;br /&gt;
|-&lt;br /&gt;
|69||Specify department.||Укажите отдел.&lt;br /&gt;
|-&lt;br /&gt;
|70||Specify service partner code.||Укажите значение поля «Код подрядчика».&lt;br /&gt;
|-&lt;br /&gt;
|71||Date cannot be earlier than tomorrow.||Дата не может быть раньше чем завтра.&lt;br /&gt;
|-&lt;br /&gt;
|72||Date cannot be later than 15 days from now.||Дата не может быть позже чем через 15 дней.&lt;br /&gt;
|-&lt;br /&gt;
|73||Date cannot be earlier than today.||Дата не может быть раньше чем сегодня.&lt;br /&gt;
|-&lt;br /&gt;
|74||Date cannot be later than {0} days from now.||Дата не может быть позже, чем через {0} дней.&lt;br /&gt;
|-&lt;br /&gt;
|75||Specify a valid «Item weight» field value.||Укажите корректное значение поля «Масса единицы товара».&lt;br /&gt;
|-&lt;br /&gt;
|76||Specify a valid «Quantity» field value.||Укажите корректное значение поля «Количество товара».&lt;br /&gt;
|-&lt;br /&gt;
|77||Specify a valid «Item price» field value.||Укажите корректное значение поля «Цена единицы товара».&lt;br /&gt;
|-&lt;br /&gt;
|78||Specify a valid «Delivery time from» field value.||Укажите корректное значение поля «Время доставки с».&lt;br /&gt;
|-&lt;br /&gt;
|79||Specify a valid «Delivery time to» field value.||Укажите корректное значение поля «Время доставки до».&lt;br /&gt;
|-&lt;br /&gt;
|80||Specify a valid «Pickup time from» field value.||Укажите корректное значение поля «Время забора с».&lt;br /&gt;
|-&lt;br /&gt;
|81||Specify a valid «Pickup time to» field value.||Укажите корректное значение поля «Время забора до».&lt;br /&gt;
|-&lt;br /&gt;
|82||Specify a valid «Pickup point» field value.||Укажите корректное значение поля «ПВЗ».&lt;br /&gt;
|-&lt;br /&gt;
|83||Duplicate number in the registry.||Дублирование номера в реестре.&lt;br /&gt;
|-&lt;br /&gt;
|84||Duplicate barcode in the registry.||Дублирование штрихкода в реестре.&lt;br /&gt;
|-&lt;br /&gt;
|85||Specify a valid «Weight at return trip» field value.||Укажите корректное значение поля «Вес возврата».&lt;br /&gt;
|-&lt;br /&gt;
|86||Specify the «Weight at return trip» field value.||Укажите значение поля «Вес возврата».&lt;br /&gt;
|-&lt;br /&gt;
|87||Order weight exceeds the allowed maximum for the pickup point.||Вес превышает допустимое значение для этого ПВЗ.&lt;br /&gt;
|-&lt;br /&gt;
|88||Pickup date cannot be earlier than today.||Дата забора не может быть раньше чем сегодня.&lt;br /&gt;
|-&lt;br /&gt;
|89||Specify a later delivery date.||Укажите более позднюю дату доставки.&lt;br /&gt;
|-&lt;br /&gt;
|90||Inappropriate «Weight» or «Pay type» field value for the selected city or town. Please review and correct the values.||Значение поля «Масса» или «Тип оплаты» для выбранного города указано некорректно или отсутствует. Проверьте значения и исправьте.&lt;br /&gt;
|-&lt;br /&gt;
|91||{deliverytype} {deliverydate} is {holidaytype}. Select another date.||{deliverytype} {deliverydate} является {holidaytype}. Выберите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|92||{deliverytype} {deliverydate} is {holidaytype}. Select another date.||{deliverytype} {deliverydate} является {holidaytype}. Выберите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|93||Add items.||Добавьте товары.&lt;br /&gt;
|-&lt;br /&gt;
|95||The selected pickup point only allows paid orders.||Выбранный ПВЗ выдает только предоплаченные заказы.&lt;br /&gt;
|-&lt;br /&gt;
|96||Order barcode exceeds the allowed maximum (25) symbols.||Длина штрихкода заказа превышает максимально допустимую (25 символов).&lt;br /&gt;
|-&lt;br /&gt;
|97||The pickup date format is not valid. Specify a date in YYYY-MM-DD format.||Укажите значение поля «Дата забора» в формате гггг-мм-дд.&lt;br /&gt;
|-&lt;br /&gt;
|98||Specify the cost code.||Укажите значение поля «Кост-код».&lt;br /&gt;
|-&lt;br /&gt;
|99||The item is not in stock.||Товар отсутствует на складе.&lt;br /&gt;
|-&lt;br /&gt;
|100||Set the quantity of the item marked with Chestny ZNAK to one.||Укажите количество товара, маркированного кодом «Честный ЗНАК», равным единице.&lt;br /&gt;
|-&lt;br /&gt;
|101||Quantity of item Delivery cannot be greater than 1||Количество вложений типа «Доставка» не может быть более 1.&lt;br /&gt;
|-&lt;br /&gt;
|102||А database error occurred. Please try later again.||Ошибка базы данных. Попробуйте позже.&lt;br /&gt;
|-&lt;br /&gt;
|103||Order not found.||Заказ не найден.&lt;br /&gt;
|-&lt;br /&gt;
|104||Cannot edit order in the current status.||Невозможно изменить заказ в текущем статусе.&lt;br /&gt;
|-&lt;br /&gt;
|105||Discount cannot be greater than the order amount. Specify a smaller value.||Размер скидки не может превышать сумму заказа. Укажите меньшее значение скидки.&lt;br /&gt;
|-&lt;br /&gt;
|106||Specify the correct additional service code.||Укажите корректный код дополнительной услуги.&lt;br /&gt;
|-&lt;br /&gt;
|107||Specify the correct additional service name.||Укажите корректное значение поля [advprice][value].&lt;br /&gt;
|-&lt;br /&gt;
|108||Specify the «Additional services» field value.||Укажите значение поля «Дополнительные услуги».&lt;br /&gt;
|-&lt;br /&gt;
|110||Specify the correct TIN.||Укажите корректный ИНН.&lt;br /&gt;
|-&lt;br /&gt;
|111||Specify the correct IIN (KZ).||Укажите корректный ИИН (КЗ).&lt;br /&gt;
|-&lt;br /&gt;
|112||Specify the overall volume.||Укажите общий объем.&lt;br /&gt;
|-&lt;br /&gt;
|113||Cannot apply the delivery mode. Select another delivery mode.||Режим доставки не подходит для заказа. Выберите другой режим.&lt;br /&gt;
|-&lt;br /&gt;
|114||The pickup point does not support the selected delivery mode. Specify another pickup point.||ПВЗ не подходит для выбранного режима доставки. Укажите другой ПВЗ.&lt;br /&gt;
|-&lt;br /&gt;
|115||Specify a valid recipient phone number.||Укажите корректный телефон получателя.&lt;br /&gt;
|-&lt;br /&gt;
|116||Specify recipient PIN code.||Укажите пин-код получателя.&lt;br /&gt;
|-&lt;br /&gt;
|117||Order date cannot be earlier than {0}. Specify another date.||Дата заказа не может быть раньше {0}. Укажите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|118||Pickup date cannot be earlier than {0}. Specify another date.||Дата забора не может быть раньше {0}. Укажите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|119||Specify the correct item type.||Укажите корректный тип вложения.&lt;br /&gt;
|-&lt;br /&gt;
|120||The pickup point does not accept payment by card.||В выбранном ПВЗ оплата картой не принимается.&lt;br /&gt;
|-&lt;br /&gt;
|121||Invalid item code format||Неверный формат кода товарной номенклатуры&lt;br /&gt;
|-&lt;br /&gt;
|122||Pickup time cannot be earlier than {0} hours.||Время забора не может быть раньше чем через {0} часа.&lt;br /&gt;
|-&lt;br /&gt;
|123||Pickup interval cannot be less than {0} minutes.||Интервал времени забора не может быть менее {0} минут. Укажите корректный интервал.&lt;br /&gt;
|-&lt;br /&gt;
|124||Specify a valid &amp;quot;Payment type&amp;quot; field value.||Укажите корректное значение поля «Тип оплаты».&lt;br /&gt;
|-&lt;br /&gt;
|125||Recepient city/town by postcode not found.||Город получателя по его индексу не найден.&lt;br /&gt;
|-&lt;br /&gt;
|126||Incorrect items prepayment and pickup.||Заказ не может содержать только вложения «Предоплата» и «Забор».&lt;br /&gt;
|-&lt;br /&gt;
|127||Package limit exceeded||Превышен лимит количества мест&lt;br /&gt;
|-&lt;br /&gt;
|128||Quantity of item Prepayment cannot be greater than 1||Количество вложений типа «Предоплата» не может быть больше 1.&lt;br /&gt;
|-&lt;br /&gt;
|129||Sum of cod must be equal sum of items||Объявленная стоимость должна быть равна сумме вложений.&lt;br /&gt;
|-&lt;br /&gt;
|130||Specify a valid respstore code.||Укажите код ответственного филиала.&lt;br /&gt;
|-&lt;br /&gt;
|131||Cannot edit, order has not been synchronized.||Невозможно изменить заказ пока он не синхронизирован.&lt;br /&gt;
|-&lt;br /&gt;
|132||Specify a valid &amp;quot;Recipient city/town&amp;quot; field value.||Укажите город получателя&lt;br /&gt;
|-&lt;br /&gt;
|133||Specify a valid &amp;quot;weight&amp;quot; for the town.||Укажите корректный вес для города&lt;br /&gt;
|-&lt;br /&gt;
|134||Specify a valid &amp;quot;paytype&amp;quot; for the town.||Укажите тип оплаты для города&lt;br /&gt;
|-&lt;br /&gt;
|135||Specify the correct SKU ID/code for item.||Укажите артикул/код вложения&lt;br /&gt;
|-&lt;br /&gt;
|136||Specify warehouse goods in the order.||Укажите вложения в заказе&lt;br /&gt;
|-&lt;br /&gt;
|137||The order's date of creation is more than 60 days ago.||Заказ создан более 60 дней назад&lt;br /&gt;
|-&lt;br /&gt;
|138||Specify a valid &amp;quot;Package dimension&amp;quot; field value.||Укажите корректные габариты места&lt;br /&gt;
|-&lt;br /&gt;
|139||Wrong type of XML query||Ошибка запроса&lt;br /&gt;
|-&lt;br /&gt;
|140||Duplicate item code in the order.||Дублирование кода вложения в заказе&lt;br /&gt;
|-&lt;br /&gt;
|141||Duplicate additional service in the order.||Дублирование кода дополнительной услуги в заказе&lt;br /&gt;
|-&lt;br /&gt;
|144||Incorrect extrafields.||Некорректные расширенные поля.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Передача значений полей в форме создания заказа в Личном Кабинете через GET параметры ===&lt;br /&gt;
Если вам требуется передавать значения полей в форме создания заказа в Личном Кабинете через GET параметры, то вы можете подробно ознакомиться с этим на данной странице - [[Личный_кабинет_клиента#Передача и подстановка значений полей формы создания заказа через GET параметры]]&lt;br /&gt;
&lt;br /&gt;
== Запрос статуса заказов ==&lt;br /&gt;
&lt;br /&gt;
=== Пример запроса статуса заказа ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;orderno2&amp;gt;5678&amp;lt;/orderno2&amp;gt;&lt;br /&gt;
  &amp;lt;ordercode&amp;gt;34234&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
  &amp;lt;givencode&amp;gt;234534&amp;lt;/givencode&amp;gt;&lt;br /&gt;
  &amp;lt;uid&amp;gt;af11c7c6-6645-4a20-9604-be911a75722d&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;datefrom&amp;gt;2016-07-21&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
  &amp;lt;dateto&amp;gt;2016-07-21&amp;lt;/dateto&amp;gt;&lt;br /&gt;
  &amp;lt;target&amp;gt;Автозавод&amp;lt;/target&amp;gt;&lt;br /&gt;
  &amp;lt;done&amp;gt;ONLY_NOT_DONE&amp;lt;/done&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains/&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts/&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;500&amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание полей запроса статуса ===&lt;br /&gt;
'''statusreq''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''client''' — Признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — Признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — Признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
* '''orderno''' — Идентификатор заказа у клиента (шифр). Необязательный элемент.&lt;br /&gt;
* '''ordercode''' — Внутренний код заказа. Необязательный элемент.&lt;br /&gt;
* '''orderno2''' — Номер заказа из срочных. Необязательный элемент. &lt;br /&gt;
* '''uid''' — Уникальный идентификатор, если он был добавлен при создании заказа. Необязательный элемент. Запрос информации по uid возможен в течении суток после создания заказа&lt;br /&gt;
* '''datefrom''' — Дата заказа «с». Необязательный элемент.&lt;br /&gt;
* '''dateto''' — Дата заказа «по». Необязательный элемент.&lt;br /&gt;
* '''target''' — Строка поиска. Позволяет указать текст, который содержится в названии компании или адресе получателя.&lt;br /&gt;
* '''done''' — Может принимать значения:&lt;br /&gt;
:* ONLY_DONE — Только доставленные (имеются в виду успешные статусы, например, '''Доставлен''' или '''Частично доставлен''')&lt;br /&gt;
:* ONLY_NOT_DONE — Только не доставленные (заказы, которые не являются доставленными, например, '''Не доставлен''' или '''Утерян''')&lt;br /&gt;
:* ONLY_NEW — Только новые&lt;br /&gt;
:* ONLY_DELIVERY — Только заказы в обработке — заказы, находящиеся в любом статусе, кроме конечных: Доставлено, Не доставлено, Отменён и т. д.&lt;br /&gt;
:* ''Пусто'' — все корреспонденции&lt;br /&gt;
&lt;br /&gt;
* '''changes''' — может принимать значение только ONLY_LAST. Если указан этот параметр, все остальные игнорируются. Описание данного режима приведено здесь: [[#Передача только изменившихся статусов|Передача только изменившихся статусов]]&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия фильтрации по «orderno». Все вложенные элементы одновременно накладывают условие «И». Минимум 5 символов!&lt;br /&gt;
:* '''namecontains''' — Поиск по номеру заказа(шифр), который содержит «orderno».&lt;br /&gt;
:* '''namestarts''' — Поиск по номеру заказа(шифр), который начинается с «orderno».&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Необязательный параметр. Дает возможность получить не все измененные заказы, а только какое-то определенное количество. Помогает на случай, если у вас скопилось очень много измененных заказов и нужно их грузить лимитировано. После каждой итерации нужно вызывать commitlaststatus с контейнером списка обработанных кодов, [[#Лимитирование запросов|читать подробнее]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# Периода запроса статусов (контейнеры '''datefrom''' и '''dateto''') ограничивается двумя месяцами — два месяца до даты '''«по»'''.&lt;br /&gt;
# Если не указаны обе даты — '''dateto''' принимается равной текущей дате.&lt;br /&gt;
# Если не указана дата '''dateto''' — она принимается равной '''datefrom''' плюс 2 месяца.&lt;br /&gt;
# Если не указана дата '''datefrom''' — она принимается равной '''dateto''' минус 2 месяца.&lt;br /&gt;
# Поиск по '''conditions''' работает только для «Номер заказа(шифр)» и только от 4 символов&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Примеры ответов ===&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq count=&amp;quot;23&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot; awb=&amp;quot;qwerty&amp;quot; orderno2=&amp;quot;123123&amp;quot; ordercode=&amp;quot;34534234&amp;quot; givencode=&amp;quot;2345334&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;contacts&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+74951234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;/contacts&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;23432&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67 - Иван (916)234.45.21 Петр,mvd@mail.ru&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;contacts&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+74951234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+79162344521&amp;lt;/phone&amp;gt;&lt;br /&gt;
       &amp;lt;email&amp;gt;mvd@mail.ru&amp;lt;/email&amp;gt;&lt;br /&gt;
     &amp;lt;/contacts&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;1112223335&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;153361&amp;quot; regioncode=&amp;quot;78&amp;quot; regionname=&amp;quot;Санкт-Петербург город&amp;quot;&amp;gt;Санкт-Петербург город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;area&amp;gt;Район 1&amp;lt;/area&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;126&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;clientcode&amp;gt;QWERTY&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
     &amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;1234&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;paytype code=&amp;quot;1&amp;quot;&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;return_type&amp;gt;3&amp;lt;/return_type&amp;gt;&lt;br /&gt;
   &amp;lt;return_weight&amp;gt;5.1&amp;lt;/return_weight&amp;gt;&lt;br /&gt;
   &amp;lt;return_message&amp;gt;Доставлено в целости&amp;lt;/return_message&amp;gt;&lt;br /&gt;
   &amp;lt;return_date&amp;gt;2026-01-19&amp;lt;/return_date&amp;gt;&lt;br /&gt;
   &amp;lt;return_time&amp;gt;13:18:00&amp;lt;/return_time&amp;gt;&lt;br /&gt;
   &amp;lt;pickup&amp;gt;NO&amp;lt;/pickup&amp;gt;&lt;br /&gt;
   &amp;lt;print_check&amp;gt;YES&amp;lt;/print_check&amp;gt;&lt;br /&gt;
   &amp;lt;waittime&amp;gt;12&amp;lt;/waittime&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;   &lt;br /&gt;
   &amp;lt;currcoords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot; accuracy=&amp;quot;50&amp;quot; RequestDateTime=&amp;quot;2014-04-21 18:07:45&amp;quot;&amp;gt;&amp;lt;/currcoords&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Иванов Владимир Петрович&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;phone&amp;gt;+79161234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
   &amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice total=&amp;quot;158.6&amp;quot; delivery=&amp;quot;100.00&amp;quot; return=&amp;quot;58.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;1&amp;quot; price=&amp;quot;150&amp;quot;&amp;gt;База&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;2&amp;quot; price=&amp;quot;0&amp;quot;&amp;gt;% от объявленной стоимости&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;3&amp;quot; price=&amp;quot;8.6&amp;quot;&amp;gt;Топливный сбор&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;4&amp;quot; price=&amp;quot;0&amp;quot;&amp;gt;Округление&amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;receiverpays&amp;gt;NO&amp;lt;/receiverpays&amp;gt;&lt;br /&gt;
   &amp;lt;acceptpartially&amp;gt;NO&amp;lt;/acceptpartially&amp;gt;&lt;br /&gt;
   &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; color=&amp;quot;16777215&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;statushistory&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-05-30 10:20:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Новый&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;NEW&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 17:38:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Планируется отправка&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DEPARTURING&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 19:53:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Отправлено со склада&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DEPARTURE&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 07:41:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Получен складом&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;ACCEPTED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 09:17:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Выдан курьеру на доставку&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DELIVERY&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен (предварительно)&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;COURIERDELIVERED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;/statushistory&amp;gt;&lt;br /&gt;
   &amp;lt;customstatecode&amp;gt;2&amp;lt;customstatecode&amp;gt;&lt;br /&gt;
   &amp;lt;clientstatecode&amp;gt;&amp;lt;/clientstatecode&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredto&amp;gt;Иванова, секр.&amp;lt;/deliveredto&amp;gt;&lt;br /&gt;
   &amp;lt;delivereddate&amp;gt;2016-06-02&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredtime&amp;gt;17:22&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
   &amp;lt;department&amp;gt;Отдел&amp;lt;/department&amp;gt;&lt;br /&gt;
   &amp;lt;costcode&amp;gt;cc12345&amp;lt;/costcode&amp;gt;&lt;br /&gt;
   &amp;lt;outstrbarcode&amp;gt;EXT123456&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
   &amp;lt;respstore&amp;gt;14&amp;lt;/respstore&amp;gt;&lt;br /&gt;
   &amp;lt;partner&amp;gt;Офис на Ленина&amp;lt;/partner&amp;gt;&lt;br /&gt;
   &amp;lt;arrival&amp;gt;2016-05-02 23:21&amp;lt;/arrival&amp;gt;&lt;br /&gt;
    &amp;lt;receipt fdNum=&amp;quot;124555&amp;quot; fnSn=&amp;quot;9289000100295555&amp;quot; kktNum=&amp;quot;0001611984048555&amp;quot; inn=&amp;quot;7722756555&amp;quot; fdValue=&amp;quot;2899551555&amp;quot; summ=&amp;quot;387.5&amp;quot; ofdUrl=&amp;quot;gate.ofd.ru&amp;quot;&amp;gt;https://ofd.ru/rec/7722756555/0001611984048555/9289000100295555/124555/2899551555&amp;lt;/receipt&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34533&amp;quot; extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; article=&amp;quot;1&amp;quot; returns=&amp;quot;0&amp;quot; origincountry=&amp;quot;040&amp;quot; GTD=&amp;quot;&amp;quot; excise=&amp;quot;0.00&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; govType=&amp;quot;1&amp;quot; suppcompany=&amp;quot;Поставщик&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; suppphone=&amp;quot;79161234567&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34456&amp;quot; extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot; govType=&amp;quot;1&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34421&amp;quot; extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; VATrate=&amp;quot;18&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; itemcode=&amp;quot;44123&amp;quot; article=&amp;quot;3&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot; govType=&amp;quot;1&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package code=&amp;quot;33331&amp;quot; strbarcode=&amp;quot;ORD0000001&amp;quot; mass=&amp;quot;1&amp;quot; message=&amp;quot;&amp;quot; got=&amp;quot;YES&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package code=&amp;quot;33332&amp;quot; strbarcode=&amp;quot;ORD0000002&amp;quot; mass=&amp;quot;2.5&amp;quot; message=&amp;quot;&amp;quot; got=&amp;quot;NO&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;extrafields&amp;gt;&lt;br /&gt;
      &amp;lt;extrafield&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;courier_car&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;ВАЗ 2106, бежевый&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/extrafield&amp;gt;&lt;br /&gt;
   &amp;lt;/extrafields&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа если нет заказов'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq count=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке авторизации'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
&amp;lt;error error=&amp;quot;1&amp;quot; errormsg=&amp;quot;authorization error&amp;quot;&amp;gt;&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке синтаксиса'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
   &amp;lt;error&amp;gt;column:1 line:11 message:expected '&amp;gt;'&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание полей ответа статусов ===&lt;br /&gt;
Все поля ответа соответствуют структуре order при создании заказа, с некоторыми добавлениями:&lt;br /&gt;
&lt;br /&gt;
* Атрибуты контейнера '''order''':&lt;br /&gt;
:* '''''awb''''' — Номер накладной в системе курьерской службы.&lt;br /&gt;
:* '''''orderno2''''' — Номер накладной в подсистеме срочной доставки курьерской службы.&lt;br /&gt;
:* '''''ordercode''''' — внутренний код заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
:* '''''givencode''''' — внутренний код заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
&lt;br /&gt;
*'''paytype''' - Тип оплаты заказа получателем. Принимает значения:&lt;br /&gt;
:: CASH - Наличными при получении (по-умолчанию)&lt;br /&gt;
:: CARD - Картой при получении&lt;br /&gt;
:: NO - Без оплаты.&lt;br /&gt;
:: OTHER - Прочее (Предусмотрен для того, чтобы оплата поступала непосредственно в курьерскую службу посредством прочих типов оплаты - таких как: вебмани, яденьги, картой на сайте, прочие платежные системы и т.д.)&lt;br /&gt;
* Атрибуты контейнера '''paytype''':&lt;br /&gt;
** '''''code''''' - (integer) внутренний код типа оплаты заказа в системном справочнике &amp;quot;Типы оплаты корреспонденции&amp;quot;. Не обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* атрибут '''''code''''' контейнера '''item''' — внутренний код строки заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
:* '''''returns''''' — количество данного товара, от которого отказался получатель. Не нулевое только в случае частичного отказа.&lt;br /&gt;
&lt;br /&gt;
* атрибут '''''got''''' контейнера '''package''' — признак принятого места YES / NO.&lt;br /&gt;
:* '''''returns''''' — количество данного товара, от которого отказался получатель. Не нулевое только в случае частичного отказа.&lt;br /&gt;
&lt;br /&gt;
* '''''area''''' в контейнере '''receiver''' — район/метро получателя.&lt;br /&gt;
* '''''coords''''' в контейнере '''receiver''' — координаты получателя.&lt;br /&gt;
* '''''deliveryPIN''''' в контейнере '''receiver''' — Пин-код.&lt;br /&gt;
* '''pickup''' — признак оформления забора, возможные значения: '''YES''', '''NO'''. Если указано '''YES''', то весь заказ считается заданием на забор груза, а не на доставку.&lt;br /&gt;
* '''currcoords''' — текущие координаты заказа. Атрибуты:&lt;br /&gt;
:* '''''lat''''' — широта&lt;br /&gt;
:* '''''lon''''' — долгота&lt;br /&gt;
:* '''''accuracy''''' — точность в метрах&lt;br /&gt;
:* '''''RequestDateTime''''' — дата/время последнего обновления координат.&lt;br /&gt;
&lt;br /&gt;
* '''courier''' — Данные курьера, которому выдан заказ. Если заказ не выдан, то выводятся данные запланированного курьера.&lt;br /&gt;
* '''waittime ''' — Время ожидания курьера.&lt;br /&gt;
* '''deliveryprice''' — Стоимость услуг в валюте расчетов с клиентом. Атрибуты:&lt;br /&gt;
:* '''''total''''' — общая стоимость услуг&lt;br /&gt;
:* '''''delivery''''' — стоимость доставки «Туда»&lt;br /&gt;
:* '''''return''''' — стоимость доставки «Обратно» (если order-&amp;gt;return=YES)&lt;br /&gt;
Тэг '''deliveryprice''' включает список дополнительных услуг (только для тарифа «Премиум»):&lt;br /&gt;
:* '''''advprice''''' — наименование дополнительной услуги&lt;br /&gt;
:* '''''code''''' — код дополнительной услуги&lt;br /&gt;
:* '''''price''''' — стоимость дополнительной услуги&lt;br /&gt;
&lt;br /&gt;
* '''status''' — статус доставки (список статусов см. ниже). Атрибуты (заполняются начиная с версии системы 2008.0.0.670):&lt;br /&gt;
:* '''''eventstore''''' — филиал, к которому относится текущий статус&lt;br /&gt;
:* '''''eventtime''''' — время события по часовому поясу места его наступления.&lt;br /&gt;
:* '''''createtimegmt''''' — время по GMT создания записи о смене статуса в БД. Используется для сортировки записей, чтобы соблюсти хронологическую последовательность. &amp;lt;spoiler text=&amp;quot;Подробнее&amp;quot;&amp;gt;Большинство событий фиксируются в полях eventtime и createtimegmt на основании одного действия, тогда они отличаются только сдвигом от GMT. Однако, если курьер доставил отправление 10.10.2010 в 20:00, по какой-то причине не внес это в мобильное приложение, на следующий день сдал накладную, и в 9 утра оператор внесла, что он доставил вчера в 20:00. Тогда в createtimegmt будет сегодня 6 утра (для Москвы), а в eventtime — вчера в 20:00. При этом оператор по каким-то причинам может внести время вручения раньше, чем какое-то предыдущее событие, т.о. нарушится последовательность времени в eventtime, но при сортировке по createtimegmt все-равно все будет правильно.&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
:* '''''message''''' — наименование филиала-получателя, при передаче между филиалами&lt;br /&gt;
:* '''''title''''' — русское наименование статуса&lt;br /&gt;
&lt;br /&gt;
* '''statushistory''' — история статусов доставки. Содержит список контейнеров '''status'''. Заполняется только для тарифа «Премиум» начиная с версии системы 2008.0.0.670.&lt;br /&gt;
* '''customstatecode''' — код внутреннего статуса курьерской службы. Значения уточняйте в курьерской службе. Назначаются курьерской службой в разделе «Справочники» — «Статусы» — «15 Статусы корреспонденции». Справочник не передается через API клиенту по причине возможного наличия в нем внутренних технологических статусов курьерской службы.&lt;br /&gt;
* '''clientstatecode''' — код статуса клиента. Используется, если клиент предлагает свои коды статусов доставки/причин недоставки.&lt;br /&gt;
* '''deliveredto''' — данные из поля «Инфо. о доставке» (может быть информация о доставке, причина недоставки и т. п.).&lt;br /&gt;
* '''delivereddate''' — дата вручения.&lt;br /&gt;
* '''deliveredtime''' — время вручения. В случае недоставки может быть пустым.&lt;br /&gt;
* '''arrival''' — плановая дата прибытия в формате гггг-мм-дд чч: мм: сс. Заполняется только при использовании автоматических систем планирования (Максоптра, Яндекс доставка), во всех остальных случаях - пустое.&lt;br /&gt;
* '''outstrbarcode''' — код у подрядчика (код заказа во внешней системе). Используется в интеграциях с внешними системами.&lt;br /&gt;
* '''partner''' — текущий филиал/подрядчик.&lt;br /&gt;
* '''return_message''' — информация о возврате&lt;br /&gt;
* '''return_date''' - дата возврата&lt;br /&gt;
* '''return_time''' - время возврата&lt;br /&gt;
* '''department''' — Подразделение, в котором оформляется заказ.&lt;br /&gt;
&lt;br /&gt;
Контейнер '''status''' может принимать следующие значения:&lt;br /&gt;
: AWAITING_SYNC — Ожидает синхронизации. Данные заказа пока не появились в службе доставки.&lt;br /&gt;
: '''NEW''' — Успешно создан, передан в службу доставки.&lt;br /&gt;
: NEWPICKUP — Создан забор.&lt;br /&gt;
: PICKUP — Забран у отправителя.&lt;br /&gt;
: WMSASSEMBLED — Скомплектован на складе фулфилмента.&lt;br /&gt;
: WMSDISASSEMBLED — Разукомплектован на склад фулфилмента.&lt;br /&gt;
: '''ACCEPTED''' — Получен складом.&lt;br /&gt;
: CUSTOMSPROCESS — Производится таможенный контроль.&lt;br /&gt;
: CUSTOMSFINISHED — Таможенный контроль произведен.&lt;br /&gt;
: CONFIRM — Согласована доставка.&lt;br /&gt;
: UNCONFIRM — Не удалось согласовать доставку.&lt;br /&gt;
: DEPARTURING — Планируется отправка со склада на другой склад.&lt;br /&gt;
: DEPARTURE — Отправлено со склада на другой склад.&lt;br /&gt;
: INVENTORY — Инвентаризация. Убедились в наличии отправления на складе.&lt;br /&gt;
: PICKUPREADY — Готов к выдаче в ПВЗ.&lt;br /&gt;
: '''DELIVERY''' — Выдан курьеру на доставку.&lt;br /&gt;
: COURIERDELIVERED — Доставлен (предварительно, ожидает подтверждения менеджером, чтобы перейти в статус COMPLETE).&lt;br /&gt;
: COURIERPARTIALLY — Частично доставлен (предварительно, ожидает подтверждения менеджером, чтобы перейти в статус PARTIALLY).&lt;br /&gt;
: COURIERCANCELED — Отказ (предварительно, после этого ожидается COURIERRETURN).&lt;br /&gt;
: COURIERRETURN — Возвращено курьером. Курьер не смог доставить до получателя и вернул заказ обратно на склад. Это промежуточный статус, после которого менеджер выясняет, нужно ли повторно доставлять (статусы DATECHANGE/DELIVERY) или это окончательная недоставка (CANCELED).&lt;br /&gt;
: DATECHANGE — Перенос даты доставки.&lt;br /&gt;
&lt;br /&gt;
: '''COMPLETE''' — Доставлен.&lt;br /&gt;
: '''PARTIALLY''' — Доставлен частично.&lt;br /&gt;
: '''CANCELED''' — Не доставлен (Возврат/Отмена). После этого статуса отправление должны вернуть заказчику, будут статусы RETURNING и RETURNED&lt;br /&gt;
&lt;br /&gt;
: RETURNING — Планируется возврат заказчику (после CANCELED).&lt;br /&gt;
: RETURNED — Возвращен заказчику.&lt;br /&gt;
: LOST — Утрачен/утерян.&lt;br /&gt;
&lt;br /&gt;
: PARTLYRETURNING — Планируется возврат остатков.&lt;br /&gt;
: PARTLYRETURNED — Остаток возвращен.&lt;br /&gt;
: TRANSACCEPTED — Прибыл на склад перевозчика.&lt;br /&gt;
: PICKUPTRANS — Забран у перевозчика.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Примечание.''' В будущем возможно дополнение используемого набора статусов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
&lt;br /&gt;
# Контейнер '''statushistory''' и '''deliveryprice''' заполняется для тарифов [[Личный кабинет курьерской службы#Функции личного кабинета|Премиум и Максимум]].&lt;br /&gt;
# Контейнер '''packages''' не возвращает более 1000 элементов.&lt;br /&gt;
# Система никогда не гарантирует последовательность прохождения заказом набора статусов. То есть Вы можете получить статус «COMPLETE», а следующим запросом — «NEW» — такое может произойти, например, если оператор ошибочно отметил заказ выполненным, а затем исправил ошибку.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Передача только изменившихся статусов ===&lt;br /&gt;
В нашем API предусмотрено удобное средство получения статусов всех заказов, без необходимости «бомбить» сервер запросами статусов по каждому заказу. Работает это так: раз, например, в 10 минут, вы посылаете запрос «покажите все изменившиеся статусы». Пример запроса ниже. Система вам отдает ВСЕ заказы, статусы (или некоторые другие поля, см. ниже) которых изменились с момента последнего запроса. Вы разбираете полученный документ, по каждому заказу сохраняете его актуальный статус в своей системе, и если все хорошо, у вас все получилось, ваша система неожиданно не упала от наплыва информации, посылаете нам запрос подтверждения получения статусов (commitlaststatus). Мы у себя отмечаем, что эти статусы вами получены и их не надо передавать повторно. Таким образом, сколько бы заказов у вас ни было, статусы по ним всем почти в реальном времени вы можете получать всего двумя запросами.&lt;br /&gt;
&lt;br /&gt;
Для получения только изменившихся статусов отправьте запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;streamid&amp;gt;1234&amp;lt;/streamid&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Система выдает все заказы, в которых с момента последнего запроса в этом режиме изменилось хотя бы одно из полей:&lt;br /&gt;
 orderno&lt;br /&gt;
 status&lt;br /&gt;
 delivereddate&lt;br /&gt;
 deliveredtime&lt;br /&gt;
 deliveredto&lt;br /&gt;
 receiver-&amp;gt;date&lt;br /&gt;
 receiver-&amp;gt;address&lt;br /&gt;
 price&lt;br /&gt;
&lt;br /&gt;
После успешной обработки ответа необходимо отметить полученные статусы успешно полученными, отправив запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;streamid&amp;gt;1234&amp;lt;/streamid&amp;gt;&lt;br /&gt;
&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей запроса'''&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — авторизация. Обязательный элемент.&lt;br /&gt;
* '''streamid''' — идентификатор потока. Если у вас несколько интеграций и каждая нуждается в получении статусов, вы можете передавать данный параметр и тем самым разделять получение и отметку об успешном получении статусов по заказам. Значение должно входить в промежуток от 100 до 10000, включительно. Необязательный элемент.&lt;br /&gt;
* '''client''' — признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
&lt;br /&gt;
В случае успеха вы получите ответ:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus error=&amp;quot;0&amp;quot;&amp;gt;OK&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Такой способ передачи статусов гарантирует полную корректную передачу статусов, даже если в нашей системе статус изменился между запросом статусов и подтверждением их получения. Если система не получила подтверждение передачи статуса, она будет считать информацию непереданной и выдаст ее при повторном запросе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
# При этом способе передачи (&amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;) система просматривает заказы, оформленные за последние 3 месяца. Если заказ сделан ранее, изменение статуса по нему не попадет в результат выполнения запроса.&lt;br /&gt;
# Система всегда выдает текущий статус. Вы можете одним запросом получить статус «NEW», а следующим — «COMPLETE». Между запросами отправление могло пройти через несколько промежуточных статусов. Если нужна гарантия получения всех промежуточных статусов, нужно анализировать блок statushistory (может не заполняться вследствие ограничений версии или тарифа конкретной службы доставки).&lt;br /&gt;
# Система не гарантирует последовательность прохождения заказом набора статусов. Вы можете получить статус «COMPLETE», а следующим запросом «NEW» — такое может произойти, например, если оператор ошибочно отметил заказ выполненным, а затем исправил ошибку.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Лимитирование запросов ===&lt;br /&gt;
Дает возможность получить не все измененные заказы, а только какое-то определенное количество. Помогает на случай, если у вас скопилось очень много измененных заказов и нужно их грузить лимитировано. После успешной обработки получнных заказов, '''обязательно''' нужно вызвать commitlaststatus с кодами обработанных заказов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример'''&lt;br /&gt;
&lt;br /&gt;
Для получения ограниченного числа изменившихся заказов отправьте запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;5&amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После успешной обработки ответа необходимо отметить полученные статусы успешно полученными, отправив запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;acs&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;11111&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;22222&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;33333&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;44444&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;55555&amp;lt;/ac&amp;gt;&lt;br /&gt;
  &amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''acs''' — контейнер. Обязательный элемент.&lt;br /&gt;
* '''ac''' — атрибут''' ordercode''' контейнера '''order''' полученного на этапе запроса '''statusreq'''.&lt;br /&gt;
&lt;br /&gt;
Помимо приведенных в примере параметров, вы также можете передавать и остальные, описанные ранее, например '''streamid'''.&lt;br /&gt;
&lt;br /&gt;
== Трекинг заказа по номеру ==&lt;br /&gt;
Запрос трекинга по номеру предназначен для выдачи минимальной обезличенной информации о конкретном заказе не авторизованному пользователю. Наша система имеет для этого интерфейс по адресу «home.courierexe.ru/{код экстра}/tracking». Вы можете либо сделать ссылку на такую страницу на своем сайте, либо разместить ее [[#Размещение страниц на своем сайте (iframe)|iframe’ом]] у себя, либо сделать свою и пользоваться нашим API. Этот интерфейс создан специально для выдачи информации живому пользователю сайта. Для получения статусов заказов в свою информационную систему нужно использовать запрос «statusreq», желательно с параметром changes=ONLY_LAST!&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking&amp;gt;&lt;br /&gt;
  &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/tracking&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot; ordercode=&amp;quot;12345&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;AWB&amp;gt;111111&amp;lt;/AWB&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;1&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Москва город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;1&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Москва город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;2&amp;lt;/return_service&amp;gt;&lt;br /&gt;
   &amp;lt;return_date&amp;gt;&amp;lt;/return_date&amp;gt;&lt;br /&gt;
   &amp;lt;return_time&amp;gt;&amp;lt;/return_time&amp;gt;&lt;br /&gt;
   &amp;lt;return_message&amp;gt;&amp;lt;/return_message&amp;gt;&lt;br /&gt;
   &amp;lt;waittime&amp;gt;12&amp;lt;/waittime&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice total=&amp;quot;158.6&amp;quot; delivery=&amp;quot;100.00&amp;quot; return=&amp;quot;58.6&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Иванов Владимир Петрович&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;phone&amp;gt;+79161234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
   &amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;currcoords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot; accuracy=&amp;quot;50&amp;quot; RequestDateTime=&amp;quot;2014-04-21 18:07:45&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;statushistory&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-05-30 10:20:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Новый&amp;quot;&amp;gt;NEW&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 17:38:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Планируется отправка&amp;quot;&amp;gt;DEPARTURING&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 19:53:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Отправлено со склада&amp;quot;&amp;gt;DEPARTURE&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 07:41:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Получен складом&amp;quot;&amp;gt;ACCEPTED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 09:17:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Выдан курьеру на доставку&amp;quot;&amp;gt;DELIVERY&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен (предварительно)&amp;quot;&amp;gt;COURIERDELIVERED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;/statushistory&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredto&amp;gt;Иванова, секр.&amp;lt;/deliveredto&amp;gt;&lt;br /&gt;
   &amp;lt;delivereddate&amp;gt;2016-06-02&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredtime&amp;gt;17:22&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
   &amp;lt;outstrbarcode&amp;gt;EXT123456&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34533&amp;quot; extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; article=&amp;quot;1&amp;quot; returns=&amp;quot;0&amp;quot; origincountry=&amp;quot;040&amp;quot; GTD=&amp;quot;&amp;quot; excise=&amp;quot;0.00&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; suppcompany=&amp;quot;Поставщик&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; suppphone=&amp;quot;79161234567&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34456&amp;quot; extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34421&amp;quot; extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; VATrate=&amp;quot;18&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; article=&amp;quot;3&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;acquirers&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;2&amp;quot; name=&amp;quot;Ibox&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;5&amp;quot; name=&amp;quot;Payme&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;6&amp;quot; name=&amp;quot;Click&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/acquirers&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/tracking&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где,&lt;br /&gt;
* '''acquirers''' / '''acquirer''' - эквайринг, доступный для получения ссылки на оплату заказа&lt;br /&gt;
** '''acquirers''' / '''acquirer''' / ''code'' - внутренний код эквайринга&lt;br /&gt;
** '''acquirers''' / '''acquirer''' / ''name'' - наименование эквайринга&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Получение информации в формате 17 TRACK'''&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking17&amp;gt;&lt;br /&gt;
  &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/tracking17&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;number&amp;quot;:&amp;quot;ExtNumber&amp;quot;,&lt;br /&gt;
	&amp;quot;oriNumber&amp;quot;:&amp;quot;1234&amp;quot;,&lt;br /&gt;
	&amp;quot;oriCountry&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
	&amp;quot;destCountry&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
	&amp;quot;status&amp;quot;:&amp;quot;Complete&amp;quot;,&lt;br /&gt;
	&amp;quot;events&amp;quot;:[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 17:22:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Complete&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 17:22:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Courierdelivered&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 09:17:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Delivery&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 07:41:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Accepted&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-01 19:53:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Departure&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-01 17:38:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Departuring&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-05-30 10:20:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;New&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функция ищет последний заказ по номеру среди заказов всех клиентов. Выдает неперсонализированную информацию о текущем состоянии заказа.&amp;lt;br&amp;gt;&lt;br /&gt;
Описание контейнеров ответа аналогично описанию [[API#.D0.97.D0.B0.D0.BF.D1.80.D0.BE.D1.81 .D1.81.D1.82.D0.B0.D1.82.D1.83.D1.81.D0.B0 .D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.BE.D0.B2|Запроса статусов заказов]].&lt;br /&gt;
&lt;br /&gt;
=== Получение ссылки для оплаты заказа ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
Этим методом вы можете только получить ссылку на оплату. Фискализация этого платежа идет отдельным процессом. По его возможности уточняйте в службе поддержки.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заказ доступен для оплаты, если:&lt;br /&gt;
* тип оплаты заказа не наличными, а например картой или по договору, альтернативой может стать установка параметра &amp;quot;Спрашивать тип оплаты&amp;quot; в карточке клиента.&lt;br /&gt;
* заказ имеет наложенный платеж&lt;br /&gt;
* не оплачен&lt;br /&gt;
* активен (не доставлен, не возвращен в т.ч. курьером)&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink&amp;gt;&lt;br /&gt;
    &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
    &amp;lt;acq&amp;gt;&lt;br /&gt;
        &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/acq&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
        &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/acqlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*'''extra''' - код экстраклиента в системе Measoft.&lt;br /&gt;
*acq.'''code''' - внутренний код платформы эквайринга в системе Measoft. (известен в МП из [https://wiki.courierexe.ru/index.php/API#.D0.A2.D1.80.D0.B5.D0.BA.D0.B8.D0.BD.D0.B3_.D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.B0_.D0.BF.D0.BE_.D0.BD.D0.BE.D0.BC.D0.B5.D1.80.D1.83 Трекинга]) &lt;br /&gt;
*order.'''ordercode''' - внутренний код заказа, типа ''int'', уникальный в пределах экстраклиента&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink error=&amp;quot;0&amp;quot; amount=&amp;quot;2000&amp;quot; extid=&amp;quot;161083231&amp;quot;&amp;gt;https://qr.nspk.ru/AD10001A7GLVGA9YDO2I0789SIOPV3?type=02&amp;amp;amp;bank=1000011&amp;amp;amp;sum=2000&amp;amp;amp;cur=RUB&amp;amp;amp;crc=7E9C&amp;lt;/acqlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*'''acqlink''' - ссылка на оплату заказа&lt;br /&gt;
*acqlink.'''amount''' - тип integer сумма платежа в копейках в общем случае, в других случаях в соответствии с типом валюты&lt;br /&gt;
*acqlink.'''extid''' - идентификатор счета на стороне платежной системы&lt;br /&gt;
*acqlink.'''error'' - код ошибки, если отличается от 0, означает невозможность получения ссылки на оплату, в этом случае ссылки на оплату не будет и ответ будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink error=&amp;quot;2&amp;quot; message=&amp;quot;Ошибка авторизации: Invalid token&amp;quot; amount=&amp;quot;2000&amp;quot; extid=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*acqlink.'''message''' - текст ошибки возвращаемой эквайрингом&lt;br /&gt;
&lt;br /&gt;
Возможные типы ошибок получения ссылки:&lt;br /&gt;
* '''1''' - не настроен эквайринг, либо не найден заказ&lt;br /&gt;
* '''2''' - ошибка на стороне эквайринга&lt;br /&gt;
* '''3''' - запрещающий статус курьера (заказ доставлен, частично доставлен)&lt;br /&gt;
* '''4''' - оплата заказа не разрешена&lt;br /&gt;
&lt;br /&gt;
== Изменение заказа ==&lt;br /&gt;
Запрос предназначен для изменения заказов.&lt;br /&gt;
&lt;br /&gt;
Изменять заказы могут курьерские службы с тарифами «Премиум» и «Максимум». Чтобы разрешить изменение заказов, в личном кабинете курьерской службы перейдите в '''Настройки''' &amp;gt; '''Заказы''' и в разделе '''Отмена и редактирование''' установите флажок '''Разрешить отмену и изменение заказов'''.  Вы также можете пометить в списке '''Статусы для отмены и редактирования заказов'''   галками статусы корреспонденции, для которых возможны отмена и изменение заказов. По умолчанию (когда в этом списке ничего не выбрано) редактирование и отмена разрешены для статуса  «Новый»&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# Данные запроса изменения указываются '''полностью''', как если бы заказ создавался впервые.&lt;br /&gt;
# При отсутствии вложения в запросе изменения данное вложение '''не удаляется''' из заказа, но его количество становится равным 0.&lt;br /&gt;
# При одновременном изменении заказа в API и системе курьерской службы приоритет отдается данным системы курьерской службы. То есть изменения в API приняты не будут.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При редактировании заказа может быть отменен запланированный курьер. Это зависит от значения переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Корреспонденция''' &amp;gt; '''Автоматически устанавливать заплан. курьера по району''':&lt;br /&gt;
* '''Нет''' — при редактировании заказа по АПИ курьер не изменяется;&lt;br /&gt;
* '''Район''' — если изменен адрес доставки, курьер сбрасывается;&lt;br /&gt;
* '''Район или дата план. доставки''' — если изменен адрес доставки или плановая дата вручения, курьер сбрасывается.&lt;br /&gt;
&lt;br /&gt;
=== Описание полей запроса изменения ===&lt;br /&gt;
Все поля запроса соответствуют структуре order при создании заказа за исключением:&lt;br /&gt;
&lt;br /&gt;
* значение '''orderno''' данным методом изменить нельзя.&lt;br /&gt;
* значение '''barcode''' изменяется в случае явного его указания. В случае отсутствия или пустого значения - остается прежним.&lt;br /&gt;
* вместо корневого тэга '''neworder''' указывается '''editorder''';&lt;br /&gt;
* тэг курьера '''courier''' можно изменить только при включенной настройке '''Разрешить изменение курьера по АПИ''';&lt;br /&gt;
* для вложений '''item''' указывается внутренний код вложения в атрибуте '''code''', который можно получить при получении статуса заказа.&lt;br /&gt;
* для мест '''package''' указывается внутренний код вложения в атрибуте '''code''', который можно получить при получении статуса заказа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Необходимо иметь в виду, что:&lt;br /&gt;
&lt;br /&gt;
# Заказ нельзя изменить, пока он не синхронизирован с системой (пока предыдущие изменения не переданы в бэк-офис)&lt;br /&gt;
# Удаление вложений и мест выполняется не моментально, а в процессе синхронизации с бэк-офисом (для записей указываются метки Удалено)&lt;br /&gt;
&lt;br /&gt;
=== Описание полей ответа изменения ===&lt;br /&gt;
Все поля ответа соответствуют ответу при создании заказа за исключением корневого тэга — вместо '''neworder''' возвращается '''editorder'''.&lt;br /&gt;
&lt;br /&gt;
== Отмена заказа ==&lt;br /&gt;
Запрос предназначен для отмены заказов.&lt;br /&gt;
&lt;br /&gt;
Отменять заказы могут курьерские службы с тарифами «Премиум» и «Максимум». Разрешения для отмены заказов и статусы в которых заказы можно отменять описаны в разделе '''Изменение заказов'''&lt;br /&gt;
&lt;br /&gt;
При отмене заказа поле «Инфо о доставке» получает значение «Отменено заказчиком», поле «Дата доставки» — текущую дату, а «Вручил курьер» — системную запись «ОТМЕНА».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса отмены заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;cancelorder&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;&amp;quot; ordercode=&amp;quot;123456&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123aaa&amp;quot; ordercode=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/cancelorder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''cancelorder''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''order''' — Контейнер отменяемого заказа. Обязательный элемент. Запрос может содержать более одного контейнера '''order'''. Атрибуты:&lt;br /&gt;
:* '''''orderno''''' — Шифр заказа.&lt;br /&gt;
:* '''''ordercode''''' — Внутренний код заказа.&lt;br /&gt;
Обратите внимание, что должен быть указан хотя бы один из атрибутов ''orderno'' или ''ordercode''!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;cancelorder&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123test&amp;quot; ordercode=&amp;quot;123456&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123aaa&amp;quot; ordercode=&amp;quot;&amp;quot; error=&amp;quot;52&amp;quot; errormsg=&amp;quot;order not found&amp;quot; errormsgru=&amp;quot;Заказ не найден&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/cancelorder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавление вложений к накладной ==&lt;br /&gt;
&lt;br /&gt;
Метод позволяет прикрепить файлы к корреспонденции.&lt;br /&gt;
Размер загружаемого файла не должен превышать 1 Мб.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;addattachments&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234567&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;attachments&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo1.jpg&amp;quot;&amp;gt;JVBERi0xLjMN1wb25lbnQgMQ&lt;br /&gt;
    JUBQREYwMTIzNDU2Nzg5IDI NMyAwIG9iag08PA0vVHlwZSA&lt;br /&gt;
    U3VidHlwZSAvSW1hZ2UNL1d pZHRoIDE4MDgNL0hlaWdodCA&lt;br /&gt;
    ggNCAwIFINL0JpdHNQZXJDb 21wb25lbnQgMQ0vRGVjb2RlU&lt;br /&gt;
    ENL0NvbHVtbnMgMTgwOA0+P g0vSW1hZ2VNYXNrIHRydWUNL&lt;br /&gt;
    XhEZWNvZGUNPj4Nc3RyZWFt DQ&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo2.jpg&amp;quot;&amp;gt;VBERi0xLjMNAwIG9iag0HRoJ&lt;br /&gt;
    JUBQREYwMTIzNDU2Nzg5IDI NMyAwIG9iag08PA0vVHlwZSA&lt;br /&gt;
    vWE9iamVjdA0vU3VidHlwZS AvSW1hZ2UNL1dpZHRoIDEzNj &lt;br /&gt;
    gNL0hlaWdodCAxMzMzDS9MZ W5ndGggNCAwIFINL0JpdHNQZ &lt;br /&gt;
    XJDb21wb25lbnQgMQ0vRGVj b2RlUGFybXMgPDwNL0sgLTEN &lt;br /&gt;
    L0NvbHVtbnMgMTM2OA0+Pg0 vSW&amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/addattachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''addattachments''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''orderno''' — Номер заказа. Обязательный элемент. Может использоваться тэг &amp;lt;ordercode&amp;gt; с указанием внутреннего кода заказа.&lt;br /&gt;
* '''attachments''' — Обязательный элемент, в котором перечисляются передаваемые данные файлов.&lt;br /&gt;
** '''item''' — Бинарные данные (файл), закодированные в base64. Обязательный элемент.&lt;br /&gt;
*** '''name''' — Атрибут элемента '''item''', в котором передается имя файла. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addattachments&amp;gt;&lt;br /&gt;
  &amp;lt;attachments&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo1.jpg&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo2.jpg&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/addattachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Получение вложений к накладной ==&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;attachments&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234567&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''attachments''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''orderno''' — Номер/код заказа. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;attachments&amp;gt;&lt;br /&gt;
  &amp;lt;item name=&amp;quot;doc1.docx&amp;quot; timestamp=&amp;quot;2025-01-01 12:00:00&amp;quot; size=&amp;quot;35654&amp;quot;&amp;gt;JVBERixLjMN&lt;br /&gt;
  UwLJdLwIDKxTn+AScMjKqor7Xm3sp1yj1k6BzlPdX2Qsiit6yg3g1fCI4YVAgclUOIY5tDra2LvAcIS&lt;br /&gt;
  5/+8PsL/sXb0+aoper/9kL/4Ov/YE9QsHwyg7YZTtKICy0YVIYb4Nt7L1tPUMfaX9NpuTsvFCtBAvYG&lt;br /&gt;
  eJVZoZ2tm6+fZVqAavZpeLizVLtct1a+xvG0+bTSkw3Ac8PhdNfL4smrT2hSgPJLfyaVGyA2ndyW22t&lt;br /&gt;
  sFtTP5knktPNumSZ56QsFRPJkaU8ExDxAcMYMDIoBiIoR4/dDjHMbMW/EW4fiB1pvWmV2ONWIl1Xdub&lt;br /&gt;
  Xg1ob0qWX9W4qagsqzGhjRLsEGeJGVXg9oVC+XkJa9esrhGUmC0tuKEla+AplVO/OtHwXcW0FWui1z7&lt;br /&gt;
  6KHrtobuWV0xa9sCEiSvb91w3ePHOvfcveo5xt9o4ZevHF7ZOeKxV5qmVx2MI44a1L+Mhk5YuGT12xd&lt;br /&gt;
  Ibsb7r+j9bff/unQlv0al6HBnoD5G89q4+tkjgDtvwwARmqm2aa2Jgvmth8mrXquTNtl2u467vbF/5r&lt;br /&gt;
  vnMt9uesu21Me1bjeNJGlVfAaCtw+/jfenJ/fWjqa7ygExx+L0BcTGroxrKexQXIQ1ImfEW7ZRJZa+O&lt;br /&gt;
  ip7xJmmNESMxrgu/dquBbGypjJpFDJVRH1rVPR1Ifl4aFS5IEdDWZFSdyBBWKWhVSVu517ZgzOCFAwp&lt;br /&gt;
  wwbFph29g4fTaxnvn/3X78x+Tt56ZNffArgULt+HByvy7+yz6U6XWMawCi3+6gJXN0S+jf4t+HT34wg&lt;br /&gt;
  km7/HDp55YTSWMoCMgZsvZkBrXtIv4WA7xgkT4YpYpxjwLvnsWKkGE+pDbxER0UUWlpVFRY4oilTfM4&lt;br /&gt;
  MIzgCPgxjOlZ87ceA7ceRJrgpipFGyugPQ4OTI2S8lWJoqTpHJlJbNOeYM7zTcoVxSNyJXiYWSAMklT&lt;br /&gt;
  q/xd+3fd3/USq2V1rJ7RyBLHsuDSiLwgaOFc5LUCRGI+QWuBAsIwPlZrgRpSMseJyTzD15PKiIRE7bc&lt;br /&gt;
  Rggk5ijXAPpqISetD4wVm0AD2LHuBZdaxmK3HOKIZoG0QLmiZdVqspXnFIJwVyCKhWiDCI4bzH8Y76w&lt;br /&gt;
  TAnwM67HIqMISOkmJXY8mlYhpiNa7g2oTBkKxo4wgnvETQIUUrlFOn9KdOreDiKQx071rN4N61yRAi1&lt;br /&gt;
  7EGRhSOgoeLYv+k41+KZ1SVBXAuDjB+xuxnQmm8wJDcP5IRn+5penzbR/ivm7qleHK5o790w8ejXchI&lt;br /&gt;
  vOHIPWtWwYhtAO34LdDXqFqWxZEBLNstMCwwITBTWirxk12zuUppp&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В тегах item возвращаются бинарные данные (файлы), закодированные в base64.&lt;br /&gt;
&lt;br /&gt;
== Изменение статуса агентом ==&lt;br /&gt;
Запрос изменения статуса заказа позволяет установить окончательный статус заказа — «Доставлен» или «Не доставлен (Возврат/Отмена)».&lt;br /&gt;
&lt;br /&gt;
Кроме этого, устанавливается дата и время (при необходимости) изменения статуса, а также сообщение в поле ''Инфо о доставке''.&lt;br /&gt;
&lt;br /&gt;
При необходимости к заказу можно прикрепить изображения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса изменения статуса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;setorderinfo&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;123456&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;Получил Иванов&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;outstrbarcode&amp;gt;7654312&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;234567&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;PICKUPREADY&amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;eventtime&amp;gt;2016-05-30 10:20:00&amp;lt;/eventtime&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;Клиент отказался от покупки&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;storeprice&amp;gt;123&amp;lt;/storeprice&amp;gt;&lt;br /&gt;
    &amp;lt;items&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34533&amp;quot; quantity=&amp;quot;1&amp;quot; reason=&amp;quot;0&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34456&amp;quot; quantity=&amp;quot;0&amp;quot; reason=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34421&amp;quot; quantity=&amp;quot;2&amp;quot; reason=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/items&amp;gt;&lt;br /&gt;
    &amp;lt;attachments&amp;gt;&lt;br /&gt;
      &amp;lt;attachment filename=&amp;quot;filename1.jpg&amp;quot;&amp;gt; /9j/4AAQSkZJRgA&lt;br /&gt;
      BAQAAAQABAAD/2wBDAA0JCg sKCA0LCgsODg0PEyAVExISEy&lt;br /&gt;
      ccHhcgLikxMC4pLSwzOko+M zZGNywtQFdBRkxOUlNSMj5aY&lt;br /&gt;
      VpQYEpRUk//2wBDAQ4ODhMR EyYVFSZPNS01T09PT09PT09P&lt;br /&gt;
      T09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09&lt;br /&gt;
      PT09PT0//wAARCAYACAADAS IA&amp;lt;/attachment&amp;gt;&lt;br /&gt;
      &amp;lt;attachment filename=&amp;quot;filename2.jpg&amp;quot;&amp;gt; /9j/4AAQSkZJRgA&lt;br /&gt;
      BAQAAAQABAAD/2wBDAA0JCg sKCA0LCgsODg0PEyAVExISEy&lt;br /&gt;
      ccHhcgLikxMC4pLSwzOko+M zZGNywtQFdBRkxOUlNSMj5aY&lt;br /&gt;
      VpQYEpRUk//2wBDAQ4ODhMR EyYVFSZPNS01T09PT09PT09P&lt;br /&gt;
      T09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09&lt;br /&gt;
      PT09PT0//wAARCAYACAADAS IA&amp;lt;/attachment&amp;gt;&lt;br /&gt;
    &amp;lt;/attachments&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/setorderinfo&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей запроса статуса:'''&lt;br /&gt;
&lt;br /&gt;
'''setorderinfo''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''order''' — Контейнер заказа. Обязательный элемент. Запрос может содержать более одного контейнера '''order'''. Атрибут '''''ordercode''''' — внутренний код заказа.&lt;br /&gt;
* '''status''' — Новый статус заказа. Доступны статусы из раздела [[#Описание полей ответа статусов]], кроме AWAITING_SYNC и NEW.&lt;br /&gt;
* '''eventtime''' — Дата и время изменения статуса. Обязательно при указании статуса.&lt;br /&gt;
* '''message''' — Текст сообщения ''Инфо о доставке''.&lt;br /&gt;
* '''outstrbarcode''' — код у подрядчика (код заказа во внешней системе). Используется в интеграциях с внешними системами.&lt;br /&gt;
* '''paytype''' — Тип оплаты заказа. Допустимые значения CASH/CARD.&lt;br /&gt;
* '''storeprice''' — Агентское вознаграждение.&lt;br /&gt;
* '''items''' — Контейнер для описания вложений '''item''' . Атрибуты:&lt;br /&gt;
:* '''''code''''' — Код вложения.&lt;br /&gt;
:* '''''quantity''''' — Количество доставленных единиц вложения.&lt;br /&gt;
:* '''''reason''''' — Причина недоставки, выбирается из соответствующего списка статусов.&lt;br /&gt;
:* '''''governmentCode''''' — Указание кода ТН для вложения при необходимости.&lt;br /&gt;
* '''attachments''' — Контейнер прикрепляемых изображений. Может содержать несколько контейнеров '''attachment'''&lt;br /&gt;
:* '''attachment''' — Контейнер изображения. Содержит текст файла изображения, закодированный по стандарту ''base64''. Атрибут:&lt;br /&gt;
::* '''''filename''''' — Имя файла.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;setorderinfo&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;123456&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;234567&amp;quot; error=&amp;quot;59&amp;quot; errormsg=&amp;quot;value [date_put] is already set&amp;quot; errormsgru=&amp;quot;Значение [Дата доставки] уже указано&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/setorderinfo&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Получение документов для печати ==&lt;br /&gt;
'''Пример запроса получения печатных форм:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;orders&amp;gt;&lt;br /&gt;
    &amp;lt;order orderno=&amp;quot;1234567&amp;quot; ordercode=&amp;quot;33331&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;order orderno=&amp;quot;1234568&amp;quot; ordercode=&amp;quot;33332&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/orders&amp;gt;&lt;br /&gt;
  &amp;lt;form&amp;gt;1&amp;lt;/form&amp;gt;&lt;br /&gt;
  &amp;lt;start&amp;gt;5&amp;lt;/start&amp;gt;&lt;br /&gt;
  &amp;lt;integration&amp;gt;21&amp;lt;/integration&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''waybill''' — Корневой контейнер. Обязательный элемент&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент&lt;br /&gt;
* '''client''' — Признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — Признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — Признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
* '''orders''' — Список заказов для получения печатных форм. Содержит тэги '''order''' с атрибутами:&lt;br /&gt;
:* '''''orderno''''' — шифр заказа&lt;br /&gt;
:* '''''ordercode''''' — внутренний код заказа. Указывать необходимо один из атрибутов для всех заказов. Приоритет имеет атрибут '''''ordercode'''''&lt;br /&gt;
* '''form''' — Формат накладной. Не обязательный элемент. Принимает значения:&lt;br /&gt;
:* 1 — Подробная накладная (по-умолчанию)&lt;br /&gt;
:* 2 — Наклейки Zebra&lt;br /&gt;
:* 3 — Наклейки на страницу формата А4&lt;br /&gt;
:* 4 — Акты приема-передачи&lt;br /&gt;
* '''start''' — Имеет смысл только для form = 3. Начальная позиция первой наклейки. Используется для пропуска наклеек на листе для их экономии.&lt;br /&gt;
* '''integration''' - Получение наклеек от подрядчика. Не обязательный элемент, имеет смысл при наличии кода подрядчика в карточке заказа. Принимает значение:&lt;br /&gt;
:* 21 - подрядчик GTD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;integration code=&amp;quot;21&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;order code=&amp;quot;33331&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;content&amp;gt;JVBERi0xLjYNJeLjz9MNC...&amp;lt;/content&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order code=&amp;quot;33332&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;content&amp;gt;JVBERi0xLjYNJeLjz9MNC...&amp;lt;/content&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;/integration&amp;gt;&lt;br /&gt;
  &amp;lt;content&amp;gt;EODIcaI8KSBlwQ 4MnEOR7Px8U8EBAyGICBnwpw &lt;br /&gt;
  IZhQgz0ZxuPs8EBM/GcbjzB AwhBl8hwQYIO00GmEwg1CeEG &lt;br /&gt;
  mqYTChNU0wqf8l8nz4zgc+K fCno+zwU5GjOZmzXGcbEQYIM &lt;br /&gt;
  4zkegRE40zWzONyoNNMIOIa cWnp6aDCGEGE9NQmoQd2mg00 &lt;br /&gt;
  79U4f3hPTwnfp6Sdrafeqpa JDpFw/1aYT077VNNNdO00G3q &lt;br /&gt;
  mqqvp9p2E7T0/wiFemv8uG6 OM&amp;lt;/content&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В тэге content возвращаются бинарные данные (файл pdf), закодированные в base64.&lt;br /&gt;
При записи в файл необходимо использовать двоичный формат записи!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Блок integration содержит отдельные наклейки для заказов, предоставленные подрядчиком, так же закодированные в base64.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание''' Лимит количества при единовременном получении печатных форм - 1000 штук. Если нужно получить больше - делайте это несколькими запросами.&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание''' Печатные формы для заборов не формируются.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;error&amp;gt;Текст ошибки&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник городов ==&lt;br /&gt;
'''Пример запроса справочника городов:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;townlist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;zipcode&amp;gt;110000&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;0100000100800&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;bd21979d-46f8-49d0-9105-e8d65172a983&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Краснодарский край&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;новгород&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namecontainsparts&amp;gt;молоково моск&amp;lt;/namecontainsparts&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Моск&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Москва&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Москва город&amp;lt;/fullname&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;1&amp;lt;/country&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
  &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/townlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера townlist все элементы могут как отсутствовать, так и комбинироваться. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Авторизация, необязательный элемент. Используется в случае включенного и настроенного ограничения по населенным пунктам в конкретной курьерской службе.&lt;br /&gt;
&lt;br /&gt;
* '''codesearch''' — Поиск по кодам. В случае использования — контейнеры conditions и limit игнорируются.&lt;br /&gt;
:* '''zipcode''' — Поиск по индексу. Обратите внимание на то, что один почтовый индекс может распространяться на несколько населенных пунктов. В этом случае система вернет несколько записей.&lt;br /&gt;
:* '''kladrcode''' — Поиск по 13-ти значному коду КЛАДР.&lt;br /&gt;
:* '''fiascode''' — Поиск по коду ФИАС (AOGUID).&lt;br /&gt;
:* '''code''' — Поиск по коду в системе.&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''city''' — Поиск по всем населенным пунктам региона.&lt;br /&gt;
:* '''namecontainsparts''' — Поиск населенных пунктов, название которых содержит все указанные слова, с разбиением поисковой фразы через пробел. Например &amp;quot;моск моло&amp;quot; найдет деревню &amp;quot;Молоково&amp;quot; в Московской области.&lt;br /&gt;
:* '''namecontains''' — Поиск населенных пунктов, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск населенных пунктов, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск населенных пунктов, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''fullname''' — Поиск населенных пунктов, название вместе с типом населенного пункта которых соответствует указанному тексту.&lt;br /&gt;
:* '''country''' — Поиск только по стране с указанным внутренним кодом или текстовым кодом в соответствии [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» для России.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 10000.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено — в ответе не указываются totalcount и totalpages.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;townlist count=&amp;quot;3&amp;quot; page=&amp;quot;1&amp;quot; totalcount=&amp;quot;3&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;26379&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;23&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Краснодарский край&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочи город&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;79da737a-603b-4c19-9b54-9114c96fb912&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;2300000700000&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;typename /&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;43.5855&amp;quot; lon=&amp;quot;39.7231&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;40331&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;32&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Брянская область&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочилов хутор&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;c9c96c67-2cc9-4f10-afde-fd32417ea216&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;3201900011100&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;&lt;br /&gt;
    &amp;lt;typename /&amp;gt;&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;52.6407&amp;quot; lon=&amp;quot;33.1724&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;114016&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Псковская область&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочихино деревня&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;10df7588-19c1-49d1-a387-9de1cf3eb26f&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;6001900015400&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;&lt;br /&gt;
    &amp;lt;typename /&amp;gt;&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;56.6003&amp;quot; lon=&amp;quot;29.3542&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
&amp;lt;/townlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ответе города сортируются по популярности, важности (районные центры и т. д.), и только затем — по алфавиту.&lt;br /&gt;
&lt;br /&gt;
== Справочник регионов ==&lt;br /&gt;
'''Пример запроса справочника:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;regionlist&amp;gt;&lt;br /&gt;
  &amp;lt;codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;77&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;край&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Моск&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Московская область&amp;lt;/fullname&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;RU&amp;lt;/country&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
&amp;lt;/regionlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;regionlist count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;city&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Россия&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;643&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName1&amp;gt;RU&amp;lt;/ShortName1&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName2&amp;gt;RUS&amp;lt;/ShortName2&amp;gt;&lt;br /&gt;
    &amp;lt;/country&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Агинский Бурятский автономный округ&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/city&amp;gt;&lt;br /&gt;
  &amp;lt;city&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Россия&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;643&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName1&amp;gt;RU&amp;lt;/ShortName1&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName2&amp;gt;RUS&amp;lt;/ShortName2&amp;gt;&lt;br /&gt;
    &amp;lt;/country&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Адыгея республика&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/city&amp;gt;&lt;br /&gt;
&amp;lt;/regionlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник улиц ==&lt;br /&gt;
'''Пример запроса справочника улиц:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;streetlist&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;town&amp;gt;Москва город&amp;lt;/town&amp;gt;   // ОБЯЗАТЕЛЬНОЕ ПОЛЕ!&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;Хохло&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Академика Х&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Академика Хохлова&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Академика Хохлова ул.&amp;lt;/fullname&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
  &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/streetlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''town''' — Обязательное поле. Название или код населенного пункта.&lt;br /&gt;
:* '''namecontains''' — Поиск улиц, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск улиц, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск улиц, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''fullname''' — Поиск улиц, для которых название вместе с типом соответствует указанному тексту.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 10000.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено, в ответе не указываются totalcount и totalpages.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;streetlist count=&amp;quot;1&amp;quot; page=&amp;quot;1&amp;quot; totalcount=&amp;quot;3&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;street&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;124&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Академика Хохлова ул.&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;shortname&amp;gt;Академика Хохлова&amp;lt;/shortname&amp;gt;&lt;br /&gt;
     &amp;lt;typename&amp;gt;ул.&amp;lt;/typename&amp;gt;&lt;br /&gt;
  &amp;lt;/street&amp;gt;&lt;br /&gt;
&amp;lt;/streetlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ответе улицы сортируются по алфавиту.&lt;br /&gt;
&lt;br /&gt;
== Справочник номенклатуры ==&lt;br /&gt;
'''Пример запроса справочника номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemlist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
    &amp;lt;codesearch&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;123456&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;article&amp;gt;FD343&amp;lt;/article&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;2345625213125&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;conditions&amp;gt;&lt;br /&gt;
      &amp;lt;namecontains&amp;gt;телевизор&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
      &amp;lt;namestarts&amp;gt;sony&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Sony KDL-55W905 ЖК-телевизор&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;EXISTING_ONLY&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;store&amp;gt;2&amp;lt;/store&amp;gt;&lt;br /&gt;
    &amp;lt;/conditions&amp;gt;&lt;br /&gt;
    &amp;lt;except&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;123478&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/except&amp;gt;&lt;br /&gt;
    &amp;lt;limit&amp;gt;&lt;br /&gt;
      &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
      &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
      &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
    &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера itemlist все элементы могут как отсутствовать, так и комбинироваться. Поиск не чувствителен к регистру.&lt;br /&gt;
* '''codesearch''' — Поиск по кодам. В случае использования — контейнеры conditions и limit игнорируются.&lt;br /&gt;
:* '''code''' — Поиск по внутреннему коду системы.&lt;br /&gt;
:* '''article''' — Поиск по артикулу.&lt;br /&gt;
:* '''barcode''' — Поиск по штрихкоду.&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''namecontains''' — Поиск товаров, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск товаров, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск товаров, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''quantity''' — Наличие на складе. Принимает значения EXISTING_ONLY — Только в наличии, NOT_EXISTING_ONLY — Только не в наличии, ALL — Все. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
:* '''store''' — Поиск товаров по определенному складу.&lt;br /&gt;
&lt;br /&gt;
* '''except''' — Описание исключений для корректного определения количества зарезервированной номенклатуры.&lt;br /&gt;
:* '''code''' — Код заказа.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ.&lt;br /&gt;
:* '''limitcount''' — Задает количество записей результата, которые нужно вернуть.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;itemlist count=&amp;quot;3&amp;quot; totalcount=&amp;quot;3&amp;quot; page=&amp;quot;1&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;item&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123456&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;article&amp;gt;FD343&amp;lt;/article&amp;gt;&lt;br /&gt;
    &amp;lt;barcode&amp;gt;2345625213125&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Sony KDL-55W905 ЖК-телевизор&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;retprice&amp;gt;65000&amp;lt;/retprice&amp;gt;&lt;br /&gt;
    &amp;lt;purchprice&amp;gt;50000&amp;lt;/purchprice&amp;gt;&lt;br /&gt;
    &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
    &amp;lt;length&amp;gt;50&amp;lt;/length&amp;gt;&lt;br /&gt;
    &amp;lt;width&amp;gt;30&amp;lt;/width&amp;gt;&lt;br /&gt;
    &amp;lt;height&amp;gt;40&amp;lt;/height&amp;gt;&lt;br /&gt;
    &amp;lt;VATrate&amp;gt;20&amp;lt;/VATrate&amp;gt;&lt;br /&gt;
    &amp;lt;CountInPallet&amp;gt;30&amp;lt;/CountInPallet&amp;gt;&lt;br /&gt;
    &amp;lt;CountInBox&amp;gt;2&amp;lt;/CountInBox&amp;gt;&lt;br /&gt;
    &amp;lt;HasSerials&amp;gt;1&amp;lt;/HasSerials&amp;gt;&lt;br /&gt;
    &amp;lt;CountryOfOrigin&amp;gt;Малайзия&amp;lt;/CountryOfOrigin&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;Message&amp;gt;Хороший телевизор&amp;lt;/Message&amp;gt;&lt;br /&gt;
    &amp;lt;Message2&amp;gt;Снова хороший телевизор&amp;lt;/Message2&amp;gt;&lt;br /&gt;
    &amp;lt;quantity&amp;gt;12&amp;lt;/quantity&amp;gt;&lt;br /&gt;
    &amp;lt;reserved&amp;gt;3&amp;lt;/reserved&amp;gt;&lt;br /&gt;
  &amp;lt;item&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
* '''code''' — Внутренний идентификатор, присвоенный системой.&lt;br /&gt;
* '''article''' — Артикул, назначенный клиентом (поставщиком).&lt;br /&gt;
* '''barcode''' — Штрихкод производителя.&lt;br /&gt;
* '''name''' — Наименование.&lt;br /&gt;
* '''retprice''' — Розничная цена по-умолчанию. При оформлении заказа цена используется та, которая указана в заказе.&lt;br /&gt;
* '''purchprice''' — Закупочная цена.&lt;br /&gt;
* '''weight''' — Масса в килограммах.&lt;br /&gt;
* '''length''' — Длина в сантиметрах.&lt;br /&gt;
* '''width''' — Ширина в сантиметрах.&lt;br /&gt;
* '''height''' — Высота в сантиметрах.&lt;br /&gt;
* '''VATrate''' — Ставка НДС, целое число процентов.&lt;br /&gt;
* '''CountInPallet''' — Количество штук в паллете.&lt;br /&gt;
* '''CountInBox''' — Количество штук в упаковке.&lt;br /&gt;
* '''HasSerials''' — Требует учета серийных номеров. Принимает значения 1 — да, 0 — нет.&lt;br /&gt;
* '''CountryOfOrigin''' — Наименование страны происхождения на русском языке.&lt;br /&gt;
* '''Message''' — Комментарий.&lt;br /&gt;
* '''Message2''' — Дополнительный комментарий.&lt;br /&gt;
* '''quantity''' — Количество на складе. Товары, уже собранные в заказы в этом количестве не присутствуют, считаются покинувшими товарный склад. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
* '''reserved''' — Количество зарезервированного товара. Может превышать остаток на складе, если покупатели ждут следующей поставки. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
&lt;br /&gt;
== Движение номенклатуры ==&lt;br /&gt;
'''Пример запроса движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemmovements&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;datefrom&amp;gt;2020-10-01&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
 &amp;lt;dateto&amp;gt;2020-10-02&amp;lt;/dateto&amp;gt;&lt;br /&gt;
&amp;lt;/itemmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — внутренний код товара в справочнике номенклатуры.&lt;br /&gt;
* '''datefrom''' — дата начала периода.&lt;br /&gt;
* '''dateto''' — дата окончания периода.&lt;br /&gt;
Может быть указан или код, или период, или код и период одновременно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemmovements count=&amp;quot;16&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;itemmovement&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;151500&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;retprice&amp;gt;0&amp;lt;/retprice&amp;gt;&lt;br /&gt;
    &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
    &amp;lt;delivered&amp;gt;0&amp;lt;/delivered&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Возврат от покупателя&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;store&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;офис в Москве&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/store&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
      &amp;lt;ordercode&amp;gt;3374830&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;123660-0&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-24&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
      &amp;lt;company&amp;gt;ТОВАР&amp;lt;/company&amp;gt;&lt;br /&gt;
      &amp;lt;address&amp;gt;Кравченко ул., 1&amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;delivereddate&amp;gt;2017-05-29&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredtime&amp;gt;12:00:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredto /&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;document&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/document&amp;gt;&lt;br /&gt;
    &amp;lt;serials&amp;gt;&lt;br /&gt;
      &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
    &amp;lt;/serials&amp;gt;&lt;br /&gt;
  &amp;lt;/itemmovements&amp;gt;&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''code''' — внутренний код операции движения&lt;br /&gt;
* '''date''' — дата операции&lt;br /&gt;
* '''retprice''' — цена товара&lt;br /&gt;
* '''quantity''' — количество товара операции&lt;br /&gt;
* '''delivered''' — количество доставленного товара&lt;br /&gt;
&lt;br /&gt;
* '''item''' — контейнер товара&lt;br /&gt;
:* '''code''' — внутренний код товара&lt;br /&gt;
:* '''name''' — наименование товара&lt;br /&gt;
&lt;br /&gt;
* '''status''' — контейнер статуса операции&lt;br /&gt;
:* '''code''' — код статуса&lt;br /&gt;
:* '''name''' — наименование&lt;br /&gt;
&lt;br /&gt;
* '''store''' — контейнер филиала, к которому относится операция&lt;br /&gt;
:* '''code''' — код филиала&lt;br /&gt;
:* '''name''' — наименование филиала&lt;br /&gt;
&lt;br /&gt;
* '''order''' — контейнер корреспонденции&lt;br /&gt;
:* '''ordercode''' — внутренний код заказа&lt;br /&gt;
:* '''number''' — номер заказа&lt;br /&gt;
:* '''date''' — дата заказа&lt;br /&gt;
:* '''orderno''' — шифр&lt;br /&gt;
:* '''barcode''' — штрихкод&lt;br /&gt;
:* '''company''' — компания&lt;br /&gt;
:* '''address''' — адрес&lt;br /&gt;
:* '''delivereddate''' — дата вручения&lt;br /&gt;
:* '''deliveredtime''' — время вручения&lt;br /&gt;
:* '''deliveredto''' — данные о вручении, либо причина недоставки&lt;br /&gt;
&lt;br /&gt;
* '''document''' — контейнер документа операции&lt;br /&gt;
:* '''code''' — внутренний код документа&lt;br /&gt;
:* '''number''' — номер документа&lt;br /&gt;
:* '''extnumber''' — внешний номер документа&lt;br /&gt;
:* '''date''' — дата документа&lt;br /&gt;
:* '''message''' — комментарий&lt;br /&gt;
&lt;br /&gt;
* '''serials''' — контейнер серийных номеров&lt;br /&gt;
:* '''serial''' — серийный номер единицы номенклатуры, участвующей в движении&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Серийные номера ==&lt;br /&gt;
'''Пример запроса движения номенклатуры с серийным номером:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;serialmovements&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
&amp;lt;/serialmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''serial''' — серийный номер единицы номенклатуры.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры с серийным номером:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;serialmovements count=&amp;quot;16&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;serialmovement&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;151500&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;delivered&amp;gt;0&amp;lt;/delivered&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Возврат от покупателя&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
      &amp;lt;ordercode&amp;gt;3374830&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;123660-0&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-24&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
      &amp;lt;company&amp;gt;ТОВАР&amp;lt;/company&amp;gt;&lt;br /&gt;
      &amp;lt;address&amp;gt;Кравченко ул., 1&amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;delivereddate&amp;gt;2017-05-29&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredtime&amp;gt;12:00:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredto /&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;document&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/document&amp;gt;&lt;br /&gt;
  &amp;lt;/serialmovement&amp;gt;&lt;br /&gt;
&amp;lt;/serialmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
&lt;br /&gt;
Описание аналогично описанию полей [[#Движение номенклатуры|движения номенклатуры]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Серийные номера по заказу ==&lt;br /&gt;
'''Пример запроса движения серийных номеров заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;orderserials&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;ordercode&amp;gt;123456789&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;123456789&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;barcode&amp;gt;123456789&amp;lt;/barcode&amp;gt;&lt;br /&gt;
&amp;lt;/orderserials&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''ordercode''' — внутренний код заказа.&lt;br /&gt;
* '''orderno''' — шифр заказа.&lt;br /&gt;
* '''barcode''' — штрих-код заказа.&lt;br /&gt;
Указывать необходимо один из идентификаторов заказа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения серийных номеров заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;orderserials&amp;gt;&lt;br /&gt;
  &amp;lt;order&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;3374830&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
    &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;delivereddate&amp;gt;2024-07-20&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
    &amp;lt;deliveredtime&amp;gt;10:04:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
    &amp;lt;assemblydate&amp;gt;2024-07-19 07:05:34&amp;lt;/assemblydate&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;items&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;article&amp;gt;123000&amp;lt;/article&amp;gt;&lt;br /&gt;
      &amp;lt;state&amp;gt;Delivered&amp;lt;/state&amp;gt;&lt;br /&gt;
      &amp;lt;serials&amp;gt;&lt;br /&gt;
        &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
      &amp;lt;/serials&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/items&amp;gt;&lt;br /&gt;
&amp;lt;/orderserials&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
&lt;br /&gt;
* '''order''' — блок заказа:&lt;br /&gt;
:* '''code''' — код&lt;br /&gt;
:* '''orderno''' — шифр&lt;br /&gt;
:* '''barcode''' — штрих-код&lt;br /&gt;
:* '''delivereddate''' — дата доставки факт&lt;br /&gt;
:* '''deliveredtime''' — время доставки факт&lt;br /&gt;
:* '''assemblydate''' — дата сборки&lt;br /&gt;
&lt;br /&gt;
* '''item''' — блок товара:&lt;br /&gt;
:* '''code''' — код&lt;br /&gt;
:* '''name''' — наименование&lt;br /&gt;
:* '''article''' — артикул&lt;br /&gt;
:* '''state''' — статус Доставлено (Delivered) или Возвращено (Returned)&lt;br /&gt;
:* '''serials''' — блок серийных номеров по заказу&lt;br /&gt;
&lt;br /&gt;
== Получение справочника тарифов по городам ==&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса справочника тарифов по городам'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tariffs&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;townfrom&amp;gt;Москва&amp;lt;/townfrom&amp;gt;&lt;br /&gt;
 &amp;lt;service&amp;gt;1&amp;lt;/service&amp;gt;&lt;br /&gt;
 &amp;lt;mainonly&amp;gt;1&amp;lt;/mainonly&amp;gt;    &lt;br /&gt;
&amp;lt;/tariffs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — атрибут '''extra''' обязателен, по нему определяется курьерская служба.&lt;br /&gt;
* '''townfrom''' — город-отправитель. Если не передан, то городом будет «Москва».&lt;br /&gt;
* '''service''' — режим доставки. Обязательный элемент.&lt;br /&gt;
* '''mainonly''' — необязательный элемент. Если передан, то в ответе будут данные только по городам из справочника '''Межгород''' &amp;gt; '''Зоны'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что в ответе отдаются только тарифы, указанные в разделе &amp;quot;Тарифы по зонам&amp;quot; раздела &amp;quot;Межгород&amp;quot; в офисной системе курьерской службы, т.е. считающихся междугородними. &lt;br /&gt;
Доставка до городов, рассчитываемая по внутригородским тарифам,  в ответе НЕ ОТДАЕТСЯ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника тарифов по городам'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;townfrom&amp;quot;: &amp;quot;0c5b2444-70a0-4932-980c-b4dc0d3f02b5&amp;quot;,&lt;br /&gt;
    &amp;quot;service&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;tariffs&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;towntofias&amp;quot;: &amp;quot;0c5b2444-70a0-4932-980c-b4dc0d3f02b5&amp;quot;,&lt;br /&gt;
            &amp;quot;towntocode&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;towntoname&amp;quot;: &amp;quot;Москва город&amp;quot;,&lt;br /&gt;
            &amp;quot;townregion&amp;quot;: &amp;quot;Город Москва&amp;quot;,&lt;br /&gt;
            &amp;quot;distance&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;pricedistance&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;pricesnew&amp;quot;: {&lt;br /&gt;
                &amp;quot;before&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 100,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 1&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 150,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 5&lt;br /&gt;
                    }&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;after&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 1,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 38.01&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 15,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 1,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 51.01&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;deliveryPeriodMin&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;deliveryPeriodMax&amp;quot;: 2&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''townfrom''' — код ФИАС города-отправителя.&lt;br /&gt;
* '''service''' — режим доставки.&lt;br /&gt;
* '''tariffs''' — cписок тарифов по городу.&lt;br /&gt;
:* '''townregion''' — регион города-получателя.&lt;br /&gt;
:* '''towntofias''' — код ФИАС города-получателя.&lt;br /&gt;
:* '''towntocode''' — внутренний код города-получателя.&lt;br /&gt;
:* '''towntoname''' — наименование города-получателя.&lt;br /&gt;
:* '''distance''' — дистанция в км до города от МКАД, если в запросе townfrom — Москва.&lt;br /&gt;
:* '''pricedistance''' — сумма за километраж до города от МКАД, если в запросе townfrom — Москва.&lt;br /&gt;
:* '''pricesnew''' — ваши настройки тарифов из справочника '''Межгород''' &amp;gt; '''Тарифы по зонам'''.&lt;br /&gt;
::* '''before/after''' — контейнеры ДО/ОТ.&lt;br /&gt;
:::* '''price''' — цена. Если ответ идет по «before», то в цену также плюсуется сумма pricedistance&lt;br /&gt;
:::* '''every''' — за каждые.&lt;br /&gt;
:::* '''mass''' — масса.&lt;br /&gt;
:* '''prices''' — устаревший элемент, не используется.&lt;br /&gt;
:* '''deliveryPeriodMin''' — минимальный срок доставки.&lt;br /&gt;
:* '''deliveryPeriodMax''' — максимальный срок доставки.&lt;br /&gt;
&lt;br /&gt;
== Номенклатура приходной накладной ==&lt;br /&gt;
'''Пример запроса номенклатуры приходной накладной:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemdoc&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/itemdoc&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — внутренний код документа приходной накладной (см. предыдущий запрос).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemdoc&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;items&amp;gt;&lt;br /&gt;
    &amp;lt;item code=&amp;quot;4259&amp;quot; quantity=&amp;quot;1&amp;quot; barcode=&amp;quot;200300&amp;quot; article=&amp;quot;123555&amp;quot;&amp;gt;Настольная игра Дженга&amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/items&amp;gt;&lt;br /&gt;
&amp;lt;/itemdoc&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''code''' — внутренний код приходной накладной&lt;br /&gt;
* '''number''' — номер документа&lt;br /&gt;
* '''date''' — дата документа&lt;br /&gt;
* '''message''' — комментарий&lt;br /&gt;
&lt;br /&gt;
* '''item''' — контейнер товара&lt;br /&gt;
:* '''code''' — внутренний код товара&lt;br /&gt;
:* '''barcode''' — штрихкод товара&lt;br /&gt;
:* '''article''' — артикул товара&lt;br /&gt;
:* '''quantity''' — количество поступившего товара&lt;br /&gt;
&lt;br /&gt;
== Справочник филиалов ==&lt;br /&gt;
'''Пример запроса списка филиалов:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;storelist&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;json&amp;gt;YES&amp;lt;/json&amp;gt;&lt;br /&gt;
 &amp;lt;client_code&amp;gt;7890&amp;lt;/client_code&amp;gt;&lt;br /&gt;
&amp;lt;/storelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Атрибут '''extra''' — обязателен, по нему определяется курьерская служба&lt;br /&gt;
* '''json''' — Признак вывода ответа в виде JSON YES/NO&lt;br /&gt;
* '''client_code''' — Код клиента курьерской службы&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;storelist count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;store&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt;    &lt;br /&gt;
    &amp;lt;name&amp;gt;ABC&amp;lt;/name&amp;gt; &lt;br /&gt;
  &amp;lt;/store&amp;gt;&lt;br /&gt;
  &amp;lt;store&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;456&amp;lt;/code&amp;gt;   &lt;br /&gt;
    &amp;lt;name&amp;gt;Филиал 2&amp;lt;/name&amp;gt; &lt;br /&gt;
  &amp;lt;/store&amp;gt;&lt;br /&gt;
&amp;lt;/storelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код филиала.&lt;br /&gt;
* '''name''' — Наименование филиала.&lt;br /&gt;
&lt;br /&gt;
== Справочник пунктов самовывоза ==&lt;br /&gt;
Для отображения списка пунктов выдачи (ПВЗ) есть '''готовый JavaScript модуль''': https://home.courierexe.ru/js/measoft_map.js Инструкция по использованию — внутри. Посмотреть пример работы можно [https://home.courierexe.ru/pvz_test.html Здесь]&lt;br /&gt;
&lt;br /&gt;
Уникальные запросы списка ПВЗ кешируются на стороне личного кабинета и хранятся до 7 часов утра по московскому времени следующего дня. Например, если уникальный запрос с массой 2 кг был отправлен сегодня в 10 часов, то завтра в 7 утра он сбросится. Если сегодня в 18 часов в этом же запросе вы укажете массу 2 кг, в ответе вернется тот же список ПВЗ. Если передадите массу 3 кг, список может быть другим.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что если в выборке количество ПВЗ больше '''10000''' и не указаны параметры '''code''', '''json''' или '''limitcount''', то будет возвращаться ошибка. В этом случае необходимо использовать блок '''limit'''.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса пунктов самовывоза:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;pvzlist&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;1234&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;client_code&amp;gt;7890&amp;lt;/client_code&amp;gt;&lt;br /&gt;
 &amp;lt;city&amp;gt;Свердловская область&amp;lt;/city&amp;gt;&lt;br /&gt;
 &amp;lt;town regioncode=&amp;quot;66&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Нижний Тагил&amp;lt;/town&amp;gt;&lt;br /&gt;
 &amp;lt;address&amp;gt;Щёлковское шоссе&amp;lt;/address&amp;gt;&lt;br /&gt;
 &amp;lt;house&amp;gt;77&amp;lt;/house&amp;gt;&lt;br /&gt;
 &amp;lt;advanced_search&amp;gt;Строка поиска&amp;lt;/advanced_search&amp;gt;&lt;br /&gt;
 &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
 &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
 &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
 &amp;lt;acceptfitting&amp;gt;YES&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
 &amp;lt;maxweight&amp;gt;30&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
 &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
 &amp;lt;respstores&amp;gt;YES&amp;lt;/respstores&amp;gt;&lt;br /&gt;
 &amp;lt;lt&amp;gt;57.924737&amp;lt;/lt&amp;gt;&lt;br /&gt;
 &amp;lt;lg&amp;gt;59.940019&amp;lt;/lg&amp;gt;&lt;br /&gt;
 &amp;lt;rt&amp;gt;57.905682&amp;lt;/rt&amp;gt;&lt;br /&gt;
 &amp;lt;rg&amp;gt;59.984669&amp;lt;/rg&amp;gt;&lt;br /&gt;
 &amp;lt;json&amp;gt;YES&amp;lt;/json&amp;gt;&lt;br /&gt;
 &amp;lt;with_coords&amp;gt;YES&amp;lt;/with_coords&amp;gt;&lt;br /&gt;
 &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;2&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
 &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/pvzlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Атрибут '''extra''' — обязателен, по нему определяется курьерская служба, '''login''' и '''pass''' позволяют авторизоваться под клиентом: для отдельного клиента могут быть ограничения по доступности некоторых ПВЗ, и в этом случае они будут учтены.&lt;br /&gt;
* '''code''' — Внутренний код, целое число.&lt;br /&gt;
* '''client_code''' — Код клиента курьерской службы.&lt;br /&gt;
* '''city''' — Регион получателя. Можно указать код региона или полное наименование региона из [[#Справочник регионов|справочника регионов]].&lt;br /&gt;
* '''town''' — Город получателя.&lt;br /&gt;
Для тега города '''town''' можно указать код региона в атрибуте '''''regioncode''''' из [[#Справочник регионов|справочника регионов]]. Поиск будет производиться в указанном регионе.&lt;br /&gt;
&lt;br /&gt;
Также можно указать страну получателя в атрибуте '''''country''''' в соответствии с [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
Для формата запроса JSON фильтрация по городу работает только в связке с фильтром по адресу.&lt;br /&gt;
&lt;br /&gt;
* '''address''' — Фильтр по адресу, работает только в связке с фильтром по городу&lt;br /&gt;
* '''house''' — Фильтр по номеру дома, работает только в связке с фильтрами по адресу и городу&lt;br /&gt;
* '''advanced_search''' — Фильтр по коду агента, наименованию, телефону или комментарию&lt;br /&gt;
* '''parentcode''' — Фильтр по родительскому [[#Справочник филиалов|филиалу]]&lt;br /&gt;
* '''acceptcash''' — Фильтр по приему наличных YES/NO&lt;br /&gt;
* '''acceptcard''' — Фильтр по приему банковских карт YES/NO&lt;br /&gt;
* '''acceptfitting''' — Фильтр по наличию примерки YES/NO&lt;br /&gt;
* '''maxweight''' — Фильтр по максимальному весу, с которым работает ПВЗ&lt;br /&gt;
* '''acceptindividuals''' — Фильтр по доступности физическим лицам YES/NO&lt;br /&gt;
* '''respstores''' - Признак вывода ответственных филиалов при значении YES&lt;br /&gt;
* '''lt''' — Широта левого верхнего угла&lt;br /&gt;
* '''lg''' — Долгота левого верхнего угла&lt;br /&gt;
* '''rt''' — Широта правого нижнего угла&lt;br /&gt;
* '''rg''' — Долгота правого нижнего угла&lt;br /&gt;
* '''json''' — Признак вывода ответа в виде JSON YES/NO&lt;br /&gt;
* '''with_coords''' — Признак вывода ПВЗ только с наличием координат YES/NO&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 100.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено — в ответе не указываeтся totalcount.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника пунктов самовывоза:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;pvzlist count=&amp;quot;2&amp;quot; totalcount=&amp;quot;40465&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;pvz&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;126&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;clientcode&amp;gt;3&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Нижний Тагил&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
    &amp;lt;parentname&amp;gt;Интеграция&amp;lt;/parentname&amp;gt;&lt;br /&gt;
    &amp;lt;town code=&amp;quot;124267&amp;quot; regioncode=&amp;quot;66&amp;quot; regionname=&amp;quot;Свердловская область&amp;quot;&amp;gt;Нижний Тагил город&amp;lt;/town&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;622036, г. Нижний Тагил, ул. Циолковского, д. 17&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;+73435417709, +73435254989&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Новый пункт доставки&amp;lt;/comment&amp;gt;&lt;br /&gt;
    &amp;lt;worktime&amp;gt;Вс 10:00-16:00, Сб 10:00-16:00, Пн-Пт 10:00-20:00&amp;lt;/worktime&amp;gt;&lt;br /&gt;
    &amp;lt;traveldescription&amp;gt;Жилое 5-ти этажное здание, торцом к дороге, второе здание от перекрестка Пархоменко-Циолковского&amp;lt;/traveldescription&amp;gt;&lt;br /&gt;
    &amp;lt;maxweight&amp;gt;10&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
    &amp;lt;acceptfitting&amp;gt;YES&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
    &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
    &amp;lt;latitude&amp;gt;57.93457&amp;lt;/latitude&amp;gt;&lt;br /&gt;
    &amp;lt;longitude&amp;gt;59.95131&amp;lt;/longitude&amp;gt;&lt;br /&gt;
    &amp;lt;uid&amp;gt;40606d00-9c51-11eb-b2c9-cfd6c1111392&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;/pvz&amp;gt;&lt;br /&gt;
  &amp;lt;pvz&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;245&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;clientcode&amp;gt;NTG1&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;На Красноармейской&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
    &amp;lt;parentname&amp;gt;Интеграция&amp;lt;/parentname&amp;gt;&lt;br /&gt;
    &amp;lt;town code=&amp;quot;124267&amp;quot; regioncode=&amp;quot;66&amp;quot; regionname=&amp;quot;Свердловская область&amp;quot;&amp;gt;Нижний Тагил город&amp;lt;/town&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;КРАСНОАРМЕЙСКАЯ, д.79&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;+7(3435)379-044&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Возможность примерки отсутствует&amp;lt;/comment&amp;gt;&lt;br /&gt;
    &amp;lt;worktime&amp;gt;Вс 10:00-16:00, Сб 10:00-16:00, Пн-Пт 10:00-20:00&amp;lt;/worktime&amp;gt;&lt;br /&gt;
    &amp;lt;traveldescription&amp;gt;Напротив ТЦ Пирамида&amp;lt;/traveldescription&amp;gt;&lt;br /&gt;
    &amp;lt;maxweight&amp;gt;20&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
    &amp;lt;acceptfitting&amp;gt;NO&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
    &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
    &amp;lt;latitude&amp;gt;57.93468&amp;lt;/latitude&amp;gt;&lt;br /&gt;
    &amp;lt;longitude&amp;gt;60.55476&amp;lt;/longitude&amp;gt;&lt;br /&gt;
    &amp;lt;uid&amp;gt;41116853-9c51-11eb-b2c9-cfd6c1451392&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;/pvz&amp;gt;&lt;br /&gt;
&amp;lt;/pvzlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код ПВЗ в системе. Используется в запросе [[API#Оформление заказа|оформления заказов]]&lt;br /&gt;
* '''clientcode''' — Код ПВЗ используемый компанией-подрядчиком.&lt;br /&gt;
* '''name''' — Наименование ПВЗ.&lt;br /&gt;
* '''parentcode''' — Код родительского элемента.&lt;br /&gt;
* '''parentname''' — Наименование родительского элемента.&lt;br /&gt;
* '''town''' — Населенный пункт с кодом из [[#Справочник городов|справочника городов]], а также с кодом и наименованием региона.&lt;br /&gt;
* '''address''' — Адрес ПВЗ.&lt;br /&gt;
* '''phone''' — Телефоны ПВЗ.&lt;br /&gt;
* '''comment''' — Дополнительная информация.&lt;br /&gt;
* '''worktime''' — Режим работы ПВЗ.&lt;br /&gt;
* '''traveldescription''' — Описание местонахождения ПВЗ или пути к нему.&lt;br /&gt;
* '''maxweight''' — Максимальный вес, с которым работает ПВЗ.&lt;br /&gt;
* '''acceptcash''' — Признак приема наличных&lt;br /&gt;
* '''acceptcard''' — Признак приема банковских карт&lt;br /&gt;
* '''acceptfitting''' — Наличие примерки&lt;br /&gt;
* '''latitude''' — Широта&lt;br /&gt;
* '''longitude''' — Долгота&lt;br /&gt;
* '''uid''' — Уникальный идентификатор ПВЗ в системе Measoft. Создается автоматически при получении данных о ПВЗ от агентов.&lt;br /&gt;
* '''count''' — Количество записей в ответе&lt;br /&gt;
* '''totalcount''' — Общее количество записей, отвечающее параметрам запроса&lt;br /&gt;
&lt;br /&gt;
== Получение фискальных данных заказа ==&lt;br /&gt;
'''Пример запроса получения фискальных данных:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;receiptdata&amp;gt;&lt;br /&gt;
   &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;orders&amp;gt;&lt;br /&gt;
      &amp;lt;order orderno=&amp;quot;123456&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;order orderno=&amp;quot;890111C&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/orders&amp;gt;&lt;br /&gt;
&amp;lt;/receiptdata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа получения фискальных данных:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;receipts count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;receipt&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;123456&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;fdDatetime&amp;gt;2020-06-07 12:14:00&amp;lt;/fdDatetime&amp;gt;&lt;br /&gt;
      &amp;lt;fdValue&amp;gt;123&amp;lt;/fdValue&amp;gt;&lt;br /&gt;
      &amp;lt;fdNum&amp;gt;456&amp;lt;/fdNum&amp;gt;&lt;br /&gt;
      &amp;lt;fnSn&amp;gt;789&amp;lt;/fnSn&amp;gt;&lt;br /&gt;
      &amp;lt;kktNum&amp;gt;100&amp;lt;/kktNum&amp;gt;&lt;br /&gt;
      &amp;lt;inn&amp;gt;222&amp;lt;/inn&amp;gt;&lt;br /&gt;
      &amp;lt;ofdUrl&amp;gt;gate.ofd.ru&amp;lt;/ofdUrl&amp;gt;&lt;br /&gt;
      &amp;lt;fullUrl&amp;gt;https://check.ofd.ru/123&amp;lt;/fullUrl&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;12345&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;payType&amp;gt;2&amp;lt;/payType&amp;gt;&lt;br /&gt;
      &amp;lt;lines count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;line&amp;gt;&lt;br /&gt;
            &amp;lt;item&amp;gt;1111764&amp;lt;/item&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Сапоги&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;extcode&amp;gt;27113415&amp;lt;/extcode&amp;gt;&lt;br /&gt;
            &amp;lt;qty&amp;gt;1&amp;lt;/qty&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;1000&amp;lt;/price&amp;gt;&lt;br /&gt;
            &amp;lt;vatRate&amp;gt;20&amp;lt;/vatRate&amp;gt;&lt;br /&gt;
            &amp;lt;governmentCode&amp;gt;Z16513LK2&amp;lt;/governmentCode&amp;gt;&lt;br /&gt;
            &amp;lt;itemType&amp;gt;1&amp;lt;/itemType&amp;gt;&lt;br /&gt;
         &amp;lt;/line&amp;gt;&lt;br /&gt;
      &amp;lt;/lines&amp;gt;&lt;br /&gt;
   &amp;lt;/receipt&amp;gt;&lt;br /&gt;
&amp;lt;/receipts&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры ответа:&lt;br /&gt;
* '''orderno''' — Номер заказа&lt;br /&gt;
* '''fdDatetime''' — Дата и время пробития фискального чека&lt;br /&gt;
* '''fdValue''' — ФПД (фискальный признак документа)&lt;br /&gt;
* '''fdNum''' — ФИСКАЛЬНЫЙ ДОКУМЕНТ (фискальный номер чека)&lt;br /&gt;
* '''fnSn''' — ФН (номер фискального накопителя)&lt;br /&gt;
* '''kktNum''' — РН (регистрационный номер кассы)&lt;br /&gt;
* '''inn''' — ИНН&lt;br /&gt;
* '''ofdUrl''' — URL адрес (доменное имя) ОФД&lt;br /&gt;
* '''price''' — Сумма чека&lt;br /&gt;
* '''paytype''' — Тип оплаты чека. Принимает значения:&lt;br /&gt;
:* CASH — Наличными (по-умолчанию)&lt;br /&gt;
:* CARD — Безналичным способом&lt;br /&gt;
* '''fullUrl''' — URL чека для просмотра онлайн&lt;br /&gt;
* '''lines''' — Позиции чека&lt;br /&gt;
:* '''item''' — код товара&lt;br /&gt;
:* '''name''' — наименование товара&lt;br /&gt;
:* '''extcode''' — код товара во внешних системах&lt;br /&gt;
:* '''qty''' — количество товара&lt;br /&gt;
:* '''price''' — цена товара&lt;br /&gt;
:* '''governmentCode''' — считанная последовательность, которая в дальнейшем преобразуется по алгоритму тега 1162&lt;br /&gt;
:* '''vatRate''' — НДС товара&lt;br /&gt;
:* '''itemType''' — тип товара (товар, доставка и т. д.)&lt;br /&gt;
&lt;br /&gt;
== Справочник Виды срочности ==&lt;br /&gt;
'''Пример запроса видов срочности:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;services&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/services&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника видов срочности:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;services count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;service&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Эконом&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/service&amp;gt;&lt;br /&gt;
  &amp;lt;service&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Срочно&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/service&amp;gt;&lt;br /&gt;
&amp;lt;/services&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник дополнительных услуг ==&lt;br /&gt;
'''Пример запроса дополнительных услуг:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;advprices&amp;gt;&lt;br /&gt;
   &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/advprices&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''advprices''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника дополнительных услуг:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;advprices&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Этажей в доме&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;int&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Коэффициент надбавки&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Расписаться на упаковке&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;bool&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
&amp;lt;/advprices&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
* '''code''' — внутренний код услуги&lt;br /&gt;
* '''name''' — наименование услуги. Если поле «название в ЛК» в настройках услуги не пусто, то возвращает значение поля «название в ЛК».&lt;br /&gt;
* '''hine''' — подсказка по доп услуге для пользователя&lt;br /&gt;
* '''type''' — тип услуги. Может иметь значения:&lt;br /&gt;
:* '''bool''' — для услуг вида «чекбокс», «Да»&lt;br /&gt;
:* '''float''' — для числа с плавающей точкой&lt;br /&gt;
:* '''int''' — для целого числа&lt;br /&gt;
&lt;br /&gt;
== Расчет стоимости доставки ==&lt;br /&gt;
'''Пример запроса стоимости доставки:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;calculator&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;order&amp;gt;&lt;br /&gt;
  &amp;lt;pricetype&amp;gt;CUSTOMER&amp;lt;/pricetype&amp;gt;&lt;br /&gt;
  &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;78&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;124&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice&amp;gt;150&amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package mass=&amp;quot;1&amp;quot; quantity=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package mass=&amp;quot;2.5&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;userid&amp;gt;user123&amp;lt;/userid&amp;gt;&lt;br /&gt;
   &amp;lt;groupid&amp;gt;customer&amp;lt;/groupid&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/calculator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
Структура данных и заполнение полей аналогичны и совместимы с [[#Оформление заказа]].&lt;br /&gt;
&lt;br /&gt;
Дополнительные поля:&lt;br /&gt;
* '''pricetype''' — тип требуемой цены. Возможные значения: «CUSTOMER» (по-умолчанию) — [[Личный кабинет клиента#Цена доставки для получателя|цена для конечного получателя]], «CLIENT» — цена курьерской службы для клиента.&lt;br /&gt;
* '''userid''' — Идентификатор пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенного покупателя.&lt;br /&gt;
* '''groupid''' — Идентификатор группы пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенной группы покупателей.&lt;br /&gt;
&lt;br /&gt;
Суммы НП и ОЦ, а также тип оплаты CARD имеют значение при настроенных в тарифе на вкладке Прочее долях (в процентах) от данных сумм.&lt;br /&gt;
&lt;br /&gt;
В авторизации можно опустить параметры login и pass, тогда расчет будет производиться по стандартному тарифу курьерской службы, без учета возможных отличий для конкретного клиента.&amp;lt;br&amp;gt;&lt;br /&gt;
Объемный вес будет учитываться только при условии указания всех габаритов: длины, ширины и высоты.&amp;lt;br&amp;gt;&lt;br /&gt;
В полях город-отправитель и город-получатель можно указывать название города (не рекомендуется!), либо код города из нашего справочника, либо 13-ти значный код КЛАДР, либо 36-ти значный код адресной системы ФИАС (AOID).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа стоимости доставки:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;calculator&amp;gt;&lt;br /&gt;
  &amp;lt;calc&amp;gt;&lt;br /&gt;
    &amp;lt;townfrom code=&amp;quot;1&amp;quot;&amp;gt;Москва город&amp;lt;/townfrom&amp;gt;&lt;br /&gt;
    &amp;lt;townto code=&amp;quot;56603&amp;quot;&amp;gt;Иркутск город&amp;lt;/townto&amp;gt;&lt;br /&gt;
    &amp;lt;mass&amp;gt;3.7&amp;lt;/mass&amp;gt;&lt;br /&gt;
    &amp;lt;service name=&amp;quot;Экспресс&amp;quot;&amp;gt;1&amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;zone&amp;gt;2&amp;lt;/zone&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;1113&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;mindeliverydays&amp;gt;1&amp;lt;/mindeliverydays&amp;gt;&lt;br /&gt;
    &amp;lt;maxdeliverydays&amp;gt;3&amp;lt;/maxdeliverydays&amp;gt;&lt;br /&gt;
    &amp;lt;mindeliverydate&amp;gt;2020-05-13&amp;lt;/mindeliverydate&amp;gt;&lt;br /&gt;
    &amp;lt;intervals&amp;gt;&lt;br /&gt;
        &amp;lt;workdays&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;10:00-16:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;16:00-22:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
        &amp;lt;/workdays&amp;gt;&lt;br /&gt;
        &amp;lt;holidays&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;12:00-16:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
        &amp;lt;/holidays&amp;gt;&lt;br /&gt;
    &amp;lt;/intervals&amp;gt;&lt;br /&gt;
    &amp;lt;deliveryprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;1&amp;quot; price=&amp;quot;1000&amp;quot;&amp;gt;База&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;4&amp;quot; price=&amp;quot;100&amp;quot;&amp;gt;Процент от суммы руб&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;5&amp;quot; price=&amp;quot;63&amp;quot;&amp;gt;Процент от объявленной стоимости&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;6&amp;quot; price=&amp;quot;-50&amp;quot;&amp;gt;Скидка при доставке&amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
  &amp;lt;/calc&amp;gt;&lt;br /&gt;
&amp;lt;/calculator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
* '''townfrom''' — Город-отправитель так, как система его распознала и привязала к справочнику. Атрибут '''code''' — код из справочника городов системы.&lt;br /&gt;
* '''townto''' — Город-получатель так, как система его распознала и привязала к справочнику. Атрибут '''code''' — код из справочника городов системы.&lt;br /&gt;
* '''mass''' — Масса в килограммах&lt;br /&gt;
* '''service''' — Режим доставки — число, указывающее на запись в справочнике видов срочности (см описание на этой странице).&lt;br /&gt;
* '''zone''' — номер тарифной зоны, по которой рассчиталась стоимость. В зависимости от зоны выбирается тарифная сетка. Так же к цене могут применяться повышающие или понижающие коэффициенты при доставке не из/в региональный центр.&lt;br /&gt;
* '''price''' — рассчитанная стоимость доставки в валюте прайс-листа курьерской службы. Рекомендуется к использованию в отличие от одноименного атрибута родительского контейнера.&lt;br /&gt;
* '''maxdeliverydays''' — максимальный срок доставки в рабочих днях.&lt;br /&gt;
* '''mindeliverydate''' — минимальная дата доставки в учетом выходных дней.&lt;br /&gt;
* '''intervals''' — список интервалов доставки для соответствующей зоны и режима срочности.&lt;br /&gt;
* '''deliveryprice''' — Данные по составляющим ценам доставки&lt;br /&gt;
&lt;br /&gt;
'''''Обратите внимание:''''' В реальном ответе сервера в теге calc присутствует атрибут «price». Он оставлен для обратной совместимости, не используйте его. Пользуйтесь вложенным тегом price.&lt;br /&gt;
&lt;br /&gt;
=== Коды и описание ошибок ===&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!Код ошибки&lt;br /&gt;
!Английское описание&lt;br /&gt;
!Русское описание&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|15||tarif not found||Тариф не найден||Ошибка получения тарифов: для клиента не указан тариф&lt;br /&gt;
|-&lt;br /&gt;
|19||field [town to] cannot be empty||Поле [город получателя] не может быть пустым||Необходимо указать город получателя или ПВЗ&lt;br /&gt;
|-&lt;br /&gt;
|20||field [weight] is incorrect||Некорректное значение [масса]||Значение массы некорректное, например, не является числом. Его необходимо исправить&lt;br /&gt;
|-&lt;br /&gt;
|21||town from not found||Город отправителя не найден||Системе не удалось найти указанный населенный пункт отправителя&lt;br /&gt;
|-&lt;br /&gt;
|22||town to not found||Город получателя не найден||Системе не удалось найти указанный населенный пункт отправителя&lt;br /&gt;
|-&lt;br /&gt;
|23||field [weight] cannot be empty||Поле [масса] не может быть пустым||Необходимо указать значение массы отправления, поле [weight]&lt;br /&gt;
|-&lt;br /&gt;
|36||subtown not found||Город в регионе не найден||Не настроено направление доставки до города в регионе: не добавлен регион или указанный город отсутствует в списке региона&lt;br /&gt;
|-&lt;br /&gt;
|37||zoneprice not found||Тариф зоны не найден||Отсутствуют зоны тарификации или для них не указаны стоимости&lt;br /&gt;
|-&lt;br /&gt;
|38||tarif not found - 1||Тариф не найден 1||Результаты расчета отсутствуют: общая ошибка в случае, если других ошибок нет, но результат пустой &lt;br /&gt;
|-&lt;br /&gt;
|39||tarif not found - 2||Тариф не найден 2||Ошибка получения тарифов: для клиента не настроен тариф или тарификация от количества заказов&lt;br /&gt;
|-&lt;br /&gt;
|82||field [weight] exceeded limit PVZ||Значение [weight] превышает ограничение ПВЗ||Указанное значение массы больше, чем максимально допустимое для указанного ПВЗ&lt;br /&gt;
|-&lt;br /&gt;
|83||attribute [paytype] not allowed PVZ||Значение [paytype] не допустимо для ПВЗ||В ПВЗ не допустим указанный тип оплаты&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Получение информации о клиенте ==&lt;br /&gt;
'''Пример запроса получения информации о клиенте:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;client&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt; &lt;br /&gt;
&amp;lt;/client&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''client''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос получения информации о клиенте:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;client&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;1082&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/client&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код клиента&lt;br /&gt;
&lt;br /&gt;
== Список актов передачи денег ==&lt;br /&gt;
'''Пример запроса списка актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;smalist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;datefrom&amp;gt;2016-02-10&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
  &amp;lt;dateto&amp;gt;2016-03-10&amp;lt;/dateto&amp;gt;&lt;br /&gt;
&amp;lt;/smalist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''smalist''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''datefrom''' — Дата «с». Необязательный элемент.&lt;br /&gt;
* '''dateto''' — Дата «по». Необязательный элемент.&lt;br /&gt;
Если интервал дат не указан, то возвращаются акты передачи денег за последний месяц.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос списка актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;smalist count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;sma&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;6278&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;number&amp;gt;3992&amp;lt;/number&amp;gt;&lt;br /&gt;
    &amp;lt;actdate&amp;gt;2016-02-12&amp;lt;/actdate&amp;gt;&lt;br /&gt;
    &amp;lt;datepay&amp;gt;&amp;lt;/datepay&amp;gt;&lt;br /&gt;
    &amp;lt;dateto&amp;gt;2016-02-12&amp;lt;/dateto&amp;gt;&lt;br /&gt;
    &amp;lt;promiseddatepay&amp;gt;&amp;lt;/promiseddatepay&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;637.00&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;pricecorr&amp;gt;113.00&amp;lt;/pricecorr&amp;gt;&lt;br /&gt;
    &amp;lt;rur&amp;gt;13430.00&amp;lt;/rur&amp;gt;&lt;br /&gt;
    &amp;lt;pricekur&amp;gt;570.00&amp;lt;/pricekur&amp;gt;&lt;br /&gt;
    &amp;lt;priceag&amp;gt;67.00&amp;lt;/priceag&amp;gt;&lt;br /&gt;
    &amp;lt;payno&amp;gt;42423&amp;lt;/payno&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;1&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;paytypename&amp;gt;Безнал&amp;lt;/paytypename&amp;gt;&lt;br /&gt;
    &amp;lt;signedcopyreceived&amp;gt;NO&amp;lt;/signedcopyreceived&amp;gt;&lt;br /&gt;
  &amp;lt;/sma&amp;gt;&lt;br /&gt;
&amp;lt;/smalist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код акта&lt;br /&gt;
* '''number''' — Номер акта в системе&lt;br /&gt;
* '''actdate''' — Дата акта&lt;br /&gt;
* '''datepay''' — Дата оплаты по акту&lt;br /&gt;
* '''dateto''' — Дата конечного периода для формирования АПД&lt;br /&gt;
* '''promiseddatepay''' — Плановая дата оплаты&lt;br /&gt;
* '''price''' — Стоимость услуг&lt;br /&gt;
* '''pricecorr''' — Сумма корректировки&lt;br /&gt;
* '''rur''' — Сумма заказа&lt;br /&gt;
* '''pricekur''' — Стоимость курьерской доставки&lt;br /&gt;
* '''priceag''' — Агентское вознаграждение&lt;br /&gt;
* '''payno''' — Номер платежного поручения&lt;br /&gt;
* '''paytype''' — Тип оплаты: 1 — безнал, 2 — наличными курьером, 3 — наличными в офисе, 4 — перевод на карту&lt;br /&gt;
* '''paytypename''' — Строковое представление типа оплаты&lt;br /&gt;
* '''signedcopyreceived''' — Признак факта возврата акта YES/NO&lt;br /&gt;
&lt;br /&gt;
== Детализация актов передачи денег ==&lt;br /&gt;
'''Пример запроса детализации актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;smadetail&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;6278&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/smadetail&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''smadetail''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''code''' — Код акта передачи денег (см. запрос списка АПД). Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос детализации актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;smadetail count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;specialsma&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;42494&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ordercode&amp;gt;14424&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
    &amp;lt;orderno&amp;gt;11111&amp;lt;/orderno&amp;gt;&lt;br /&gt;
    &amp;lt;orderdate&amp;gt;2018-01-01&amp;lt;/orderdate&amp;gt;&lt;br /&gt;
    &amp;lt;delivereddate&amp;gt;2018-10-01&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
    &amp;lt;company&amp;gt;Компания&amp;lt;/company&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;314.00&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;rur&amp;gt;8800.00&amp;lt;/rur&amp;gt;&lt;br /&gt;
    &amp;lt;inshprice&amp;gt;314.00&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
    &amp;lt;pricekur&amp;gt;270.00&amp;lt;/pricekur&amp;gt;&lt;br /&gt;
    &amp;lt;priceag&amp;gt;44.00&amp;lt;/priceag&amp;gt;&lt;br /&gt;
    &amp;lt;pricecalc&amp;gt;8486.00&amp;lt;/pricecalc&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;2&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;paytypename&amp;gt;наличными курьером&amp;lt;/paytypename&amp;gt;&lt;br /&gt;
    &amp;lt;weight&amp;gt;0.400&amp;lt;/weight&amp;gt;&lt;br /&gt;
    &amp;lt;distance&amp;gt;0.0&amp;lt;/distance&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;Доставлено&amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;/specialsma&amp;gt;&lt;br /&gt;
&amp;lt;/smadetail&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код записи.&lt;br /&gt;
* '''ordercode''' — Код заказа.&lt;br /&gt;
* '''orderno''' — Шифр заказа.&lt;br /&gt;
* '''orderdate''' — Дата заказа.&lt;br /&gt;
* '''delivereddate''' — Дата доставки.&lt;br /&gt;
* '''company''' — Получатель.&lt;br /&gt;
* '''price''' — Стоимость услуг.&lt;br /&gt;
* '''rur''' — Сумма заказа.&lt;br /&gt;
* '''inshprice''' — Стоимость заказа.&lt;br /&gt;
* '''pricekur''' — Стоимость курьерской доставки.&lt;br /&gt;
* '''priceag''' — Агентское вознаграждение.&lt;br /&gt;
* '''pricecalc''' — Сумма для передачи агенту.&lt;br /&gt;
* '''paytype''' — Тип оплаты: 1 — безнал, 2 — наличными курьером, 3 — наличными в офисе, 4 — перевод на карту.&lt;br /&gt;
* '''paytypename''' — Строковое представление типа оплаты&lt;br /&gt;
* '''weight''' — Вес заказа.&lt;br /&gt;
* '''distance''' — Дистанция по заказу&lt;br /&gt;
* '''status''' — Статус заказа.&lt;br /&gt;
&lt;br /&gt;
== Установка статуса согласования заказа ==&lt;br /&gt;
Для возможности клиентом установки статуса согласования заказа необходимо включить переменную [[Личный кабинет курьерской службы#Заказы|Разрешить менять статус согласования]]&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса установки статуса согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;setapprovalstatus&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234561&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;1&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Сообщение статуса&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234562&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;2&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Согласовано&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234563&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;3&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Не согласовано&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/setapprovalstatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''order''' — Контейнер заказа. Обязателен как минимум один элемент.&lt;br /&gt;
:* '''ordercode''' — Внутренний код заказа.&lt;br /&gt;
* '''confirmstate''' — Код статуса заказа. Все статусы с кодами можно получить запросом [[#Получение списка статусов согласования заказа|Получение списка статусов согласования заказа]]&lt;br /&gt;
* '''message''' — Дополнительный комментарий, который отобразится в поле ''Инфо о доставке''.&lt;br /&gt;
&lt;br /&gt;
== Получение списка статусов согласования заказа ==&lt;br /&gt;
'''Пример запроса списка статусов согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;approvalstatuses&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/approvalstatuses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа списка статусов согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;approvalstatuses count=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Неизвестно&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Согласование запрошено&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Доставка полностью согласована&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Согласовано с изменением времени&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Перенос на другую дату&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Отказ&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/approvalstatuses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Генерация коротких ссылок ==&lt;br /&gt;
В некоторых случаях, например, при использовании в СМС, может потребоваться использование коротких ссылок на ЛК.&lt;br /&gt;
Для этого, необходимо отправить запрос с полной ссылкой, в ответ на который придёт хэш-код для ссылки.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса генерации коротких ссылок:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;shortlink&amp;gt;&lt;br /&gt;
  &amp;lt;link short=&amp;quot;0&amp;quot;&amp;gt; https://home.courierexe.ru/8/site/orders &amp;lt;/link&amp;gt;&lt;br /&gt;
&amp;lt;/shortlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''shortlink''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''link''' — Полная ссылка, для которой необходимо получить код. Обязательный элемент. Если атрибут '''short''' равен 1, то ответ не будет содержать XML, а только хэш-код.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос генерации коротких ссылок:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;shortlink&amp;gt;&lt;br /&gt;
  &amp;lt;hash&amp;gt;35AF350C&amp;lt;/hash&amp;gt;&lt;br /&gt;
&amp;lt;/shortlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''hash''' — Хэш-код ссылки.&lt;br /&gt;
&lt;br /&gt;
Далее, можно использовать ссылку на ЛК:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://home.courierexe.ru/35AF350C или curie.ru/35AF350C&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Примечание!''' Сервис коротких ссылок работает только для ресурсов компании MeaSoft.&lt;br /&gt;
&lt;br /&gt;
== Проверка надежности покупателя ==&lt;br /&gt;
Проверка надежности работает только для тарифа «Максимум» личного кабинета.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;mcheck&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;phones&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;89161147992&amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/phones&amp;gt;&lt;br /&gt;
&amp;lt;/mcheck&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;mcheck&amp;gt;&lt;br /&gt;
  &amp;lt;phones&amp;gt;&lt;br /&gt;
    &amp;lt;phone rate=&amp;quot;90&amp;quot;&amp;gt;89161147992&amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/phones&amp;gt;&lt;br /&gt;
&amp;lt;/mcheck&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Размещение страниц на своем сайте (iframe) ==&lt;br /&gt;
&lt;br /&gt;
В некоторых случаях имеет смысл разметить те или иные страницы на своем сайте.&lt;br /&gt;
&lt;br /&gt;
Например, чтобы клиенты могли рассчитать стоимость доставки не переходя по внешней ссылке, а там же, на сайте, калькулятор можно разместить прямо на странице такого сайта посредством так называемого фрейма — '''iframe'''.&lt;br /&gt;
&lt;br /&gt;
[https://ya.ru/search/?text=iframe Фрейм] — контейнер внутри обычной страницы, который позволяет загружать сторонние страницы. Пример загрузки калькулятора:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe id=&amp;quot;frame&amp;quot; src=&amp;quot;https://home.courierexe.ru/8/calculator&amp;quot;&amp;gt;&lt;br /&gt;
    Здесь должен отобразиться калькулятор&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для удобства пользователей вашего сайта можно указать язык интерфейса (который переключается непосредственно на сайте) параметром '''lang''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe id=&amp;quot;frame&amp;quot; src=&amp;quot;https://home.courierexe.ru/8/calculator?lang=2&amp;quot;&amp;gt;&lt;br /&gt;
    Здесь должен отобразиться калькулятор&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# При использовании iFrame могут не работать некоторые функции, например, подписка на push-уведомления на странице трекинга или отслеживания.&lt;br /&gt;
# Если язык не указать, то на страницах калькулятора и трекинга отображается свой переключатель языка. Если язык указан, то переключатель не отображается.&lt;br /&gt;
&lt;br /&gt;
Поддерживаемые языки и их коды:&lt;br /&gt;
:'''1''' — русский&lt;br /&gt;
:'''2''' — английский&lt;br /&gt;
:'''4''' — узбекский&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Оформление манифеста ==&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса на создание манифеста:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;store_from&amp;gt;1&amp;lt;/store_from&amp;gt;&lt;br /&gt;
    &amp;lt;store_to&amp;gt;2&amp;lt;/store_to&amp;gt;&lt;br /&gt;
    &amp;lt;trn_code&amp;gt;3&amp;lt;/trn_code&amp;gt;&lt;br /&gt;
    &amp;lt;sentdate&amp;gt;2024-11-07&amp;lt;/sentdate&amp;gt;&lt;br /&gt;
    &amp;lt;places&amp;gt;&lt;br /&gt;
        &amp;lt;place&amp;gt;&lt;br /&gt;
            &amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;&lt;br /&gt;
            &amp;lt;seal&amp;gt;7890AABBB&amp;lt;/seal&amp;gt;&lt;br /&gt;
        &amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;place&amp;gt;&lt;br /&gt;
            &amp;lt;number&amp;gt;2&amp;lt;/number&amp;gt;&lt;br /&gt;
            &amp;lt;seal&amp;gt;123456ABC&amp;lt;/seal&amp;gt;&lt;br /&gt;
        &amp;lt;/place&amp;gt;&lt;br /&gt;
    &amp;lt;/places&amp;gt;&lt;br /&gt;
    &amp;lt;addresses&amp;gt;&lt;br /&gt;
        &amp;lt;address&amp;gt;&lt;br /&gt;
            &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;place&amp;gt;1&amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;/address&amp;gt;&lt;br /&gt;
        &amp;lt;address&amp;gt;&lt;br /&gt;
            &amp;lt;code&amp;gt;67890&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;place&amp;gt;2&amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''manifest''' - Корневой контейнер. Обязательный элемент.&lt;br /&gt;
*'''auth''' - Авторизация. Обязательный элемент.&lt;br /&gt;
*'''store_from''' - код филиала отправителя. Обязательный элемент.&lt;br /&gt;
*'''store_to''' - код филиала получателя. Обязательный элемент.&lt;br /&gt;
*'''trn_code''' - код перевозчика. Обязательный элемент.&lt;br /&gt;
*'''sentdate''' - дата отправки манифеста. Не обязательный элемент.&lt;br /&gt;
*'''addresses''' - корневой элемент для списка заказов.&lt;br /&gt;
*:'''address''' - корневой элемент для заказа.&lt;br /&gt;
*::'''code''' - наш внутренний номер заказа. Обязательный элемент.&lt;br /&gt;
*::'''place''' - номер места заказа. Обязательный элемент, если переданы места.&lt;br /&gt;
*'''places''' - корневой элемент для списка мест.&lt;br /&gt;
*::'''place''' - корневой элемент для места.&lt;br /&gt;
*::'''number''' - номер места. Обязательный элемент.&lt;br /&gt;
*::'''seal''' - номер пломбы. Необязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
  &amp;lt;result&amp;gt;OK&amp;lt;/result&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
  &amp;lt;result error=&amp;quot;Текст ошибки&amp;quot;&amp;gt;ERROR&amp;lt;/result&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''manifest''' - Корневой контейнер. Обязательный элемент.&lt;br /&gt;
*'''result ''' - Результат. Принимает значения OK или ERROR.&lt;br /&gt;
*'''error''' - атрибут с текстом ошибки, если она была.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=API&amp;diff=15870</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=API&amp;diff=15870"/>
				<updated>2026-03-20T14:01:49Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Описание полей ответа статусов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 18px; color: #a92424; background-color: #ffdede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Изменения для 54-ФЗ'''&lt;br /&gt;
&lt;br /&gt;
Для передачи ставки НДС при оформлении заказа добавлен атрибут items &amp;gt; item &amp;gt; VATrate.&lt;br /&gt;
&lt;br /&gt;
При использовании услуги кассового обслуживания необходимо в обязательном порядке передавать состав заказа со ставками НДС.&lt;br /&gt;
&lt;br /&gt;
'''ВНИМАНИЕ'''&lt;br /&gt;
&lt;br /&gt;
В ближайшем будущем при подключенной услуге кассового обслуживания система '''перестанет''' принимать заказы без состава вложений.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 24px; color: #2424a9; background-color: #deffde; border: 1px solid #ebccd1; padding: 3px 10px 10px; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
'''English version is [[API Documentation|HERE!]]'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вы можете настроить интеграцию с MeaSoft средствами XML API по протоколу HTTP POST.&lt;br /&gt;
&lt;br /&gt;
API предназначено для интеграции клиентов (интернет-магазинов и прочих компаний-заказчиков доставки) с [http://courierexe.ru/our_clients.htm курьерскими службами], работающими под управлением системы [https://curie.ru/ MeaSoft].&lt;br /&gt;
&lt;br /&gt;
Если вы '''агрегатор''', передающий данные от клиентов, возможно, вам придется последовательно подключаться под разными пользователями, если курьерская служба должна вести раздельный учет взаиморасчетов по клиентам.&lt;br /&gt;
&lt;br /&gt;
Если вы '''подрядчик''', вы можете забирать заказы, используя значение client=AGENT в запросе [[#Пример запроса статуса заказа|statusreq]], и передавать статусы заказов, используя метод [[#Изменение статуса агентом|setorderinfo]]. Также для интеграций с подрядчиками у нас есть специальная платформа, но добавлять подрядчиков в нее можно только на нашей стороне. Присылайте нам коммерческое предложение, описание вашего сервиса, и мы с радостью его рассмотрим.&lt;br /&gt;
&lt;br /&gt;
При написании этой документации мы предполагаем, что ее читатель обладает необходимой для понимания квалификацией программиста, владеет XML и средой разработки, в которой он делает интеграцию. Если вы не программист, вам необходимо привлечь к проекту профессионального программиста.&lt;br /&gt;
&lt;br /&gt;
Если у вас после прочтения документации остались вопросы, задайте их по почте [mailto:support@courierexe.ru support@courierexe.ru]. Обязательно представьтесь, напишите ваши контактные данные (телефон, скайп) и название компании, с которой вы хотите интегрироваться.&lt;br /&gt;
&lt;br /&gt;
== Готовые интеграции ==&lt;br /&gt;
Для работы с популярными CMS и CRM-системами разработаны модули интеграции, перечисленные в таблице ниже.&lt;br /&gt;
&lt;br /&gt;
'''Модули распространяются бесплатно, без гарантий со стороны разработчика''', и не являются средством полной автоматизации взаимодействия с курьерской службой. Модули — это помощь разработчикам интернет-магазинов в построении интеграции с курьерскими службами. '''Ответственность за корректность передачи данных лежит на интернет-магазине.'''&lt;br /&gt;
Модули сторонних разработчиков обслуживаются и разрабатываются сторонними компаниями. Все вопросы по их приобретению и поддержке необходимо задавать им.&lt;br /&gt;
&lt;br /&gt;
Сообщайте нам свои пожелания по работе наших модулей. Мы учтем их в новых версиях.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width: 80%; margin: auto; background-color:#ffffff; border: 1px solid #999999;&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 35%;&amp;quot;|Система управления контентом (CMS)&lt;br /&gt;
!style=&amp;quot;width: 15%;&amp;quot;|Ссылка&lt;br /&gt;
!style=&amp;quot;width: 35%;&amp;quot;|Примечание&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:bitrix.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot; | [https://marketplace.1c-bitrix.ru/solutions/measoft.courier/ Установить] &amp;lt;!--[https://courierexe.ru/download/api/measoft.courier.zip Скачать] --&amp;gt;&lt;br /&gt;
|Поддерживает версии 20.5.0 и выше. Подробнее см. [[1C-Битрикс|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:prestashop.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/prestashop.zip Скачать]&lt;br /&gt;
|Поддерживает версии 1.5.2.0 и выше. Подробнее см. [[PrestaShop|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:OpencartOCStore.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/opencart.zip Скачать для версии 1.5.5.1]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc2.ocmod.zip Скачать для версии 2.0]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc2.3.ocmod.zip Скачать для версии 2.3]&amp;lt;br&amp;gt;[https://courierexe.ru/download/api/measoft_oc3.ocmod.zip Скачать для версии 3.0]&lt;br /&gt;
|Поддерживает версии с 1.5.5.1.&amp;lt;br&amp;gt;Скачивайте модули для своей версии OpenCart.&amp;lt;br&amp;gt;Подробнее см. [[OpenCart|описание]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:webasyst-shopscript.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.webasyst.ru/store/plugin/shop/measoftcourier/ Установить модуль]&amp;lt;br&amp;gt;[https://www.webasyst.ru/store/plugin/shipping/measoftcourier/ Установить плагин]&lt;br /&gt;
|Модуль предназначен для отправки заявок в КС, а плагин для расчета стоимости доставки при оформлении заказа. Инструкции есть в маркете, а также см. [[Webasyst|описание]].&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--|[[Файл:advantshop.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://promo-z.ru/ Сайт компании PROMO]&lt;br /&gt;
|Компания PROMO разработала этот модуль и настраивает интеграцию MeaSoft с ADVANTSHOP своим клиентам.&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
|[[Файл:insales.png|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Настраивается в [[Личный кабинет клиента|ЛК пользователя]]&lt;br /&gt;
|[[InSales|Инструкция по настройке]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:iiko.jpg|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Настраивается в [[Личный кабинет клиента|ЛК пользователя]]&lt;br /&gt;
|[[Iiko|Инструкция по настройке]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Leadvertex.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://blog.leadvertex.ru/news/2110-integraciya-s-kurerkami-na-platforme-measoft Настраивается] в ЛК [https://Leadvertex.ru Leadvertex]&lt;br /&gt;
|[[LeadVertex|Инструкция по настройке]]&amp;lt;br&amp;gt;Модуль разработан и поддерживается компанией LeadVertex.&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Retailcrm.png|center|x30px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.retailcrm.ru/ RetailCRM]&lt;br /&gt;
|[[RetailCRM|Настраивается]] в ЛК пользователя в системе&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:1C.jpg|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|-&lt;br /&gt;
|[https://infostart.ru/public/692790/ Альтернативный модуль сторонних разработчиков (1 версия)]&lt;br /&gt;
&lt;br /&gt;
[https://infostart.ru/public/1531484/ Альтернативный модуль сторонних разработчиков (2 версия)]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Joomla2.jpg|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/download/api/com_measoft.zip Скачать]&lt;br /&gt;
|Работает только с компонентом Virtuemart. Инструкция в архиве&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Amocrm.png|center|x44px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://www.amocrm.ru/extensions/measoft Описание на сайте amoCRM]&lt;br /&gt;
|Подробное описание настроек читайте [[amoCRM|тут]].&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|[[Файл:MoySclad.jpg|center|x30px]]&lt;br /&gt;
|style=&amp;quot;height:50px; text-align: center;&amp;quot;|&lt;br /&gt;
|[[МойСклад|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;height:50px; text-align: center;&amp;quot;|[https://itmdev.ru/ms/shipping/ Скачать модуль сторонних разработчиков]&lt;br /&gt;
|Интеграция МойСклад с курьерскими службами от сторонних разработчиков&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:wordpress.jpg|center|x80px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://courierexe.ru/wordpress/wordpress.php Скачать]&lt;br /&gt;
|[[Wordpress|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Cscart.png|center|x60px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[https://marketplace.cs-cart.com/measoft-en.html Установить]&lt;br /&gt;
|Поддерживает версии 4.10 и выше.&amp;lt;br&amp;gt;[[CS-Cart|Инструкция]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:webhooks.jpg|center|x100px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Читайте описание [[Webhook|на этой странице]]&lt;br /&gt;
|Передача информации о статусах и заказах в вашу систему&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Logo_tilda_black.png|center|x100px]]&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Читайте описание [[Tilda|на этой странице]]&lt;br /&gt;
|Работает только на платных тарифах&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание!''' В модулях систем PrestaShop и Joomla для отправки заказа в курьерскую службу зайдите в карточку заказа. В карточке отображается специальная форма отправки заказа, а если заказ отправлен, она позволяет проверить его статус:[[Файл:Form.png|400 px|Форма отправки заказа|none]]&lt;br /&gt;
&lt;br /&gt;
Для отображения списка пунктов выдачи есть [https://home.courierexe.ru/js/measoft_map.js JavaScript модуль]. Инструкция по использованию — внутри. Посмотреть пример работы можно [https://home.courierexe.ru/pvz_test.html здесь].&lt;br /&gt;
&lt;br /&gt;
== Тестовый аккаунт ==&lt;br /&gt;
Для отладки зайдите в тестовый личный кабинет по адресу [https://home.courierexe.ru/8 https://home.courierexe.ru/8], логин: login пароль: pass.&lt;br /&gt;
&lt;br /&gt;
На вкладке '''Интеграция''' &amp;gt; '''Отладка''' вы можете пробовать выполнять запросы к API для отладки, а также видеть историю отправленных запросов. Созданные заказы появятся в пункте основного меню '''Отслеживание'''.&lt;br /&gt;
&lt;br /&gt;
Для упрощения интеграции можно скачать [https://courierexe.ru/download/api/php_sample.zip пример обращения к сервису на PHP].&lt;br /&gt;
&lt;br /&gt;
== Рабочий аккаунт для подключения ==&lt;br /&gt;
Строка подключения выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание параметров:&lt;br /&gt;
* '''extra''' — экстра-код, уникальный идентификатор компании, с которой вы интегрируетесь.&lt;br /&gt;
* '''login''' — логин клиента;&lt;br /&gt;
* '''pass''' — пароль клиента;&lt;br /&gt;
* '''measoftid''' — системная переменная, используемая системой.&lt;br /&gt;
&lt;br /&gt;
Запросите эти данные у курьерской службы, к которой вы подключаетесь. Курьерская служба передает временный пароль, его нужно сменить после первого входа в [[Личный кабинет клиента|ЛК клиента]].&lt;br /&gt;
&lt;br /&gt;
== Авторизация курьерской службы ==&lt;br /&gt;
Если курьерской службе требуется подключение под своими учетным данными, используйте строку вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; clientcode=&amp;quot;123&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание:&lt;br /&gt;
* '''extra''' — уникальный идентификатор компании;&lt;br /&gt;
* '''login''' — логин курьерской службы;&lt;br /&gt;
* '''pass''' — пароль курьерской службы;&lt;br /&gt;
* '''clientcode''' — внутренний код клиента (вкладка '''Клиенты''', столбец «Внутренний код»).&lt;br /&gt;
&lt;br /&gt;
Вы можете узнать код экстра, логин и пароль курьерской службы в офисном приложении MeaSoft в справочнике '''Дополнительные возможности'''. Подробнее см. раздел «[[Личный кабинет курьерской службы#Подключение|Подключение]]».&lt;br /&gt;
&lt;br /&gt;
== Общие понятия ==&lt;br /&gt;
На стороне курьерской службы имеется веб-сервис по адресу: https://home.courierexe.ru/api/. &amp;lt;rspoiler text=&amp;quot;Еще есть порт 8443.&amp;quot;&amp;gt;Некоторые маршрутизаторы, используемые провайдерами, РНК и прочее, в попытке глубокого анализа могут повреждать трафик на стандартный порт 443. Сделано по тикету 10964.&amp;lt;/rspoiler&amp;gt; Обратите внимание на символ '''«/»''' (slash) в конце адреса.&lt;br /&gt;
&lt;br /&gt;
Тестовые авторизационные данные: логин: login пароль: pass, параметр extra: 8. Обратите внимание, что тестовая площадка для всех одна. Не нужно передавать в нее заказы с конфиденциальными данными, их смогут увидеть другие участники.&lt;br /&gt;
&lt;br /&gt;
Для использования интеграции в «боевом» режиме, запросите '''логин''', '''пароль''', и параметр '''extra''' у той компании, с которой интегрируетесь.&lt;br /&gt;
&lt;br /&gt;
Вы можете отправлять тестовые запросы к нашему сервису и видеть историю отправленных запросов в личном кабинете на закладке '''Интеграция'''.&lt;br /&gt;
&lt;br /&gt;
Клиент отправляет запросы к сервису методом HTTP POST, сервис обрабатывает запросы и возвращает результат выполнения. Все запросы и ответы передаются в формате XML.&lt;br /&gt;
Кодировка — UTF-8. Разделитель целой и дробной частей чисел — используется символ точки. Даты представляются в виде YYYY-MM-DD, время — HH:MM.&lt;br /&gt;
&lt;br /&gt;
В силу [https://ru.wikipedia.org/wiki/XML#.D0.A0.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC.D1.8B_.D0.BD.D0.B5.D0.BE.D0.B4.D0.BD.D0.BE.D0.B7.D0.BD.D0.B0.D1.87.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.82.D0.BA.D0.B8 особенностей языка XML], некоторые символы в тексте должны быть заменены: &amp;amp; на &amp;amp;amp;amp; &amp;lt; на &amp;amp;amp;lt; &amp;gt; на &amp;amp;amp;gt; &amp;quot; на &amp;amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Наше API принципиально работает только по HTTPS, так как передает конфиденциальные данные. В некоторых системах с этим возникают проблемы. Если ваша система не может полноценно работать с шифрованием, мы рекомендуем развернуть http-сервер у себя локально, установить [http://courierexe.ru/download/api/proxy.zip прокси на PHP]. &amp;lt;spoiler text=&amp;quot;Как запустить&amp;quot;&amp;gt;Для теста можете запустить его на сервере следующей командой: php -S &amp;lt;IP&amp;gt;:8080 proxy.php&lt;br /&gt;
где &amp;lt;IP&amp;gt; — это адрес вашего сервера, а 8080 порт, на котором будут приниматься запросы.&lt;br /&gt;
Тогда для обмена данными с нашим АПИ необходимо будет использовать адрес &amp;lt;IP&amp;gt;:8080&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
Доступность функций, описанных в этом разделе, зависит от [[Личный кабинет курьерской службы#Функции личного кабинета|тарифа вашего личного кабинета]].&lt;br /&gt;
&lt;br /&gt;
== Ограничения ==&lt;br /&gt;
С целью защиты от нецелевого использования сервисов и DDoS-атак действуют следующие ограничения:&lt;br /&gt;
* 30 запросов tracking с одного IP-адреса за 1 минуту (используйте statusreq!);&lt;br /&gt;
* 150 запросов с одного IP-адреса/акаунта за 1 минуту;&lt;br /&gt;
* 1500 запросов с одного IP-адреса/акаунта за 20 минут;&lt;br /&gt;
* 3000 запросов с одного аккаунта за 1 час;&lt;br /&gt;
* 200 Мб скачанных текстовых данных за 3 часа.&lt;br /&gt;
* Превышение количества запросов статусов несуществующих заказов над существующими&lt;br /&gt;
&lt;br /&gt;
В случае превышения IP-адрес или аккаунт блокируется на время до 3-х часов.&lt;br /&gt;
&lt;br /&gt;
Чтобы не происходило блокировок:&lt;br /&gt;
* не нужно «бомбить» наше API запросами статусов, последовательно перебирая номера всех ваших заказов, особенно запросами «tracking», они предназначены не для этого (смотрите описание). Особенно ровно в 00 минут каждого часа;&lt;br /&gt;
* не нужно каждые 5 минут делать запросы «Покажите статусы всех заказов за последние 3 месяца»;&lt;br /&gt;
* для проверки статусов заказов лучше всего использовать запросы [[#Передача только изменившихся статусов|измененных статусов changes=ONLY_LAST]];&lt;br /&gt;
* при запросе измененных статусов ОБЯЗАТЕЛЬНО нужно подтверждать успешное получение запросом [[#Передача только изменившихся статусов|commitlaststatus]].&lt;br /&gt;
* вы должны знать номера заказов, которые вы отправили. Не нужно перебирать номера всех заказов или брутфорсом перебирать все возможные номера.&lt;br /&gt;
* нужно проверять с каким ответом возвращаются ваши АПИ-запросы. Если мы отвечаем ошибкой, то даже запрос на создание нового заказа учитывается в количестве запросов.&lt;br /&gt;
&lt;br /&gt;
Мы абсолютно уверены, что данные ограничения на порядки превосходят необходимые объемы предоставления сервиса для решения любых задач. Если у вас возникают проблемы, вы не знаете, как уложиться в эти рамки — спросите у нас, мы обязательно поможем!&lt;br /&gt;
&lt;br /&gt;
== Оформление заказа ==&lt;br /&gt;
&lt;br /&gt;
=== Пример оформления заказа ===&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder newfolder=&amp;quot;NO&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Чип &amp;amp;amp; Дейл&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;78&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;124&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;1112223335&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;1234&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice VATrate=&amp;quot;20&amp;quot;&amp;gt;150&amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;discount&amp;gt;120&amp;lt;/discount&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;1&amp;lt;/return_service&amp;gt;&lt;br /&gt;
   &amp;lt;return_type&amp;gt;3&amp;lt;/return_type&amp;gt;&lt;br /&gt;
   &amp;lt;return_weight&amp;gt;5.1&amp;lt;/return_weight&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;22&amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;receiverpays&amp;gt;NO&amp;lt;/receiverpays&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;&lt;br /&gt;
   &amp;lt;department&amp;gt;Отдел&amp;lt;/department&amp;gt;&lt;br /&gt;
   &amp;lt;pickup&amp;gt;NO&amp;lt;/pickup&amp;gt;&lt;br /&gt;
   &amp;lt;acceptpartially&amp;gt;NO&amp;lt;/acceptpartially&amp;gt;&lt;br /&gt;
   &amp;lt;costcode&amp;gt;cc12345&amp;lt;/costcode&amp;gt;&lt;br /&gt;
   &amp;lt;respstore&amp;gt;4&amp;lt;/respstore&amp;gt;&lt;br /&gt;
   &amp;lt;uid&amp;gt;af11c7c6-6645-4a20-9604-be911a75722d&amp;lt;/uid&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; textArticle=&amp;quot;1&amp;quot; article=&amp;quot;1&amp;quot; volume=&amp;quot;3&amp;quot; origincountry=&amp;quot;AUT&amp;quot; GTD=&amp;quot;321546654&amp;quot; excise=&amp;quot;15.20&amp;quot; suppcompany=&amp;quot;ООО &amp;amp;quot;Рога и копыта&amp;amp;quot;&amp;quot; suppphone=&amp;quot;79161234567&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; govType=&amp;quot;2&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; extraTags=&amp;quot;&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; inshprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot; origincountry=&amp;quot;004&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; inshprice=&amp;quot;50&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; itemcode=&amp;quot;44123&amp;quot; article=&amp;quot;3&amp;quot; type=&amp;quot;1&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package strbarcode=&amp;quot;ORD0000001&amp;quot; mass=&amp;quot;1&amp;quot; message=&amp;quot;&amp;quot; quantity=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package strbarcode=&amp;quot;ORD0000002&amp;quot; mass=&amp;quot;2.5&amp;quot; message=&amp;quot;&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryset above_price=&amp;quot;100&amp;quot; return_price=&amp;quot;1000&amp;quot; VATrate=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;below below_sum=&amp;quot;500&amp;quot; price=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;below below_sum=&amp;quot;2000&amp;quot; price=&amp;quot;300&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/deliveryset&amp;gt;&lt;br /&gt;
   &amp;lt;advprices&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;123&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;10.5&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/advprice&amp;gt;&lt;br /&gt;
  &amp;lt;/advprices&amp;gt;&lt;br /&gt;
  &amp;lt;extrafields&amp;gt;&lt;br /&gt;
    &amp;lt;extrafield&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;courier_car&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;ВАЗ 2106, бежевый&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/extrafield&amp;gt;&lt;br /&gt;
  &amp;lt;/extrafields&amp;gt;&lt;br /&gt;
  &amp;lt;overall_volume&amp;gt;81&amp;lt;/overall_volume&amp;gt;&lt;br /&gt;
  &amp;lt;userid&amp;gt;user123&amp;lt;/userid&amp;gt;&lt;br /&gt;
  &amp;lt;groupid&amp;gt;customer&amp;lt;/groupid&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание элементов для оформления заказа ===&lt;br /&gt;
'''Обязательные поля'''&lt;br /&gt;
&lt;br /&gt;
Обязательными на уровне системы являются только 3 поля: receiver-&amp;gt;company или receiver-&amp;gt;person, receiver-&amp;gt;address и receiver-&amp;gt;phone. Так же в настройках системы сама курьерская служба может назначить какие-то дополнительные поля обязательными, тогда, если вы их не укажете, получите сообщение об ошибке.&lt;br /&gt;
&amp;lt;spoiler text=&amp;quot;Пример минимально возможного заказа&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;order&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;(495)123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка, 38&amp;lt;/address&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей'''&lt;br /&gt;
&lt;br /&gt;
* '''neworder''' — Корневой контейнер, обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
:* '''''newfolder''''' — Признак нового заказа YES/NO. Если стоит YES, то в системе курьерской службы для данной корреспонденции создастся новый заказ. Необязательный элемент.&lt;br /&gt;
&lt;br /&gt;
* '''order''' — Контейнер для описания одного заказа, обязательный элемент. В одном контейнере '''neworder''' может быть много контейнеров '''order''' для создания нескольких заказов одним запросом.&lt;br /&gt;
&lt;br /&gt;
:* '''''orderno''''' — Номер заказа. Если присваивается клиентом — указывается здесь. Если не присваивается — можно оставить пустым, система сгенерирует свой номер, и вернет его в ответе. Система проверяет '''у клиента''' наличие заказов с указанным номером в '''пределах текущего календарного года''', которые '''не являются недоставленными''', и в случае их существования — заказ создан не будет, а в ответе вернется ошибка 17 «Such number exists».&lt;br /&gt;
Если не указан штрихкод (поле barcode), и значение поля подходит для использования его в качестве штрихкода, данное значение будет скопировано в поле «Штрихкод». Это накладывает ограничения в частности, на длину указанного поля (25 знаков, чтобы работали стандартные печатные формы).&lt;br /&gt;
&lt;br /&gt;
* '''barcode''' — Штрихкод заказа. Если клиент штрихкодирует свои отправления и штрихкод отличается от номера заказа, в этом поле указывается штрихкод. Если ШК содержит кириллицу или малое количество символов, то формируется ШК в формате EAN13.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler text=&amp;quot;Заполнение номера заказа (шифра) и штрих-кода&amp;quot;&amp;gt;&lt;br /&gt;
Шифр и штрих-код заполняются исходя из начальных значений:&lt;br /&gt;
&lt;br /&gt;
# Если шифр и ШК пустые - оба поля заполняются автоматически значением вида XXX#YYY, а после ШК проверяется на корректность (валидируется)&lt;br /&gt;
# Если ШК пустой, а шифр заполнен - ШК заполняется значением из шифра и валидируется&lt;br /&gt;
# Если шифр пустой, а ШК заполнен - шифр заполняется значением из ШК, после чего ШК валидируется&lt;br /&gt;
# Если оба непустые - валидируется ШК, шифр не проверяется&lt;br /&gt;
&lt;br /&gt;
Корректный (валидный) ШК отвечает следующим требованиям:&lt;br /&gt;
* длина не меньше 5 символов&lt;br /&gt;
* значение не меньше значения переменной &amp;lt;mparam code=&amp;quot;MinPrePrintedNum&amp;quot;/&amp;gt;&lt;br /&gt;
* содержит символы, которые можно использовать для формирования штрих-код а формате Code128 (т.е.все печатные символы, кроме кириллицы)&lt;br /&gt;
&lt;br /&gt;
Если ШК не прошел проверку, то:&lt;br /&gt;
* если переменная &amp;lt;mparam code=&amp;quot;StoreInvLength&amp;quot;/&amp;gt; равна 0, ШК заполняются автоматически значением вида XXX#YYY (или приравнивается шифру в том же формате)&lt;br /&gt;
* если переменная &amp;lt;mparam code=&amp;quot;StoreInvLength&amp;quot;/&amp;gt; больше 0, ШК заполняются автоматически сквозным номером (если шифр в формате XXX#YYY, то шифр приравнивается ШК)&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В случае наличия нескольких мест и раздельной их маркировки в этом поле допустимы маски в виде символов подчеркивания, говорящие о позициях штрихкода, переменных для разных мест в рамках одного заказа.&amp;lt;br&amp;gt;&lt;br /&gt;
''Например'': В заказе номер 123 имеется 20 товарных вложений, которые упакованы в 3 транспортных места. Клиент формирует 3 штрихкода на транспортные места: CLNT0012301, CLNT0012302, CLNT0012303, где CLNT — префикс клиента, 00123 — номер заказа, 01-03 — номер транспортного места в заказе. В поле barcode нужно указать CLNT00123__ (система поймет, что 2 последних символа могут быть любыми и будут отражать штрихкоды к одному заказу). Если вы не сами печатаете накладные с указанным штрихкодом, то указанный штрихкод не должен быть длиннее 25 знаков, иначе он не поместится на стандартных печатных формах.&lt;br /&gt;
&lt;br /&gt;
* '''sender''' — Информация о отправителе заказа. Необязательный контейнер.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;Название компании отправителя&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Контактное лицо отправителя&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;Телефон, Email отправителя&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Город отправителя в формате &amp;quot;Москва город&amp;quot;&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Адрес отправителя&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;Дата забора в формате &amp;quot;YYYY-MM-DD&amp;quot;&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;Желаемое время забора в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;Желаемое время забора в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''receiver''' — Информация о получателе заказа. Обязательный контейнер.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;Название компании получателя&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Контактное лицо получателя&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;Телефон, Email получателя&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;Код региона&amp;quot;&amp;gt;Город получателя в формате &amp;quot;Москва город&amp;quot;&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Адрес получателя&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;ИНН получателя&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;Код пункта самовывоза по справочнику&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;Дата доставки в формате &amp;quot;YYYY-MM-DD&amp;quot;&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;Желаемое время доставки в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;Желаемое время доставки в формате &amp;quot;HH:MM&amp;quot;&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;Пин-код для подтверждения получателем&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''company''' — Компания-получатель.&lt;br /&gt;
* '''person''' — Контактное лицо. ''Должно быть заполнено хотя бы одно из полей — company или person!''&lt;br /&gt;
* '''phone''' — Телефон. Можно указывать несколько телефонов, E-mail в этом поле.&lt;br /&gt;
* '''town''' — Город.&lt;br /&gt;
* '''pvz''' — Код пункта самовывоза по справочнику. Кроме того, ПВЗ можно указать в строке '''''address''''' в виде:&lt;br /&gt;
:* код ПВЗ в нашей системе&lt;br /&gt;
:* код ПВЗ в системе подрядчика&lt;br /&gt;
:* наименование ПВЗ в виде строки &amp;quot;ПВЗ &amp;quot; + «Наименование ПВЗ». &lt;br /&gt;
&lt;br /&gt;
При указании ПВЗ в поле адреса необходимо проверять значение поля город получателя (он должен соответствовать данным ПВЗ) либо не передавать его вообще.&lt;br /&gt;
&lt;br /&gt;
Для тега города '''town''' можно указать код региона в атрибуте '''''regioncode''''' из [[#Справочник регионов|справочника регионов]]. Поиск будет производиться в указанном регионе.&lt;br /&gt;
&lt;br /&gt;
Также можно указать страну получателя в атрибуте '''''country''''' в соответствии с [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
&lt;br /&gt;
Кроме того, поиск города осуществляется с учетом почтового индекса, указанного в теге '''zipcode'''.&lt;br /&gt;
&lt;br /&gt;
Поле '''Город''' контейнеров '''sender''' и '''receiver''' можно указать одним из следующих способов:&lt;br /&gt;
:* код населенного пункта из [[#Справочник городов|справочника городов]]&lt;br /&gt;
:* 13-ти значный код адресного классификатора КЛАДР&lt;br /&gt;
:* 36-ти значный код адресной системы &amp;lt;rspoiler text=&amp;quot;ФИАС&amp;quot;&amp;gt;Федеральная информационная адресная система — единый российский государственный адресный реестр&amp;lt;/rspoiler&amp;gt; (AOID)&lt;br /&gt;
:* название города (не рекомендуется!)&lt;br /&gt;
&lt;br /&gt;
* '''coords''' — Координаты получателя. Если не указаны, система будет геокодировать самостоятельно.&lt;br /&gt;
&lt;br /&gt;
* '''zipcode''' — Почтовый индекс.&lt;br /&gt;
* '''price''' — Сумма заказа (наложенный платеж)  - денежные средства, которые курьер должен забрать у получателя в пользу заказчика. В случае наличия контейнера items значение этого параметра будет проигнорировано и рассчитано автоматически.&lt;br /&gt;
* '''inshprice''' — Объявленная ценность. Если явно не указана сумма — автоматически считается как сумма по товарам.&lt;br /&gt;
* '''deliveryprice''' — Стоимость доставки, которая устанавливается заказчиком и будет взиматься с получателя в пользу заказчика. Не имеет отношения к стоимости доставки самой курьерской службы, которая рассчитывается в соответствии с тарифамии, не указывается при оформлении заказа и добавляется в заказ автоматически при его обработке курьерской службой. В случае наличия контейнера items в него будет добавлено вложение «Доставка».&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов.&lt;br /&gt;
* '''discount''' — Сумма скидки. Скидка «размазывается» по товарным вложениям, сумма НП уменьшается на сумму скидки. При этом вложение Скидка не создается. ВНИМАНИЕ, при использовании этого тега общая сумма может расходиться на копейки из-за округления! Старайтесь не использовать этот тег, а указывать цену товаров уже с учетом скидок.&lt;br /&gt;
* '''paytype''' — Тип оплаты заказа получателем. Принимает значения:&lt;br /&gt;
:* CASH — Наличными при получении (по-умолчанию)&lt;br /&gt;
:* CARD — Картой при получении&lt;br /&gt;
:* NO — Без оплаты. Этот тип оплаты передается, если заказ уже оплачен и не требует инкассации. API добавит к товарам строку предоплаты в сумму заказа, чтобы общая сумма была 0, однако в кассовом чеке будут все товары с ценами, и оплата предоплатой, как того требует 54-ФЗ.&lt;br /&gt;
:* OTHER — Прочее (Предусмотрен для того, чтобы оплата поступала непосредственно в курьерскую службу посредством прочих типов оплаты — таких как: вебмани, яденьги, картой на сайте, прочие платежные системы и т. д.)&lt;br /&gt;
:* OPTION — На выбор получателя. Этот тип оплаты нельзя передавать с заказом. Он выставляется автоматически в зависимости от настройки клиента.&lt;br /&gt;
* '''weight''' — Общий вес заказа в килограммах.&lt;br /&gt;
* '''quantity''' — Количество мест.&lt;br /&gt;
* '''service''' — Режим доставки (тип услуги) передается код из справочника «[[#Справочник Виды срочности|Виды срочности]]».&lt;br /&gt;
* '''type''' — Тип корреспонденции (отправления) передается код из справочника «Типы корреспонденции».&lt;br /&gt;
* '''return''' — Признак необходимости возврата. Принимает значения:&lt;br /&gt;
:* NO — Возврат не требуется&lt;br /&gt;
:* YES — Требуется возврат, например, документов&lt;br /&gt;
:* ONLY — Требуется забрать отправление у поставщика (см. раздел «[[Личный_кабинет_клиента#Привезти ко мне|Привезти ко мне]]»). &lt;br /&gt;
* '''return_service''' — Режим возврата (тип услуги) передается код из справочника «Виды срочности».&lt;br /&gt;
* '''return_type''' — Тип возвратной корреспонденции (отправления) передается код из справочника «Типы корреспонденции».&lt;br /&gt;
* '''return_weight''' — Общий вес возврата заказа в килограммах.&lt;br /&gt;
* '''enclosure''' — Вложение.&lt;br /&gt;
* '''instruction''' — Поручение — Примечание.&lt;br /&gt;
* '''courier''' — Запланированный курьер. Согласно коду курьера в КС2008.&lt;br /&gt;
* '''receiverpays''' — Признак оплаты стоимости доставки — услуг службы доставки получателем, а не заказчиком YES/NO.&lt;br /&gt;
* '''department''' — Подразделение, в котором оформляется заказ.&lt;br /&gt;
* '''costcode''' — Кост-код сотрудника.&lt;br /&gt;
* '''respstore''' — Код ответственного филиала. Для ответственного филиала в который передается заказ, требуется включение параметра &amp;quot;Разрешить клиенту передавать заказы в этот филиал&amp;quot;&lt;br /&gt;
* '''pickup''' — Признак оформления забора YES/NO. Если стоит YES, то весь заказ считается заданием на забор груза, а не на доставку! Применяется для вызова курьера к отправителю для забора других отправлений. ''Внимание!'' при добавлении в забор складских товаров, их тип '''''type''''' всегда должен быть установлен как [7] Забор товара, если будет указан другой тип, то он будет исправлен в момент добавления заказа на [7] Забор товара&lt;br /&gt;
* '''acceptpartially''' — Признак возможности частичного выкупа товаров отправления YES/NO.&lt;br /&gt;
* '''uid''' - Универсальный идентификатор заказа на стороне отправителя. Не обязательный параметр, ограниченного по времени действия. Время хранения в системе, - сутки.&lt;br /&gt;
&lt;br /&gt;
* '''items''' — Контейнер для описания вложений. &amp;lt;rspoiler text=&amp;quot;Необязательный контейнер&amp;quot;&amp;gt;Если для поставщика товара в системе MeaSoft не указаны полное наименование компании и ИНН в карточке клиента, заполните параметры &amp;lt;code&amp;gt;suppcompany&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;suppINN&amp;lt;/code&amp;gt; в этом контейнере. Отсутствие информации о поставщике приведет к [[Настройка модуля печати кассовых чеков#Ошибка фискализации (ошибка программирования реквизита 1226)|ошибке фискализации]].&amp;lt;/rspoiler&amp;gt;. Атрибуты:&lt;br /&gt;
:* '''''item''''' — Название вложения.&lt;br /&gt;
:* '''''quantity''''' — Количество единиц товара.&lt;br /&gt;
:* '''''mass''''' — Масса единицы товара в килограммах.&lt;br /&gt;
:* '''''volume''''' — Объемный вес единицы товара в килограммах. При указании объемного веса значение подставляется вместо массы&lt;br /&gt;
:* '''''length''''' — Длина единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''width''''' — Ширина единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''height''''' — Высота единицы товара (в сантиметрах).&lt;br /&gt;
:* '''''retprice''''' — Цена единицы товара. Округляется до копеек. Должна быть с учетом всех скидок и наценок. Для вложений типов 1, 2, 3 не может быть отрицательной. &amp;lt;!-- , либо мы сами посчитаем скидку при указании тега order-&amp;gt;discount --&amp;gt;&lt;br /&gt;
:* '''''inshprice''''' — Объявленная ценность единицы товара. Округляется до копеек. Если не указана принимается равной '''''retprice'''''.&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов. Если товар хранится в КС (смотрите '''article''' ниже), значение берется из номенклатуры. Иначе, если значение указано, берется указанное значение, если нет - значение из настроек фирмы КС. Значение «0» означает ставку «Без НДС», ставка «0%» на данный момент не поддерживается.&lt;br /&gt;
:* '''''barcode''''' — Штрихкод вложения.&lt;br /&gt;
:* '''''article''''' — Артикул вложения. ''Внимание!'' Указание артикула используется только тогда, когда товар хранится на ответственном хранении в службе доставки, и необходима комплектация. В этом случае система пытается привязать товар к [[API#Справочник номенклатуры|справочнику номенклатуры]]. Если товар в справочнике не найден — система выдаст соответствующую ошибку. Если по артикулу найдено несколько товаров — система выберет один из них случайным образом, что может привести к ошибочной комплектации! Если товар НЕ на ответственном хранении — артикул указывать НЕ нужно. Позиция попадет в систему просто текстом.&lt;br /&gt;
:* '''''itemcode''''' — Внутренний код товара, может использоваться вместо артикула. ''Внимание!'' Указание кода товара используется только тогда, когда товар хранится на ответственном хранении в службе доставки, и необходима комплектация. В этом случае система пытается привязать товар к [[API#Справочник номенклатуры|справочнику номенклатуры]]. Если товар в справочнике не найден — система выдаст соответствующую ошибку. Если товар НЕ на ответственном хранении — код товара указывать НЕ нужно.&lt;br /&gt;
:* '''''type''''' — Тип вложения. Принимает значения:&lt;br /&gt;
:: 1 — Товар. По-умолчанию.&lt;br /&gt;
:: 2 — Доставка. Такое вложение добавится автоматически, если заполнить order-&amp;gt;deliveryprice&lt;br /&gt;
:: 3 — Услуга&lt;br /&gt;
:: 4 — Предоплата. Указывается сумма. Поле quantity игнорируется, всегда «1». В заказе сумма будет отрицательной независимо от знака в запросе. Такое вложение добавится автоматически при указании order-&amp;gt;paytype=NO.&lt;br /&gt;
:: 6 — Оплата кредитом. Указывается сумма. Поле quantity игнорируется, всегда «1». В заказе сумма будет отрицательной независимо от знака в запросе.&lt;br /&gt;
:: 7 — Забор товара. Если товар нужно у получателя забрать, возможно — вернуть деньги, или его стоимость вычтется из суммы других товаров. У такого товара в заказе будет отрицательное количество независимо от знака в запросе.&lt;br /&gt;
:* '''''extcode''''' — Внешний код строки. Используется для идентификации строк заказов при получении статусов. Необязательное поле.&lt;br /&gt;
:* '''''origincountry''''' — Код страны-производителя в соответствии со [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
:* '''''GTD''''' — Номер ГТД.&lt;br /&gt;
:* '''''excise''''' — Сумма акциза.&lt;br /&gt;
:* '''''suppcompany''''' — Наименование компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''suppphone''''' — Номер телефона компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''suppINN''''' — ИНН компании поставщика, если отличается от заказчика.&lt;br /&gt;
:* '''''governmentCode''''' — Код товарной номенклатуры. Используется для [[Маркировка|маркированных товаров, например («Честный знак»)]]. Для кода '''Честный знак''' Нужно указывать все данные из нанесенного QR-кода кроме не читаемых символов (#29). Если код не известен — укажите знак вопроса «?», тогда курьер отсканирует код фактически передаваемого покупателю товара. Для некоторых процессов может использоваться значение «!» — в этом случае курьер сканирует серийный номер товара, но это не считается кодом маркировки. При этом, если указано значение «?» или «!» и quantity больше 1, то такое вложение растиражируется quantity раз.&lt;br /&gt;
:* '''''govType''''' — Тип маркировки товара. В данный момент существуют следующие типы маркировки:&lt;br /&gt;
:: 1 — Честный знак. По-умолчанию.&lt;br /&gt;
:: 2 — ГИИС ДМДК.&lt;br /&gt;
:: 3 — Серийный номер.&lt;br /&gt;
:* '''''message''''' — Строка сообщения.&lt;br /&gt;
:* '''''extraTags''''' — Строка в формате JSON для отправки в ОФД.&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1265 - значение отраслевого реквизита = код места деятельности аптеки&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1262 – идентификатор ФОИВ = &amp;quot;020&amp;quot; (константа ФОИВ МИНЗДРАВа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1263 - дата нормативного акта федерального органа исполнительной власти = &amp;quot;14.12.2018&amp;quot; (константа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1264 - номер нормативного акта федерального органа исполнительной власти = &amp;quot;1556&amp;quot;(константа)&lt;br /&gt;
&lt;br /&gt;
:: Тэг 1212 - Признак предмета расчета&lt;br /&gt;
&lt;br /&gt;
:: Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;item_industry_props&amp;quot;:{&amp;quot;tag1262&amp;quot;:&amp;quot;020&amp;quot;,&amp;quot;tag1263&amp;quot;:&amp;quot;14.12.2018&amp;quot;,&amp;quot;tag1264&amp;quot;:&amp;quot;1556&amp;quot;,&amp;quot;tag1265&amp;quot;:&amp;quot;tm=mdlp&amp;amp;sid=00000000XXXXXX&amp;quot;},&lt;br /&gt;
&amp;quot;tag1212&amp;quot;: &amp;quot;1&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для клиентов из '''Узбекистана''' необходимо указывать код ИКПУ и код упаковки в следующем формате:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;ikpu&amp;quot;:&amp;quot;123123123&amp;quot;,&amp;quot;packageCode&amp;quot;:&amp;quot;123456&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''packages''' — Контейнер для описания мест. Необязательный контейнер. Атрибуты:&lt;br /&gt;
:* '''''package''''' — Название места.&lt;br /&gt;
:* '''''code''''' — Внутренний код строки.&lt;br /&gt;
:* '''''strbarcode''''' — Штрихкод места.&lt;br /&gt;
:* '''''mass''''' — Масса места в килограммах.&lt;br /&gt;
:* '''''message''''' — Строка сообщения.&lt;br /&gt;
:* '''''length''''' — Длина товарного места (в сантиметрах).&lt;br /&gt;
:* '''''width''''' — Ширина товарного места (в сантиметрах).&lt;br /&gt;
:* '''''height''''' — Высота товарного места (в сантиметрах).&lt;br /&gt;
:* '''''quantity''''' — Количество мест с данным набором параметров. Действует ограничение на общее количество мест в заказе. Общее количество мест в заказе не может быть больше 1000.&lt;br /&gt;
&lt;br /&gt;
* '''deliveryset''' — настройка [[Дифференцированная стоимость доставки|дифференцированной стоимости доставки]]. Атрибуты:&lt;br /&gt;
:* '''''above_price''''' — стоимость в случае полного выкупа заказа (действует как «сумма от» последней границы, указанной в теге below_sum)&lt;br /&gt;
:* '''''return_price''''' — стоимость в случае возврата заказа&lt;br /&gt;
:* '''''VATrate''''' — Ставка НДС — целое число процентов.&lt;br /&gt;
&lt;br /&gt;
* '''below''' — граница стоимости настроек&lt;br /&gt;
:* '''''below_sum''''' — граница стоимости выкупаемого заказа&lt;br /&gt;
:* '''''price''''' — стоимость выкупаемого заказа до соответствующей границы&lt;br /&gt;
&lt;br /&gt;
* '''advprices''' — Контейнер для описания дополнительных услуг. Необязательный элемент. &amp;lt;span style=&amp;quot;color: red;&amp;gt;Для обработки в API включите дополнительные услуги в настройках полей [[Личный кабинет курьерской службы#Настройка личного кабинета клиента|заказов и заборов]]&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''''code''''' — код услуги.&lt;br /&gt;
:* '''''value''''' — значение услуги. Если тип услуги bool, то в значении передаем true.&lt;br /&gt;
&lt;br /&gt;
* '''extrafields''' — Контейнер для описания расширенных полей. Необязательный элемент. Может содержать несколько элементов extrafield&lt;br /&gt;
* '''extrafield''' — Контейнер для описания расширенного поля.&lt;br /&gt;
:* '''''name''''' — наименование переменной. Может содержать только латинские буквы, цифры и знак подчеркивания &amp;quot;_&amp;quot;, но начинаться может только с буквы. Максимальная длина - 20 символов.&lt;br /&gt;
:* '''''value''''' — значение переменной. Максимальная длина - 250 символов.&lt;br /&gt;
&lt;br /&gt;
* '''overall_volume''' — Общий объем, м3. Виртуальное поле. Необязательное. Из этого поля рассчитывается длина/высота/ширина места. Расчет срабатывает только если в каждом месте есть нулевые значения длины или высоты или ширины.&lt;br /&gt;
&lt;br /&gt;
* '''userid''' — Идентификатор пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенного покупателя.&lt;br /&gt;
&lt;br /&gt;
* '''groupid''' — Идентификатор группы пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенной группы покупателей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
При передаче заказов, у которых плановая дата доставки/забора меньше ближайшей возможной, дата автоматически меняется на самую раннюю возможную. [[Личный кабинет курьерской службы#Как считается минимальная дата возможной доставки|Подробнее]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В случае необходимости указания, помимо товаров, дополнительных услуг (например, ДОСТАВКА, комплектация, подъем на этаж и т. д.) — их нужно указать в том же контейнере items как товары, без артикула.&lt;br /&gt;
&lt;br /&gt;
=== Примеры ответов ===&lt;br /&gt;
При успешном выполнении запроса, создании заказа, возвращается сумма заказа в атрибуте orderprice, а также ошибка 0. При не успешном — номер ошибки и текст ее на английском языке в атрибуте errormsg, для некоторых ошибок выводится перевод на русский в атрибуте errormsgru.&lt;br /&gt;
В атрибут orderno помещается номер заказа, в атрибут barcode — штрихкод заказа.&lt;br /&gt;
&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23541&amp;quot; barcode=&amp;quot;67567#114&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;5000&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23542&amp;quot; barcode=&amp;quot;67567#115&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;6000&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23543&amp;quot; barcode=&amp;quot;67567#116&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;Success&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; orderprice=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt;   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;neworder&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23541&amp;quot; barcode=&amp;quot;67567#114&amp;quot; error=&amp;quot;67&amp;quot; errormsg=&amp;quot;Order barcode already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой штрихкод заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23542&amp;quot; barcode=&amp;quot;67567#115&amp;quot; error=&amp;quot;17&amp;quot; errormsg=&amp;quot;Order number already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой номер заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;createorder orderno=&amp;quot;AB23543&amp;quot; barcode=&amp;quot;67567#116&amp;quot; error=&amp;quot;67&amp;quot; errormsg=&amp;quot;Order barcode already exists in the database.&amp;quot; errormsgru=&amp;quot;Такой штрихкод заказа уже есть в базе.&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/neworder&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке авторизации'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
&amp;lt;error error=&amp;quot;1&amp;quot; errormsg=&amp;quot;authorization error&amp;quot;&amp;gt;&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке синтаксиса'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
   &amp;lt;error&amp;gt;column:1 line:11 message:expected '&amp;gt;'&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Коды и описание ошибок ===&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!Код ошибки&lt;br /&gt;
!Английское описание&lt;br /&gt;
!Русское описание&lt;br /&gt;
|-&lt;br /&gt;
|0||Success||Успешно&lt;br /&gt;
|-&lt;br /&gt;
|1||Wrong XML||Некорректный файл XML.&lt;br /&gt;
|-&lt;br /&gt;
|2||Lat is empty||Укажите широту.&lt;br /&gt;
|-&lt;br /&gt;
|3||Specify a valid «Price» field value.||Укажите корректное значение поля «Сумма».&lt;br /&gt;
|-&lt;br /&gt;
|4||Specify a valid «Weight» field value.||Укажите корректное значение поля «Вес».&lt;br /&gt;
|-&lt;br /&gt;
|5||Recepient city/town not found.||Город назначения не найден.&lt;br /&gt;
|-&lt;br /&gt;
|6||Sender city/town not found.||Город отправления не найден.&lt;br /&gt;
|-&lt;br /&gt;
|7||Specify the «Recipient address» field value.||Укажите значение поля «Адрес получателя».&lt;br /&gt;
|-&lt;br /&gt;
|8||Specify the «Recipient phone» field value.||Укажите значение поля «Телефон получателя».&lt;br /&gt;
|-&lt;br /&gt;
|9||Specify the «Recipient name» field value.||Укажите значение поля «ФИО получателя».&lt;br /&gt;
|-&lt;br /&gt;
|10||Specify a valid «Quantity» field value.||Укажите корректное значение поля «Количество».&lt;br /&gt;
|-&lt;br /&gt;
|11||Specify a valid «Declared value» field value.||Укажите корректное значение поля «Объявленная ценность».&lt;br /&gt;
|-&lt;br /&gt;
|12||Supplier SKU ID not found.||Артикул не найден.&lt;br /&gt;
|-&lt;br /&gt;
|17||Order number already exists in the database.||Такой номер заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|18||Order code already exists in the database.||Такой код заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|19||The delivery date format is not valid. Specify a date in YYYY-MM-DD format.||Укажите значение поля «Дата доставки» в формате гггг-мм-дд.&lt;br /&gt;
|-&lt;br /&gt;
|20||Specify a valid «Delivery mode» field value.||Укажите корректное значение поля «Режим доставки».&lt;br /&gt;
|-&lt;br /&gt;
|21||Specify a valid «Return trip mode» field value.||Укажите корректное значение поля «Режим возврата».&lt;br /&gt;
|-&lt;br /&gt;
|22||Specify a valid «Delivery type» field value.||Укажите корректное значение поля «Тип доставки».&lt;br /&gt;
|-&lt;br /&gt;
|23||Specify a valid «Return shipment type» field value.||Укажите корректное значение поля «Тип возврата».&lt;br /&gt;
|-&lt;br /&gt;
|30||Specify the «Order number» field value.||Укажите значение поля «Номер заказа».&lt;br /&gt;
|-&lt;br /&gt;
|31||Specify the «Barcode» field value.||Укажите значение поля «Штрихкод».&lt;br /&gt;
|-&lt;br /&gt;
|32||Specify the «Sender company» field value.||Укажите значение поля «Компания-отправитель».&lt;br /&gt;
|-&lt;br /&gt;
|33||Specify the «Sender name» field value.||Укажите значение поля «ФИО отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|34||Specify the «Sender phone» field value.||Укажите значение поля «Телефон отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|35||Specify the «Sender city/town» field value.||Укажите значение поля «Город отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|36||Specify the «Sender address» field value.||Укажите значение поля «Адрес отправителя».&lt;br /&gt;
|-&lt;br /&gt;
|37||Specify the «Pickup date» field value.||Укажите значение поля «Дата забора».&lt;br /&gt;
|-&lt;br /&gt;
|38||Specify the «Pickup time from» field value.||Укажите значение поля «Время забора с».&lt;br /&gt;
|-&lt;br /&gt;
|39||Specify the «Pickup time to» field value.||Укажите значение поля «Время забора до».&lt;br /&gt;
|-&lt;br /&gt;
|40||Specify the «Recipient company» field value.||Укажите значение поля «Компания-получатель».&lt;br /&gt;
|-&lt;br /&gt;
|41||Specify the «Recipient name» field value.||Укажите значение поля «ФИО получателя».&lt;br /&gt;
|-&lt;br /&gt;
|42||Specify the «Recipient phone» field value.||Укажите значение поля «Телефон получателя».&lt;br /&gt;
|-&lt;br /&gt;
|43||Specify the «Recipient city/town» field value.||Укажите значение поля «Город получателя».&lt;br /&gt;
|-&lt;br /&gt;
|44||Specify the «Recipient address» field value.||Укажите значение поля «Адрес получателя».&lt;br /&gt;
|-&lt;br /&gt;
|45||Specify the «Delivery date» field value.||Укажите значение поля «Дата доставки».&lt;br /&gt;
|-&lt;br /&gt;
|46||Specify the «Delivery time from» field value.||Укажите значение поля «Время доставки с».&lt;br /&gt;
|-&lt;br /&gt;
|47||Specify the «Delivery time to» field value.||Укажите значение поля «Время доставки до».&lt;br /&gt;
|-&lt;br /&gt;
|48||Specify the «Recipient postcode» field value.||Укажите значение поля «Индекс получателя».&lt;br /&gt;
|-&lt;br /&gt;
|49||Specify the «Weight» field value.||Укажите значение поля «Вес».&lt;br /&gt;
|-&lt;br /&gt;
|50||Specify the «Payment type» field value.||Укажите значение поля «Тип оплаты».&lt;br /&gt;
|-&lt;br /&gt;
|51||Specify the «Quantity» field value.||Укажите значение поля «Количество».&lt;br /&gt;
|-&lt;br /&gt;
|52||Specify the «Amount» field value.||Укажите значение поля «Сумма».&lt;br /&gt;
|-&lt;br /&gt;
|53||Specify the «Declared value» field value.||Укажите значение поля «Объявленная стоимость».&lt;br /&gt;
|-&lt;br /&gt;
|54||Specify the «Description» field value.||Укажите значение поля «Описание».&lt;br /&gt;
|-&lt;br /&gt;
|55||Specify the «Instruction» field value.||Укажите значение поля «Поручение».&lt;br /&gt;
|-&lt;br /&gt;
|56||Specify the «Delivery mode» field value.||Укажите значение поля «Режим доставки».&lt;br /&gt;
|-&lt;br /&gt;
|57||Specify the «Shipment type» field value.||Укажите значение поля «Тип отправления».&lt;br /&gt;
|-&lt;br /&gt;
|58||Specify whether return trip is required.||Укажите значение поля «Необходимость возврата».&lt;br /&gt;
|-&lt;br /&gt;
|59||Specify the «Return trip mode» field value.||Укажите значение поля «Режим возврата»&lt;br /&gt;
|-&lt;br /&gt;
|60||Specify the «Return shipment type» field value.||Укажите значение поля «Тип возврата».&lt;br /&gt;
|-&lt;br /&gt;
|61||Specify barcode.||Укажите штрихкод.&lt;br /&gt;
|-&lt;br /&gt;
|62||Specify item weight.||Укажите массу единицы товара.&lt;br /&gt;
|-&lt;br /&gt;
|63||Specify item quantity.||Укажите количество товара.&lt;br /&gt;
|-&lt;br /&gt;
|64||Specify item price.||Укажите цену единицы товара.&lt;br /&gt;
|-&lt;br /&gt;
|65||Specify item name.||Укажите название товара.&lt;br /&gt;
|-&lt;br /&gt;
|66||Wrong XLS file||Некорректный файл XLS.&lt;br /&gt;
|-&lt;br /&gt;
|67||Order barcode already exists in the database.||Такой штрихкод заказа уже есть в базе.&lt;br /&gt;
|-&lt;br /&gt;
|68||Select the «Payment by recipient» field value.||Укажите значение поля «Оплата получателем».&lt;br /&gt;
|-&lt;br /&gt;
|69||Specify department.||Укажите отдел.&lt;br /&gt;
|-&lt;br /&gt;
|70||Specify service partner code.||Укажите значение поля «Код подрядчика».&lt;br /&gt;
|-&lt;br /&gt;
|71||Date cannot be earlier than tomorrow.||Дата не может быть раньше чем завтра.&lt;br /&gt;
|-&lt;br /&gt;
|72||Date cannot be later than 15 days from now.||Дата не может быть позже чем через 15 дней.&lt;br /&gt;
|-&lt;br /&gt;
|73||Date cannot be earlier than today.||Дата не может быть раньше чем сегодня.&lt;br /&gt;
|-&lt;br /&gt;
|74||Date cannot be later than {0} days from now.||Дата не может быть позже, чем через {0} дней.&lt;br /&gt;
|-&lt;br /&gt;
|75||Specify a valid «Item weight» field value.||Укажите корректное значение поля «Масса единицы товара».&lt;br /&gt;
|-&lt;br /&gt;
|76||Specify a valid «Quantity» field value.||Укажите корректное значение поля «Количество товара».&lt;br /&gt;
|-&lt;br /&gt;
|77||Specify a valid «Item price» field value.||Укажите корректное значение поля «Цена единицы товара».&lt;br /&gt;
|-&lt;br /&gt;
|78||Specify a valid «Delivery time from» field value.||Укажите корректное значение поля «Время доставки с».&lt;br /&gt;
|-&lt;br /&gt;
|79||Specify a valid «Delivery time to» field value.||Укажите корректное значение поля «Время доставки до».&lt;br /&gt;
|-&lt;br /&gt;
|80||Specify a valid «Pickup time from» field value.||Укажите корректное значение поля «Время забора с».&lt;br /&gt;
|-&lt;br /&gt;
|81||Specify a valid «Pickup time to» field value.||Укажите корректное значение поля «Время забора до».&lt;br /&gt;
|-&lt;br /&gt;
|82||Specify a valid «Pickup point» field value.||Укажите корректное значение поля «ПВЗ».&lt;br /&gt;
|-&lt;br /&gt;
|83||Duplicate number in the registry.||Дублирование номера в реестре.&lt;br /&gt;
|-&lt;br /&gt;
|84||Duplicate barcode in the registry.||Дублирование штрихкода в реестре.&lt;br /&gt;
|-&lt;br /&gt;
|85||Specify a valid «Weight at return trip» field value.||Укажите корректное значение поля «Вес возврата».&lt;br /&gt;
|-&lt;br /&gt;
|86||Specify the «Weight at return trip» field value.||Укажите значение поля «Вес возврата».&lt;br /&gt;
|-&lt;br /&gt;
|87||Order weight exceeds the allowed maximum for the pickup point.||Вес превышает допустимое значение для этого ПВЗ.&lt;br /&gt;
|-&lt;br /&gt;
|88||Pickup date cannot be earlier than today.||Дата забора не может быть раньше чем сегодня.&lt;br /&gt;
|-&lt;br /&gt;
|89||Specify a later delivery date.||Укажите более позднюю дату доставки.&lt;br /&gt;
|-&lt;br /&gt;
|90||Inappropriate «Weight» or «Pay type» field value for the selected city or town. Please review and correct the values.||Значение поля «Масса» или «Тип оплаты» для выбранного города указано некорректно или отсутствует. Проверьте значения и исправьте.&lt;br /&gt;
|-&lt;br /&gt;
|91||{deliverytype} {deliverydate} is {holidaytype}. Select another date.||{deliverytype} {deliverydate} является {holidaytype}. Выберите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|92||{deliverytype} {deliverydate} is {holidaytype}. Select another date.||{deliverytype} {deliverydate} является {holidaytype}. Выберите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|93||Add items.||Добавьте товары.&lt;br /&gt;
|-&lt;br /&gt;
|95||The selected pickup point only allows paid orders.||Выбранный ПВЗ выдает только предоплаченные заказы.&lt;br /&gt;
|-&lt;br /&gt;
|96||Order barcode exceeds the allowed maximum (25) symbols.||Длина штрихкода заказа превышает максимально допустимую (25 символов).&lt;br /&gt;
|-&lt;br /&gt;
|97||The pickup date format is not valid. Specify a date in YYYY-MM-DD format.||Укажите значение поля «Дата забора» в формате гггг-мм-дд.&lt;br /&gt;
|-&lt;br /&gt;
|98||Specify the cost code.||Укажите значение поля «Кост-код».&lt;br /&gt;
|-&lt;br /&gt;
|99||The item is not in stock.||Товар отсутствует на складе.&lt;br /&gt;
|-&lt;br /&gt;
|100||Set the quantity of the item marked with Chestny ZNAK to one.||Укажите количество товара, маркированного кодом «Честный ЗНАК», равным единице.&lt;br /&gt;
|-&lt;br /&gt;
|101||Quantity of item Delivery cannot be greater than 1||Количество вложений типа «Доставка» не может быть более 1.&lt;br /&gt;
|-&lt;br /&gt;
|102||А database error occurred. Please try later again.||Ошибка базы данных. Попробуйте позже.&lt;br /&gt;
|-&lt;br /&gt;
|103||Order not found.||Заказ не найден.&lt;br /&gt;
|-&lt;br /&gt;
|104||Cannot edit order in the current status.||Невозможно изменить заказ в текущем статусе.&lt;br /&gt;
|-&lt;br /&gt;
|105||Discount cannot be greater than the order amount. Specify a smaller value.||Размер скидки не может превышать сумму заказа. Укажите меньшее значение скидки.&lt;br /&gt;
|-&lt;br /&gt;
|106||Specify the correct additional service code.||Укажите корректный код дополнительной услуги.&lt;br /&gt;
|-&lt;br /&gt;
|107||Specify the correct additional service name.||Укажите корректное значение поля [advprice][value].&lt;br /&gt;
|-&lt;br /&gt;
|108||Specify the «Additional services» field value.||Укажите значение поля «Дополнительные услуги».&lt;br /&gt;
|-&lt;br /&gt;
|110||Specify the correct TIN.||Укажите корректный ИНН.&lt;br /&gt;
|-&lt;br /&gt;
|111||Specify the correct IIN (KZ).||Укажите корректный ИИН (КЗ).&lt;br /&gt;
|-&lt;br /&gt;
|112||Specify the overall volume.||Укажите общий объем.&lt;br /&gt;
|-&lt;br /&gt;
|113||Cannot apply the delivery mode. Select another delivery mode.||Режим доставки не подходит для заказа. Выберите другой режим.&lt;br /&gt;
|-&lt;br /&gt;
|114||The pickup point does not support the selected delivery mode. Specify another pickup point.||ПВЗ не подходит для выбранного режима доставки. Укажите другой ПВЗ.&lt;br /&gt;
|-&lt;br /&gt;
|115||Specify a valid recipient phone number.||Укажите корректный телефон получателя.&lt;br /&gt;
|-&lt;br /&gt;
|116||Specify recipient PIN code.||Укажите пин-код получателя.&lt;br /&gt;
|-&lt;br /&gt;
|117||Order date cannot be earlier than {0}. Specify another date.||Дата заказа не может быть раньше {0}. Укажите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|118||Pickup date cannot be earlier than {0}. Specify another date.||Дата забора не может быть раньше {0}. Укажите другую дату.&lt;br /&gt;
|-&lt;br /&gt;
|119||Specify the correct item type.||Укажите корректный тип вложения.&lt;br /&gt;
|-&lt;br /&gt;
|120||The pickup point does not accept payment by card.||В выбранном ПВЗ оплата картой не принимается.&lt;br /&gt;
|-&lt;br /&gt;
|121||Invalid item code format||Неверный формат кода товарной номенклатуры&lt;br /&gt;
|-&lt;br /&gt;
|122||Pickup time cannot be earlier than {0} hours.||Время забора не может быть раньше чем через {0} часа.&lt;br /&gt;
|-&lt;br /&gt;
|123||Pickup interval cannot be less than {0} minutes.||Интервал времени забора не может быть менее {0} минут. Укажите корректный интервал.&lt;br /&gt;
|-&lt;br /&gt;
|124||Specify a valid &amp;quot;Payment type&amp;quot; field value.||Укажите корректное значение поля «Тип оплаты».&lt;br /&gt;
|-&lt;br /&gt;
|125||Recepient city/town by postcode not found.||Город получателя по его индексу не найден.&lt;br /&gt;
|-&lt;br /&gt;
|126||Incorrect items prepayment and pickup.||Заказ не может содержать только вложения «Предоплата» и «Забор».&lt;br /&gt;
|-&lt;br /&gt;
|127||Package limit exceeded||Превышен лимит количества мест&lt;br /&gt;
|-&lt;br /&gt;
|128||Quantity of item Prepayment cannot be greater than 1||Количество вложений типа «Предоплата» не может быть больше 1.&lt;br /&gt;
|-&lt;br /&gt;
|129||Sum of cod must be equal sum of items||Объявленная стоимость должна быть равна сумме вложений.&lt;br /&gt;
|-&lt;br /&gt;
|130||Specify a valid respstore code.||Укажите код ответственного филиала.&lt;br /&gt;
|-&lt;br /&gt;
|131||Cannot edit, order has not been synchronized.||Невозможно изменить заказ пока он не синхронизирован.&lt;br /&gt;
|-&lt;br /&gt;
|132||Specify a valid &amp;quot;Recipient city/town&amp;quot; field value.||Укажите город получателя&lt;br /&gt;
|-&lt;br /&gt;
|133||Specify a valid &amp;quot;weight&amp;quot; for the town.||Укажите корректный вес для города&lt;br /&gt;
|-&lt;br /&gt;
|134||Specify a valid &amp;quot;paytype&amp;quot; for the town.||Укажите тип оплаты для города&lt;br /&gt;
|-&lt;br /&gt;
|135||Specify the correct SKU ID/code for item.||Укажите артикул/код вложения&lt;br /&gt;
|-&lt;br /&gt;
|136||Specify warehouse goods in the order.||Укажите вложения в заказе&lt;br /&gt;
|-&lt;br /&gt;
|137||The order's date of creation is more than 60 days ago.||Заказ создан более 60 дней назад&lt;br /&gt;
|-&lt;br /&gt;
|138||Specify a valid &amp;quot;Package dimension&amp;quot; field value.||Укажите корректные габариты места&lt;br /&gt;
|-&lt;br /&gt;
|139||Wrong type of XML query||Ошибка запроса&lt;br /&gt;
|-&lt;br /&gt;
|140||Duplicate item code in the order.||Дублирование кода вложения в заказе&lt;br /&gt;
|-&lt;br /&gt;
|141||Duplicate additional service in the order.||Дублирование кода дополнительной услуги в заказе&lt;br /&gt;
|-&lt;br /&gt;
|144||Incorrect extrafields.||Некорректные расширенные поля.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Передача значений полей в форме создания заказа в Личном Кабинете через GET параметры ===&lt;br /&gt;
Если вам требуется передавать значения полей в форме создания заказа в Личном Кабинете через GET параметры, то вы можете подробно ознакомиться с этим на данной странице - [[Личный_кабинет_клиента#Передача и подстановка значений полей формы создания заказа через GET параметры]]&lt;br /&gt;
&lt;br /&gt;
== Запрос статуса заказов ==&lt;br /&gt;
&lt;br /&gt;
=== Пример запроса статуса заказа ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;orderno2&amp;gt;5678&amp;lt;/orderno2&amp;gt;&lt;br /&gt;
  &amp;lt;ordercode&amp;gt;34234&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
  &amp;lt;givencode&amp;gt;234534&amp;lt;/givencode&amp;gt;&lt;br /&gt;
  &amp;lt;uid&amp;gt;af11c7c6-6645-4a20-9604-be911a75722d&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;datefrom&amp;gt;2016-07-21&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
  &amp;lt;dateto&amp;gt;2016-07-21&amp;lt;/dateto&amp;gt;&lt;br /&gt;
  &amp;lt;target&amp;gt;Автозавод&amp;lt;/target&amp;gt;&lt;br /&gt;
  &amp;lt;done&amp;gt;ONLY_NOT_DONE&amp;lt;/done&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains/&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts/&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;500&amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание полей запроса статуса ===&lt;br /&gt;
'''statusreq''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''client''' — Признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — Признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — Признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
* '''orderno''' — Идентификатор заказа у клиента (шифр). Необязательный элемент.&lt;br /&gt;
* '''ordercode''' — Внутренний код заказа. Необязательный элемент.&lt;br /&gt;
* '''orderno2''' — Номер заказа из срочных. Необязательный элемент. &lt;br /&gt;
* '''uid''' — Уникальный идентификатор, если он был добавлен при создании заказа. Необязательный элемент. Запрос информации по uid возможен в течении суток после создания заказа&lt;br /&gt;
* '''datefrom''' — Дата заказа «с». Необязательный элемент.&lt;br /&gt;
* '''dateto''' — Дата заказа «по». Необязательный элемент.&lt;br /&gt;
* '''target''' — Строка поиска. Позволяет указать текст, который содержится в названии компании или адресе получателя.&lt;br /&gt;
* '''done''' — Может принимать значения:&lt;br /&gt;
:* ONLY_DONE — Только доставленные (имеются в виду успешные статусы, например, '''Доставлен''' или '''Частично доставлен''')&lt;br /&gt;
:* ONLY_NOT_DONE — Только не доставленные (заказы, которые не являются доставленными, например, '''Не доставлен''' или '''Утерян''')&lt;br /&gt;
:* ONLY_NEW — Только новые&lt;br /&gt;
:* ONLY_DELIVERY — Только заказы в обработке — заказы, находящиеся в любом статусе, кроме конечных: Доставлено, Не доставлено, Отменён и т. д.&lt;br /&gt;
:* ''Пусто'' — все корреспонденции&lt;br /&gt;
&lt;br /&gt;
* '''changes''' — может принимать значение только ONLY_LAST. Если указан этот параметр, все остальные игнорируются. Описание данного режима приведено здесь: [[#Передача только изменившихся статусов|Передача только изменившихся статусов]]&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия фильтрации по «orderno». Все вложенные элементы одновременно накладывают условие «И». Минимум 5 символов!&lt;br /&gt;
:* '''namecontains''' — Поиск по номеру заказа(шифр), который содержит «orderno».&lt;br /&gt;
:* '''namestarts''' — Поиск по номеру заказа(шифр), который начинается с «orderno».&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Необязательный параметр. Дает возможность получить не все измененные заказы, а только какое-то определенное количество. Помогает на случай, если у вас скопилось очень много измененных заказов и нужно их грузить лимитировано. После каждой итерации нужно вызывать commitlaststatus с контейнером списка обработанных кодов, [[#Лимитирование запросов|читать подробнее]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# Периода запроса статусов (контейнеры '''datefrom''' и '''dateto''') ограничивается двумя месяцами — два месяца до даты '''«по»'''.&lt;br /&gt;
# Если не указаны обе даты — '''dateto''' принимается равной текущей дате.&lt;br /&gt;
# Если не указана дата '''dateto''' — она принимается равной '''datefrom''' плюс 2 месяца.&lt;br /&gt;
# Если не указана дата '''datefrom''' — она принимается равной '''dateto''' минус 2 месяца.&lt;br /&gt;
# Поиск по '''conditions''' работает только для «Номер заказа(шифр)» и только от 4 символов&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Примеры ответов ===&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq count=&amp;quot;23&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot; awb=&amp;quot;qwerty&amp;quot; orderno2=&amp;quot;123123&amp;quot; ordercode=&amp;quot;34534234&amp;quot; givencode=&amp;quot;2345334&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;contacts&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+74951234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;/contacts&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;23432&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;company&amp;gt;МВД&amp;lt;/company&amp;gt;&lt;br /&gt;
     &amp;lt;person&amp;gt;Иванов И.И.&amp;lt;/person&amp;gt;&lt;br /&gt;
     &amp;lt;phone&amp;gt;123-45-67 - Иван (916)234.45.21 Петр,mvd@mail.ru&amp;lt;/phone&amp;gt;&lt;br /&gt;
     &amp;lt;contacts&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+74951234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
       &amp;lt;phone&amp;gt;+79162344521&amp;lt;/phone&amp;gt;&lt;br /&gt;
       &amp;lt;email&amp;gt;mvd@mail.ru&amp;lt;/email&amp;gt;&lt;br /&gt;
     &amp;lt;/contacts&amp;gt;&lt;br /&gt;
     &amp;lt;inn&amp;gt;1112223335&amp;lt;/inn&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;153361&amp;quot; regioncode=&amp;quot;78&amp;quot; regionname=&amp;quot;Санкт-Петербург город&amp;quot;&amp;gt;Санкт-Петербург город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;area&amp;gt;Район 1&amp;lt;/area&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;126&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;clientcode&amp;gt;QWERTY&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
     &amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
     &amp;lt;deliveryPIN&amp;gt;1234&amp;lt;/deliveryPIN&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;paytype code=&amp;quot;1&amp;quot;&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;return_type&amp;gt;3&amp;lt;/return_type&amp;gt;&lt;br /&gt;
   &amp;lt;return_weight&amp;gt;5.1&amp;lt;/return_weight&amp;gt;&lt;br /&gt;
   &amp;lt;return_message&amp;gt;Доставлено в целости&amp;lt;/return_message&amp;gt;&lt;br /&gt;
   &amp;lt;return_date&amp;gt;2026-01-19&amp;lt;/return_date&amp;gt;&lt;br /&gt;
   &amp;lt;return_time&amp;gt;13:18:00&amp;lt;/return_time&amp;gt;&lt;br /&gt;
   &amp;lt;pickup&amp;gt;NO&amp;lt;/pickup&amp;gt;&lt;br /&gt;
   &amp;lt;print_check&amp;gt;YES&amp;lt;/print_check&amp;gt;&lt;br /&gt;
   &amp;lt;waittime&amp;gt;12&amp;lt;/waittime&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;   &lt;br /&gt;
   &amp;lt;currcoords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot; accuracy=&amp;quot;50&amp;quot; RequestDateTime=&amp;quot;2014-04-21 18:07:45&amp;quot;&amp;gt;&amp;lt;/currcoords&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Иванов Владимир Петрович&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;phone&amp;gt;+79161234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
   &amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice total=&amp;quot;158.6&amp;quot; delivery=&amp;quot;100.00&amp;quot; return=&amp;quot;58.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;1&amp;quot; price=&amp;quot;150&amp;quot;&amp;gt;База&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;2&amp;quot; price=&amp;quot;0&amp;quot;&amp;gt;% от объявленной стоимости&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;3&amp;quot; price=&amp;quot;8.6&amp;quot;&amp;gt;Топливный сбор&amp;lt;/advprice&amp;gt;&lt;br /&gt;
      &amp;lt;advprice code=&amp;quot;4&amp;quot; price=&amp;quot;0&amp;quot;&amp;gt;Округление&amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;receiverpays&amp;gt;NO&amp;lt;/receiverpays&amp;gt;&lt;br /&gt;
   &amp;lt;acceptpartially&amp;gt;NO&amp;lt;/acceptpartially&amp;gt;&lt;br /&gt;
   &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; color=&amp;quot;16777215&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;statushistory&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-05-30 10:20:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Новый&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;NEW&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 17:38:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Планируется отправка&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DEPARTURING&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 19:53:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Отправлено со склада&amp;quot; eventtown=&amp;quot;Москва город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DEPARTURE&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 07:41:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Получен складом&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;ACCEPTED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 09:17:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Выдан курьеру на доставку&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;DELIVERY&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен (предварительно)&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;COURIERDELIVERED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot;&lt;br /&gt;
             message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot; eventtown=&amp;quot;Санкт-Петербург город&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;/statushistory&amp;gt;&lt;br /&gt;
   &amp;lt;customstatecode&amp;gt;2&amp;lt;customstatecode&amp;gt;&lt;br /&gt;
   &amp;lt;clientstatecode&amp;gt;&amp;lt;/clientstatecode&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredto&amp;gt;Иванова, секр.&amp;lt;/deliveredto&amp;gt;&lt;br /&gt;
   &amp;lt;delivereddate&amp;gt;2016-06-02&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredtime&amp;gt;17:22&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
   &amp;lt;department&amp;gt;Отдел&amp;lt;/department&amp;gt;&lt;br /&gt;
   &amp;lt;costcode&amp;gt;cc12345&amp;lt;/costcode&amp;gt;&lt;br /&gt;
   &amp;lt;outstrbarcode&amp;gt;EXT123456&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
   &amp;lt;respstore&amp;gt;14&amp;lt;/respstore&amp;gt;&lt;br /&gt;
   &amp;lt;partner&amp;gt;Офис на Ленина&amp;lt;/partner&amp;gt;&lt;br /&gt;
   &amp;lt;arrival&amp;gt;2016-05-02 23:21&amp;lt;/arrival&amp;gt;&lt;br /&gt;
    &amp;lt;receipt fdNum=&amp;quot;124555&amp;quot; fnSn=&amp;quot;9289000100295555&amp;quot; kktNum=&amp;quot;0001611984048555&amp;quot; inn=&amp;quot;7722756555&amp;quot; fdValue=&amp;quot;2899551555&amp;quot; summ=&amp;quot;387.5&amp;quot; ofdUrl=&amp;quot;gate.ofd.ru&amp;quot;&amp;gt;https://ofd.ru/rec/7722756555/0001611984048555/9289000100295555/124555/2899551555&amp;lt;/receipt&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34533&amp;quot; extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; article=&amp;quot;1&amp;quot; returns=&amp;quot;0&amp;quot; origincountry=&amp;quot;040&amp;quot; GTD=&amp;quot;&amp;quot; excise=&amp;quot;0.00&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; govType=&amp;quot;1&amp;quot; suppcompany=&amp;quot;Поставщик&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; suppphone=&amp;quot;79161234567&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34456&amp;quot; extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot; govType=&amp;quot;1&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34421&amp;quot; extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; VATrate=&amp;quot;18&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; itemcode=&amp;quot;44123&amp;quot; article=&amp;quot;3&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot; govType=&amp;quot;1&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package code=&amp;quot;33331&amp;quot; strbarcode=&amp;quot;ORD0000001&amp;quot; mass=&amp;quot;1&amp;quot; message=&amp;quot;&amp;quot; got=&amp;quot;YES&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package code=&amp;quot;33332&amp;quot; strbarcode=&amp;quot;ORD0000002&amp;quot; mass=&amp;quot;2.5&amp;quot; message=&amp;quot;&amp;quot; got=&amp;quot;NO&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;extrafields&amp;gt;&lt;br /&gt;
      &amp;lt;extrafield&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;courier_car&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;ВАЗ 2106, бежевый&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/extrafield&amp;gt;&lt;br /&gt;
   &amp;lt;/extrafields&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа если нет заказов'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq count=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке авторизации'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
&amp;lt;error error=&amp;quot;1&amp;quot; errormsg=&amp;quot;authorization error&amp;quot;&amp;gt;&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа при ошибке синтаксиса'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;request&amp;gt;&lt;br /&gt;
   &amp;lt;error&amp;gt;column:1 line:11 message:expected '&amp;gt;'&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/request&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Описание полей ответа статусов ===&lt;br /&gt;
Все поля ответа соответствуют структуре order при создании заказа, с некоторыми добавлениями:&lt;br /&gt;
&lt;br /&gt;
* Атрибуты контейнера '''order''':&lt;br /&gt;
:* '''''awb''''' — Номер накладной в системе курьерской службы.&lt;br /&gt;
:* '''''orderno2''''' — Номер накладной в подсистеме срочной доставки курьерской службы.&lt;br /&gt;
:* '''''ordercode''''' — внутренний код заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
:* '''''givencode''''' — внутренний код заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
&lt;br /&gt;
*'''paytype''' - Тип оплаты заказа получателем. Принимает значения:&lt;br /&gt;
:: CASH - Наличными при получении (по-умолчанию)&lt;br /&gt;
:: CARD - Картой при получении&lt;br /&gt;
:: NO - Без оплаты.&lt;br /&gt;
:: OTHER - Прочее (Предусмотрен для того, чтобы оплата поступала непосредственно в курьерскую службу посредством прочих типов оплаты - таких как: вебмани, яденьги, картой на сайте, прочие платежные системы и т.д.)&lt;br /&gt;
* Атрибуты контейнера '''paytype''':&lt;br /&gt;
** '''''code''''' - (integer) внутренний код типа оплаты заказа в системном справочнике &amp;quot;Типы оплаты корреспонденции&amp;quot;. Не обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* атрибут '''''code''''' контейнера '''item''' — внутренний код строки заказа в системе, применяется для некоторых внутренних операций.&lt;br /&gt;
:* '''''returns''''' — количество данного товара, от которого отказался получатель. Не нулевое только в случае частичного отказа.&lt;br /&gt;
&lt;br /&gt;
* атрибут '''''got''''' контейнера '''package''' — признак принятого места YES / NO.&lt;br /&gt;
:* '''''returns''''' — количество данного товара, от которого отказался получатель. Не нулевое только в случае частичного отказа.&lt;br /&gt;
&lt;br /&gt;
* '''''area''''' в контейнере '''receiver''' — район/метро получателя.&lt;br /&gt;
* '''''coords''''' в контейнере '''receiver''' — координаты получателя.&lt;br /&gt;
* '''''deliveryPIN''''' в контейнере '''receiver''' — Пин-код.&lt;br /&gt;
* '''pickup''' — признак оформления забора, возможные значения: '''YES''', '''NO'''. Если указано '''YES''', то весь заказ считается заданием на забор груза, а не на доставку.&lt;br /&gt;
* '''currcoords''' — текущие координаты заказа. Атрибуты:&lt;br /&gt;
:* '''''lat''''' — широта&lt;br /&gt;
:* '''''lon''''' — долгота&lt;br /&gt;
:* '''''accuracy''''' — точность в метрах&lt;br /&gt;
:* '''''RequestDateTime''''' — дата/время последнего обновления координат.&lt;br /&gt;
&lt;br /&gt;
* '''courier''' — Данные курьера, которому выдан заказ. Если заказ не выдан, то выводятся данные запланированного курьера.&lt;br /&gt;
* '''waittime ''' — Время ожидания курьера.&lt;br /&gt;
* '''deliveryprice''' — Стоимость услуг в валюте расчетов с клиентом. Атрибуты:&lt;br /&gt;
:* '''''total''''' — общая стоимость услуг&lt;br /&gt;
:* '''''delivery''''' — стоимость доставки «Туда»&lt;br /&gt;
:* '''''return''''' — стоимость доставки «Обратно» (если order-&amp;gt;return=YES)&lt;br /&gt;
Тэг '''deliveryprice''' включает список дополнительных услуг (только для тарифа «Премиум»):&lt;br /&gt;
:* '''''advprice''''' — наименование дополнительной услуги&lt;br /&gt;
:* '''''code''''' — код дополнительной услуги&lt;br /&gt;
:* '''''price''''' — стоимость дополнительной услуги&lt;br /&gt;
&lt;br /&gt;
* '''status''' — статус доставки (список статусов см. ниже). Атрибуты (заполняются начиная с версии системы 2008.0.0.670):&lt;br /&gt;
:* '''''eventstore''''' — филиал, к которому относится текущий статус&lt;br /&gt;
:* '''''eventtime''''' — время события по часовому поясу места его наступления.&lt;br /&gt;
:* '''''createtimegmt''''' — время по GMT создания записи о смене статуса в БД. Используется для сортировки записей, чтобы соблюсти хронологическую последовательность. &amp;lt;spoiler text=&amp;quot;Подробнее&amp;quot;&amp;gt;Большинство событий фиксируются в полях eventtime и createtimegmt на основании одного действия, тогда они отличаются только сдвигом от GMT. Однако, если курьер доставил отправление 10.10.2010 в 20:00, по какой-то причине не внес это в мобильное приложение, на следующий день сдал накладную, и в 9 утра оператор внесла, что он доставил вчера в 20:00. Тогда в createtimegmt будет сегодня 6 утра (для Москвы), а в eventtime — вчера в 20:00. При этом оператор по каким-то причинам может внести время вручения раньше, чем какое-то предыдущее событие, т.о. нарушится последовательность времени в eventtime, но при сортировке по createtimegmt все-равно все будет правильно.&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
:* '''''message''''' — наименование филиала-получателя, при передаче между филиалами&lt;br /&gt;
:* '''''title''''' — русское наименование статуса&lt;br /&gt;
&lt;br /&gt;
* '''statushistory''' — история статусов доставки. Содержит список контейнеров '''status'''. Заполняется только для тарифа «Премиум» начиная с версии системы 2008.0.0.670.&lt;br /&gt;
* '''customstatecode''' — код внутреннего статуса курьерской службы. Значения уточняйте в курьерской службе. Назначаются курьерской службой в разделе «Справочники» — «Статусы» — «15 Статусы корреспонденции». Справочник не передается через API клиенту по причине возможного наличия в нем внутренних технологических статусов курьерской службы.&lt;br /&gt;
* '''clientstatecode''' — код статуса клиента. Используется, если клиент предлагает свои коды статусов доставки/причин недоставки.&lt;br /&gt;
* '''deliveredto''' — данные из поля «Инфо. о доставке» (может быть информация о доставке, причина недоставки и т. п.).&lt;br /&gt;
* '''delivereddate''' — дата вручения.&lt;br /&gt;
* '''deliveredtime''' — время вручения. В случае недоставки может быть пустым.&lt;br /&gt;
* '''arrival''' — плановая дата прибытия в формате гггг-мм-дд чч: мм: сс. Заполняется только при использовании автоматических систем планирования (Максоптра, Яндекс доставка), во всех остальных случаях - пустое.&lt;br /&gt;
* '''outstrbarcode''' — код у подрядчика (код заказа во внешней системе). Используется в интеграциях с внешними системами.&lt;br /&gt;
* '''partner''' — текущий филиал/подрядчик.&lt;br /&gt;
* '''return_message''' — информация о возврате&lt;br /&gt;
* '''return_date''' - дата возврата&lt;br /&gt;
* '''return_time''' - время возврата&lt;br /&gt;
* '''department''' — Подразделение, в котором оформляется заказ.&lt;br /&gt;
&lt;br /&gt;
Контейнер '''status''' может принимать следующие значения:&lt;br /&gt;
: AWAITING_SYNC — Ожидает синхронизации. Данные заказа пока не появились в службе доставки.&lt;br /&gt;
: '''NEW''' — Успешно создан, передан в службу доставки.&lt;br /&gt;
: NEWPICKUP — Создан забор.&lt;br /&gt;
: PICKUP — Забран у отправителя.&lt;br /&gt;
: WMSASSEMBLED — Скомплектован на складе фулфилмента.&lt;br /&gt;
: WMSDISASSEMBLED — Разукомплектован на склад фулфилмента.&lt;br /&gt;
: '''ACCEPTED''' — Получен складом.&lt;br /&gt;
: CUSTOMSPROCESS — Производится таможенный контроль.&lt;br /&gt;
: CUSTOMSFINISHED — Таможенный контроль произведен.&lt;br /&gt;
: CONFIRM — Согласована доставка.&lt;br /&gt;
: UNCONFIRM — Не удалось согласовать доставку.&lt;br /&gt;
: DEPARTURING — Планируется отправка со склада на другой склад.&lt;br /&gt;
: DEPARTURE — Отправлено со склада на другой склад.&lt;br /&gt;
: INVENTORY — Инвентаризация. Убедились в наличии отправления на складе.&lt;br /&gt;
: PICKUPREADY — Готов к выдаче в ПВЗ.&lt;br /&gt;
: '''DELIVERY''' — Выдан курьеру на доставку.&lt;br /&gt;
: COURIERDELIVERED — Доставлен (предварительно, ожидает подтверждения менеджером, чтобы перейти в статус COMPLETE).&lt;br /&gt;
: COURIERPARTIALLY — Частично доставлен (предварительно, ожидает подтверждения менеджером, чтобы перейти в статус PARTIALLY).&lt;br /&gt;
: COURIERCANCELED — Отказ (предварительно, после этого ожидается COURIERRETURN).&lt;br /&gt;
: COURIERRETURN — Возвращено курьером. Курьер не смог доставить до получателя и вернул заказ обратно на склад. Это промежуточный статус, после которого менеджер выясняет, нужно ли повторно доставлять (статусы DATECHANGE/DELIVERY) или это окончательная недоставка (CANCELED).&lt;br /&gt;
: DATECHANGE — Перенос даты доставки.&lt;br /&gt;
&lt;br /&gt;
: '''COMPLETE''' — Доставлен.&lt;br /&gt;
: '''PARTIALLY''' — Доставлен частично.&lt;br /&gt;
: '''CANCELED''' — Не доставлен (Возврат/Отмена). После этого статуса отправление должны вернуть заказчику, будут статусы RETURNING и RETURNED&lt;br /&gt;
&lt;br /&gt;
: RETURNING — Планируется возврат заказчику (после CANCELED).&lt;br /&gt;
: RETURNED — Возвращен заказчику.&lt;br /&gt;
: LOST — Утрачен/утерян.&lt;br /&gt;
&lt;br /&gt;
: PARTLYRETURNING — Планируется возврат остатков.&lt;br /&gt;
: PARTLYRETURNED — Остаток возвращен.&lt;br /&gt;
: TRANSACCEPTED — Прибыл на склад перевозчика.&lt;br /&gt;
: PICKUPTRANS — Забран у перевозчика.&lt;br /&gt;
: WITHDRAWN_FROM_PICKUP_POINT - Изъят.&lt;br /&gt;
: CUSTOMSDELAY - Задержка отправления таможенным органом.&lt;br /&gt;
: DEPARTUREDELAY - Задержка отправления перевозчиком.&lt;br /&gt;
: STORETAKE - Принят в работу на складе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Примечание.''' В будущем возможно дополнение используемого набора статусов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
&lt;br /&gt;
# Контейнер '''statushistory''' и '''deliveryprice''' заполняется для тарифов [[Личный кабинет курьерской службы#Функции личного кабинета|Премиум и Максимум]].&lt;br /&gt;
# Контейнер '''packages''' не возвращает более 1000 элементов.&lt;br /&gt;
# Система никогда не гарантирует последовательность прохождения заказом набора статусов. То есть Вы можете получить статус «COMPLETE», а следующим запросом — «NEW» — такое может произойти, например, если оператор ошибочно отметил заказ выполненным, а затем исправил ошибку.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Передача только изменившихся статусов ===&lt;br /&gt;
В нашем API предусмотрено удобное средство получения статусов всех заказов, без необходимости «бомбить» сервер запросами статусов по каждому заказу. Работает это так: раз, например, в 10 минут, вы посылаете запрос «покажите все изменившиеся статусы». Пример запроса ниже. Система вам отдает ВСЕ заказы, статусы (или некоторые другие поля, см. ниже) которых изменились с момента последнего запроса. Вы разбираете полученный документ, по каждому заказу сохраняете его актуальный статус в своей системе, и если все хорошо, у вас все получилось, ваша система неожиданно не упала от наплыва информации, посылаете нам запрос подтверждения получения статусов (commitlaststatus). Мы у себя отмечаем, что эти статусы вами получены и их не надо передавать повторно. Таким образом, сколько бы заказов у вас ни было, статусы по ним всем почти в реальном времени вы можете получать всего двумя запросами.&lt;br /&gt;
&lt;br /&gt;
Для получения только изменившихся статусов отправьте запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;streamid&amp;gt;1234&amp;lt;/streamid&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Система выдает все заказы, в которых с момента последнего запроса в этом режиме изменилось хотя бы одно из полей:&lt;br /&gt;
 orderno&lt;br /&gt;
 status&lt;br /&gt;
 delivereddate&lt;br /&gt;
 deliveredtime&lt;br /&gt;
 deliveredto&lt;br /&gt;
 receiver-&amp;gt;date&lt;br /&gt;
 receiver-&amp;gt;address&lt;br /&gt;
 price&lt;br /&gt;
&lt;br /&gt;
После успешной обработки ответа необходимо отметить полученные статусы успешно полученными, отправив запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;streamid&amp;gt;1234&amp;lt;/streamid&amp;gt;&lt;br /&gt;
&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей запроса'''&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — авторизация. Обязательный элемент.&lt;br /&gt;
* '''streamid''' — идентификатор потока. Если у вас несколько интеграций и каждая нуждается в получении статусов, вы можете передавать данный параметр и тем самым разделять получение и отметку об успешном получении статусов по заказам. Значение должно входить в промежуток от 100 до 10000, включительно. Необязательный элемент.&lt;br /&gt;
* '''client''' — признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
&lt;br /&gt;
В случае успеха вы получите ответ:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus error=&amp;quot;0&amp;quot;&amp;gt;OK&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Такой способ передачи статусов гарантирует полную корректную передачу статусов, даже если в нашей системе статус изменился между запросом статусов и подтверждением их получения. Если система не получила подтверждение передачи статуса, она будет считать информацию непереданной и выдаст ее при повторном запросе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
# При этом способе передачи (&amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;) система просматривает заказы, оформленные за последние 3 месяца. Если заказ сделан ранее, изменение статуса по нему не попадет в результат выполнения запроса.&lt;br /&gt;
# Система всегда выдает текущий статус. Вы можете одним запросом получить статус «NEW», а следующим — «COMPLETE». Между запросами отправление могло пройти через несколько промежуточных статусов. Если нужна гарантия получения всех промежуточных статусов, нужно анализировать блок statushistory (может не заполняться вследствие ограничений версии или тарифа конкретной службы доставки).&lt;br /&gt;
# Система не гарантирует последовательность прохождения заказом набора статусов. Вы можете получить статус «COMPLETE», а следующим запросом «NEW» — такое может произойти, например, если оператор ошибочно отметил заказ выполненным, а затем исправил ошибку.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Лимитирование запросов ===&lt;br /&gt;
Дает возможность получить не все измененные заказы, а только какое-то определенное количество. Помогает на случай, если у вас скопилось очень много измененных заказов и нужно их грузить лимитировано. После успешной обработки получнных заказов, '''обязательно''' нужно вызвать commitlaststatus с кодами обработанных заказов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример'''&lt;br /&gt;
&lt;br /&gt;
Для получения ограниченного числа изменившихся заказов отправьте запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;statusreq&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;changes&amp;gt;ONLY_LAST&amp;lt;/changes&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;5&amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/statusreq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После успешной обработки ответа необходимо отметить полученные статусы успешно полученными, отправив запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;commitlaststatus&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;acs&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;11111&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;22222&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;33333&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;44444&amp;lt;/ac&amp;gt;&lt;br /&gt;
     &amp;lt;ac&amp;gt;55555&amp;lt;/ac&amp;gt;&lt;br /&gt;
  &amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/commitlaststatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''acs''' — контейнер. Обязательный элемент.&lt;br /&gt;
* '''ac''' — атрибут''' ordercode''' контейнера '''order''' полученного на этапе запроса '''statusreq'''.&lt;br /&gt;
&lt;br /&gt;
Помимо приведенных в примере параметров, вы также можете передавать и остальные, описанные ранее, например '''streamid'''.&lt;br /&gt;
&lt;br /&gt;
== Трекинг заказа по номеру ==&lt;br /&gt;
Запрос трекинга по номеру предназначен для выдачи минимальной обезличенной информации о конкретном заказе не авторизованному пользователю. Наша система имеет для этого интерфейс по адресу «home.courierexe.ru/{код экстра}/tracking». Вы можете либо сделать ссылку на такую страницу на своем сайте, либо разместить ее [[#Размещение страниц на своем сайте (iframe)|iframe’ом]] у себя, либо сделать свою и пользоваться нашим API. Этот интерфейс создан специально для выдачи информации живому пользователю сайта. Для получения статусов заказов в свою информационную систему нужно использовать запрос «statusreq», желательно с параметром changes=ONLY_LAST!&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking&amp;gt;&lt;br /&gt;
  &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/tracking&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking&amp;gt;&lt;br /&gt;
 &amp;lt;order orderno=&amp;quot;111111&amp;quot; ordercode=&amp;quot;12345&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;barcode&amp;gt;111111&amp;lt;/barcode&amp;gt;&lt;br /&gt;
   &amp;lt;AWB&amp;gt;111111&amp;lt;/AWB&amp;gt;&lt;br /&gt;
   &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;1&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Москва город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;town code=&amp;quot;1&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Москва город&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;date&amp;gt;2014-03-22&amp;lt;/date&amp;gt;&lt;br /&gt;
     &amp;lt;time_min&amp;gt;09:00&amp;lt;/time_min&amp;gt;&lt;br /&gt;
     &amp;lt;time_max&amp;gt;14:00&amp;lt;/time_max&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;quantity&amp;gt;2&amp;lt;/quantity&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;3&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;return&amp;gt;NO&amp;lt;/return&amp;gt;&lt;br /&gt;
   &amp;lt;return_service&amp;gt;2&amp;lt;/return_service&amp;gt;&lt;br /&gt;
   &amp;lt;return_date&amp;gt;&amp;lt;/return_date&amp;gt;&lt;br /&gt;
   &amp;lt;return_time&amp;gt;&amp;lt;/return_time&amp;gt;&lt;br /&gt;
   &amp;lt;return_message&amp;gt;&amp;lt;/return_message&amp;gt;&lt;br /&gt;
   &amp;lt;waittime&amp;gt;12&amp;lt;/waittime&amp;gt;&lt;br /&gt;
   &amp;lt;enclosure&amp;gt;Детские игрушки&amp;lt;/enclosure&amp;gt;&lt;br /&gt;
   &amp;lt;instruction&amp;gt;Проверить при покупателе, подписать акт&amp;lt;/instruction&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice total=&amp;quot;158.6&amp;quot; delivery=&amp;quot;100.00&amp;quot; return=&amp;quot;58.6&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;courier&amp;gt;&lt;br /&gt;
	&amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Иванов Владимир Петрович&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;phone&amp;gt;+79161234567&amp;lt;/phone&amp;gt;&lt;br /&gt;
   &amp;lt;/courier&amp;gt;&lt;br /&gt;
   &amp;lt;currcoords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot; accuracy=&amp;quot;50&amp;quot; RequestDateTime=&amp;quot;2014-04-21 18:07:45&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;statushistory&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-05-30 10:20:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Новый&amp;quot;&amp;gt;NEW&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 17:38:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Планируется отправка&amp;quot;&amp;gt;DEPARTURING&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;Офис в Москве&amp;quot; eventtime=&amp;quot;2016-06-01 19:53:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;филиал в Санкт-Петербурге&amp;quot; title=&amp;quot;Отправлено со склада&amp;quot;&amp;gt;DEPARTURE&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 07:41:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Получен складом&amp;quot;&amp;gt;ACCEPTED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 09:17:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Выдан курьеру на доставку&amp;quot;&amp;gt;DELIVERY&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен (предварительно)&amp;quot;&amp;gt;COURIERDELIVERED&amp;lt;/status&amp;gt;&lt;br /&gt;
     &amp;lt;status eventstore=&amp;quot;филиал в Санкт-Петербурге&amp;quot; eventtime=&amp;quot;2016-06-02 17:22:00&amp;quot; createtimegmt=&amp;quot;2016-06-03 16:14:44&amp;quot; message=&amp;quot;&amp;quot; title=&amp;quot;Доставлен&amp;quot;&amp;gt;COMPLETE&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;/statushistory&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredto&amp;gt;Иванова, секр.&amp;lt;/deliveredto&amp;gt;&lt;br /&gt;
   &amp;lt;delivereddate&amp;gt;2016-06-02&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
   &amp;lt;deliveredtime&amp;gt;17:22&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
   &amp;lt;outstrbarcode&amp;gt;EXT123456&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
   &amp;lt;items&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34533&amp;quot; extcode=&amp;quot;abc123&amp;quot; quantity=&amp;quot;1&amp;quot; mass=&amp;quot;0.2&amp;quot; retprice=&amp;quot;37.5&amp;quot; VATrate=&amp;quot;0&amp;quot; barcode=&amp;quot;2345625213125&amp;quot; article=&amp;quot;1&amp;quot; returns=&amp;quot;0&amp;quot; origincountry=&amp;quot;040&amp;quot; GTD=&amp;quot;&amp;quot; excise=&amp;quot;0.00&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; suppcompany=&amp;quot;Поставщик&amp;quot; suppINN=&amp;quot;1112223334&amp;quot; suppphone=&amp;quot;79161234567&amp;quot;&amp;gt;Мяч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34456&amp;quot; extcode=&amp;quot;abc124&amp;quot; quantity=&amp;quot;2&amp;quot; mass=&amp;quot;2&amp;quot; retprice=&amp;quot;100&amp;quot; VATrate=&amp;quot;10&amp;quot; barcode=&amp;quot;4645625213138&amp;quot; article=&amp;quot;2&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot;&amp;gt;Обруч&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item code=&amp;quot;34421&amp;quot; extcode=&amp;quot;abc125&amp;quot; quantity=&amp;quot;3&amp;quot; mass=&amp;quot;0.3&amp;quot; retprice=&amp;quot;50&amp;quot; VATrate=&amp;quot;18&amp;quot; barcode=&amp;quot;2345625213126&amp;quot; article=&amp;quot;3&amp;quot; returns=&amp;quot;0&amp;quot; governmentCode=&amp;quot;&amp;quot;&amp;gt;Погремушка желтая&amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/items&amp;gt;&lt;br /&gt;
   &amp;lt;acquirers&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;2&amp;quot; name=&amp;quot;Ibox&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;5&amp;quot; name=&amp;quot;Payme&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;acquirer code=&amp;quot;6&amp;quot; name=&amp;quot;Click&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/acquirers&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/tracking&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где,&lt;br /&gt;
* '''acquirers''' / '''acquirer''' - эквайринг, доступный для получения ссылки на оплату заказа&lt;br /&gt;
** '''acquirers''' / '''acquirer''' / ''code'' - внутренний код эквайринга&lt;br /&gt;
** '''acquirers''' / '''acquirer''' / ''name'' - наименование эквайринга&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Получение информации в формате 17 TRACK'''&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tracking17&amp;gt;&lt;br /&gt;
  &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/tracking17&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;number&amp;quot;:&amp;quot;ExtNumber&amp;quot;,&lt;br /&gt;
	&amp;quot;oriNumber&amp;quot;:&amp;quot;1234&amp;quot;,&lt;br /&gt;
	&amp;quot;oriCountry&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
	&amp;quot;destCountry&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
	&amp;quot;status&amp;quot;:&amp;quot;Complete&amp;quot;,&lt;br /&gt;
	&amp;quot;events&amp;quot;:[&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 17:22:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Complete&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 17:22:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Courierdelivered&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 09:17:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Delivery&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-02 07:41:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Москва&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Москва Главный&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Accepted&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-01 19:53:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Departure&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-06-01 17:38:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;Departuring&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			&amp;quot;time&amp;quot;:&amp;quot;2016-05-30 10:20:00&amp;quot;,&lt;br /&gt;
			&amp;quot;location&amp;quot;:&amp;quot;RU&amp;quot;,&lt;br /&gt;
			&amp;quot;town&amp;quot;:&amp;quot;Горький&amp;quot;,&lt;br /&gt;
			&amp;quot;store&amp;quot;:&amp;quot;Горький Автозавод&amp;quot;,&lt;br /&gt;
			&amp;quot;content&amp;quot;:&amp;quot;New&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функция ищет последний заказ по номеру среди заказов всех клиентов. Выдает неперсонализированную информацию о текущем состоянии заказа.&amp;lt;br&amp;gt;&lt;br /&gt;
Описание контейнеров ответа аналогично описанию [[API#.D0.97.D0.B0.D0.BF.D1.80.D0.BE.D1.81 .D1.81.D1.82.D0.B0.D1.82.D1.83.D1.81.D0.B0 .D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.BE.D0.B2|Запроса статусов заказов]].&lt;br /&gt;
&lt;br /&gt;
=== Получение ссылки для оплаты заказа ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
Этим методом вы можете только получить ссылку на оплату. Фискализация этого платежа идет отдельным процессом. По его возможности уточняйте в службе поддержки.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заказ доступен для оплаты, если:&lt;br /&gt;
* тип оплаты заказа не наличными, а например картой или по договору, альтернативой может стать установка параметра &amp;quot;Спрашивать тип оплаты&amp;quot; в карточке клиента.&lt;br /&gt;
* заказ имеет наложенный платеж&lt;br /&gt;
* не оплачен&lt;br /&gt;
* активен (не доставлен, не возвращен в т.ч. курьером)&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink&amp;gt;&lt;br /&gt;
    &amp;lt;extra&amp;gt;8&amp;lt;/extra&amp;gt;&lt;br /&gt;
    &amp;lt;acq&amp;gt;&lt;br /&gt;
        &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/acq&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
        &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/acqlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*'''extra''' - код экстраклиента в системе Measoft.&lt;br /&gt;
*acq.'''code''' - внутренний код платформы эквайринга в системе Measoft. (известен в МП из [https://wiki.courierexe.ru/index.php/API#.D0.A2.D1.80.D0.B5.D0.BA.D0.B8.D0.BD.D0.B3_.D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.B0_.D0.BF.D0.BE_.D0.BD.D0.BE.D0.BC.D0.B5.D1.80.D1.83 Трекинга]) &lt;br /&gt;
*order.'''ordercode''' - внутренний код заказа, типа ''int'', уникальный в пределах экстраклиента&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink error=&amp;quot;0&amp;quot; amount=&amp;quot;2000&amp;quot; extid=&amp;quot;161083231&amp;quot;&amp;gt;https://qr.nspk.ru/AD10001A7GLVGA9YDO2I0789SIOPV3?type=02&amp;amp;amp;bank=1000011&amp;amp;amp;sum=2000&amp;amp;amp;cur=RUB&amp;amp;amp;crc=7E9C&amp;lt;/acqlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*'''acqlink''' - ссылка на оплату заказа&lt;br /&gt;
*acqlink.'''amount''' - тип integer сумма платежа в копейках в общем случае, в других случаях в соответствии с типом валюты&lt;br /&gt;
*acqlink.'''extid''' - идентификатор счета на стороне платежной системы&lt;br /&gt;
*acqlink.'''error'' - код ошибки, если отличается от 0, означает невозможность получения ссылки на оплату, в этом случае ссылки на оплату не будет и ответ будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;acqlink error=&amp;quot;2&amp;quot; message=&amp;quot;Ошибка авторизации: Invalid token&amp;quot; amount=&amp;quot;2000&amp;quot; extid=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
*acqlink.'''message''' - текст ошибки возвращаемой эквайрингом&lt;br /&gt;
&lt;br /&gt;
Возможные типы ошибок получения ссылки:&lt;br /&gt;
* '''1''' - не настроен эквайринг, либо не найден заказ&lt;br /&gt;
* '''2''' - ошибка на стороне эквайринга&lt;br /&gt;
* '''3''' - запрещающий статус курьера (заказ доставлен, частично доставлен)&lt;br /&gt;
* '''4''' - оплата заказа не разрешена&lt;br /&gt;
&lt;br /&gt;
== Изменение заказа ==&lt;br /&gt;
Запрос предназначен для изменения заказов.&lt;br /&gt;
&lt;br /&gt;
Изменять заказы могут курьерские службы с тарифами «Премиум» и «Максимум». Чтобы разрешить изменение заказов, в личном кабинете курьерской службы перейдите в '''Настройки''' &amp;gt; '''Заказы''' и в разделе '''Отмена и редактирование''' установите флажок '''Разрешить отмену и изменение заказов'''.  Вы также можете пометить в списке '''Статусы для отмены и редактирования заказов'''   галками статусы корреспонденции, для которых возможны отмена и изменение заказов. По умолчанию (когда в этом списке ничего не выбрано) редактирование и отмена разрешены для статуса  «Новый»&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# Данные запроса изменения указываются '''полностью''', как если бы заказ создавался впервые.&lt;br /&gt;
# При отсутствии вложения в запросе изменения данное вложение '''не удаляется''' из заказа, но его количество становится равным 0.&lt;br /&gt;
# При одновременном изменении заказа в API и системе курьерской службы приоритет отдается данным системы курьерской службы. То есть изменения в API приняты не будут.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При редактировании заказа может быть отменен запланированный курьер. Это зависит от значения переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Корреспонденция''' &amp;gt; '''Автоматически устанавливать заплан. курьера по району''':&lt;br /&gt;
* '''Нет''' — при редактировании заказа по АПИ курьер не изменяется;&lt;br /&gt;
* '''Район''' — если изменен адрес доставки, курьер сбрасывается;&lt;br /&gt;
* '''Район или дата план. доставки''' — если изменен адрес доставки или плановая дата вручения, курьер сбрасывается.&lt;br /&gt;
&lt;br /&gt;
=== Описание полей запроса изменения ===&lt;br /&gt;
Все поля запроса соответствуют структуре order при создании заказа за исключением:&lt;br /&gt;
&lt;br /&gt;
* значение '''orderno''' данным методом изменить нельзя.&lt;br /&gt;
* значение '''barcode''' изменяется в случае явного его указания. В случае отсутствия или пустого значения - остается прежним.&lt;br /&gt;
* вместо корневого тэга '''neworder''' указывается '''editorder''';&lt;br /&gt;
* тэг курьера '''courier''' можно изменить только при включенной настройке '''Разрешить изменение курьера по АПИ''';&lt;br /&gt;
* для вложений '''item''' указывается внутренний код вложения в атрибуте '''code''', который можно получить при получении статуса заказа.&lt;br /&gt;
* для мест '''package''' указывается внутренний код вложения в атрибуте '''code''', который можно получить при получении статуса заказа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Необходимо иметь в виду, что:&lt;br /&gt;
&lt;br /&gt;
# Заказ нельзя изменить, пока он не синхронизирован с системой (пока предыдущие изменения не переданы в бэк-офис)&lt;br /&gt;
# Удаление вложений и мест выполняется не моментально, а в процессе синхронизации с бэк-офисом (для записей указываются метки Удалено)&lt;br /&gt;
&lt;br /&gt;
=== Описание полей ответа изменения ===&lt;br /&gt;
Все поля ответа соответствуют ответу при создании заказа за исключением корневого тэга — вместо '''neworder''' возвращается '''editorder'''.&lt;br /&gt;
&lt;br /&gt;
== Отмена заказа ==&lt;br /&gt;
Запрос предназначен для отмены заказов.&lt;br /&gt;
&lt;br /&gt;
Отменять заказы могут курьерские службы с тарифами «Премиум» и «Максимум». Разрешения для отмены заказов и статусы в которых заказы можно отменять описаны в разделе '''Изменение заказов'''&lt;br /&gt;
&lt;br /&gt;
При отмене заказа поле «Инфо о доставке» получает значение «Отменено заказчиком», поле «Дата доставки» — текущую дату, а «Вручил курьер» — системную запись «ОТМЕНА».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса отмены заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;cancelorder&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;&amp;quot; ordercode=&amp;quot;123456&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123aaa&amp;quot; ordercode=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/cancelorder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''cancelorder''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''order''' — Контейнер отменяемого заказа. Обязательный элемент. Запрос может содержать более одного контейнера '''order'''. Атрибуты:&lt;br /&gt;
:* '''''orderno''''' — Шифр заказа.&lt;br /&gt;
:* '''''ordercode''''' — Внутренний код заказа.&lt;br /&gt;
Обратите внимание, что должен быть указан хотя бы один из атрибутов ''orderno'' или ''ordercode''!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;cancelorder&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123test&amp;quot; ordercode=&amp;quot;123456&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order orderno=&amp;quot;123aaa&amp;quot; ordercode=&amp;quot;&amp;quot; error=&amp;quot;52&amp;quot; errormsg=&amp;quot;order not found&amp;quot; errormsgru=&amp;quot;Заказ не найден&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/cancelorder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавление вложений к накладной ==&lt;br /&gt;
&lt;br /&gt;
Метод позволяет прикрепить файлы к корреспонденции.&lt;br /&gt;
Размер загружаемого файла не должен превышать 1 Мб.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;addattachments&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234567&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;attachments&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo1.jpg&amp;quot;&amp;gt;JVBERi0xLjMN1wb25lbnQgMQ&lt;br /&gt;
    JUBQREYwMTIzNDU2Nzg5IDI NMyAwIG9iag08PA0vVHlwZSA&lt;br /&gt;
    U3VidHlwZSAvSW1hZ2UNL1d pZHRoIDE4MDgNL0hlaWdodCA&lt;br /&gt;
    ggNCAwIFINL0JpdHNQZXJDb 21wb25lbnQgMQ0vRGVjb2RlU&lt;br /&gt;
    ENL0NvbHVtbnMgMTgwOA0+P g0vSW1hZ2VNYXNrIHRydWUNL&lt;br /&gt;
    XhEZWNvZGUNPj4Nc3RyZWFt DQ&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo2.jpg&amp;quot;&amp;gt;VBERi0xLjMNAwIG9iag0HRoJ&lt;br /&gt;
    JUBQREYwMTIzNDU2Nzg5IDI NMyAwIG9iag08PA0vVHlwZSA&lt;br /&gt;
    vWE9iamVjdA0vU3VidHlwZS AvSW1hZ2UNL1dpZHRoIDEzNj &lt;br /&gt;
    gNL0hlaWdodCAxMzMzDS9MZ W5ndGggNCAwIFINL0JpdHNQZ &lt;br /&gt;
    XJDb21wb25lbnQgMQ0vRGVj b2RlUGFybXMgPDwNL0sgLTEN &lt;br /&gt;
    L0NvbHVtbnMgMTM2OA0+Pg0 vSW&amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/addattachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''addattachments''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''orderno''' — Номер заказа. Обязательный элемент. Может использоваться тэг &amp;lt;ordercode&amp;gt; с указанием внутреннего кода заказа.&lt;br /&gt;
* '''attachments''' — Обязательный элемент, в котором перечисляются передаваемые данные файлов.&lt;br /&gt;
** '''item''' — Бинарные данные (файл), закодированные в base64. Обязательный элемент.&lt;br /&gt;
*** '''name''' — Атрибут элемента '''item''', в котором передается имя файла. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addattachments&amp;gt;&lt;br /&gt;
  &amp;lt;attachments&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo1.jpg&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;item name=&amp;quot;photo2.jpg&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/addattachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Получение вложений к накладной ==&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;attachments&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;1234567&amp;lt;/orderno&amp;gt;&lt;br /&gt;
&amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''attachments''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''orderno''' — Номер/код заказа. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;attachments&amp;gt;&lt;br /&gt;
  &amp;lt;item name=&amp;quot;doc1.docx&amp;quot; timestamp=&amp;quot;2025-01-01 12:00:00&amp;quot; size=&amp;quot;35654&amp;quot;&amp;gt;JVBERixLjMN&lt;br /&gt;
  UwLJdLwIDKxTn+AScMjKqor7Xm3sp1yj1k6BzlPdX2Qsiit6yg3g1fCI4YVAgclUOIY5tDra2LvAcIS&lt;br /&gt;
  5/+8PsL/sXb0+aoper/9kL/4Ov/YE9QsHwyg7YZTtKICy0YVIYb4Nt7L1tPUMfaX9NpuTsvFCtBAvYG&lt;br /&gt;
  eJVZoZ2tm6+fZVqAavZpeLizVLtct1a+xvG0+bTSkw3Ac8PhdNfL4smrT2hSgPJLfyaVGyA2ndyW22t&lt;br /&gt;
  sFtTP5knktPNumSZ56QsFRPJkaU8ExDxAcMYMDIoBiIoR4/dDjHMbMW/EW4fiB1pvWmV2ONWIl1Xdub&lt;br /&gt;
  Xg1ob0qWX9W4qagsqzGhjRLsEGeJGVXg9oVC+XkJa9esrhGUmC0tuKEla+AplVO/OtHwXcW0FWui1z7&lt;br /&gt;
  6KHrtobuWV0xa9sCEiSvb91w3ePHOvfcveo5xt9o4ZevHF7ZOeKxV5qmVx2MI44a1L+Mhk5YuGT12xd&lt;br /&gt;
  Ibsb7r+j9bff/unQlv0al6HBnoD5G89q4+tkjgDtvwwARmqm2aa2Jgvmth8mrXquTNtl2u467vbF/5r&lt;br /&gt;
  vnMt9uesu21Me1bjeNJGlVfAaCtw+/jfenJ/fWjqa7ygExx+L0BcTGroxrKexQXIQ1ImfEW7ZRJZa+O&lt;br /&gt;
  ip7xJmmNESMxrgu/dquBbGypjJpFDJVRH1rVPR1Ifl4aFS5IEdDWZFSdyBBWKWhVSVu517ZgzOCFAwp&lt;br /&gt;
  wwbFph29g4fTaxnvn/3X78x+Tt56ZNffArgULt+HByvy7+yz6U6XWMawCi3+6gJXN0S+jf4t+HT34wg&lt;br /&gt;
  km7/HDp55YTSWMoCMgZsvZkBrXtIv4WA7xgkT4YpYpxjwLvnsWKkGE+pDbxER0UUWlpVFRY4oilTfM4&lt;br /&gt;
  MIzgCPgxjOlZ87ceA7ceRJrgpipFGyugPQ4OTI2S8lWJoqTpHJlJbNOeYM7zTcoVxSNyJXiYWSAMklT&lt;br /&gt;
  q/xd+3fd3/USq2V1rJ7RyBLHsuDSiLwgaOFc5LUCRGI+QWuBAsIwPlZrgRpSMseJyTzD15PKiIRE7bc&lt;br /&gt;
  Rggk5ijXAPpqISetD4wVm0AD2LHuBZdaxmK3HOKIZoG0QLmiZdVqspXnFIJwVyCKhWiDCI4bzH8Y76w&lt;br /&gt;
  TAnwM67HIqMISOkmJXY8mlYhpiNa7g2oTBkKxo4wgnvETQIUUrlFOn9KdOreDiKQx071rN4N61yRAi1&lt;br /&gt;
  7EGRhSOgoeLYv+k41+KZ1SVBXAuDjB+xuxnQmm8wJDcP5IRn+5penzbR/ivm7qleHK5o790w8ejXchI&lt;br /&gt;
  vOHIPWtWwYhtAO34LdDXqFqWxZEBLNstMCwwITBTWirxk12zuUppp&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/attachments&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В тегах item возвращаются бинарные данные (файлы), закодированные в base64.&lt;br /&gt;
&lt;br /&gt;
== Изменение статуса агентом ==&lt;br /&gt;
Запрос изменения статуса заказа позволяет установить окончательный статус заказа — «Доставлен» или «Не доставлен (Возврат/Отмена)».&lt;br /&gt;
&lt;br /&gt;
Кроме этого, устанавливается дата и время (при необходимости) изменения статуса, а также сообщение в поле ''Инфо о доставке''.&lt;br /&gt;
&lt;br /&gt;
При необходимости к заказу можно прикрепить изображения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса изменения статуса:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;setorderinfo&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;123456&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;Получил Иванов&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;outstrbarcode&amp;gt;7654312&amp;lt;/outstrbarcode&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;234567&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;PICKUPREADY&amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;eventtime&amp;gt;2016-05-30 10:20:00&amp;lt;/eventtime&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;Клиент отказался от покупки&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;storeprice&amp;gt;123&amp;lt;/storeprice&amp;gt;&lt;br /&gt;
    &amp;lt;items&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34533&amp;quot; quantity=&amp;quot;1&amp;quot; reason=&amp;quot;0&amp;quot; governmentCode=&amp;quot;11223311&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34456&amp;quot; quantity=&amp;quot;0&amp;quot; reason=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;item code=&amp;quot;34421&amp;quot; quantity=&amp;quot;2&amp;quot; reason=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/items&amp;gt;&lt;br /&gt;
    &amp;lt;attachments&amp;gt;&lt;br /&gt;
      &amp;lt;attachment filename=&amp;quot;filename1.jpg&amp;quot;&amp;gt; /9j/4AAQSkZJRgA&lt;br /&gt;
      BAQAAAQABAAD/2wBDAA0JCg sKCA0LCgsODg0PEyAVExISEy&lt;br /&gt;
      ccHhcgLikxMC4pLSwzOko+M zZGNywtQFdBRkxOUlNSMj5aY&lt;br /&gt;
      VpQYEpRUk//2wBDAQ4ODhMR EyYVFSZPNS01T09PT09PT09P&lt;br /&gt;
      T09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09&lt;br /&gt;
      PT09PT0//wAARCAYACAADAS IA&amp;lt;/attachment&amp;gt;&lt;br /&gt;
      &amp;lt;attachment filename=&amp;quot;filename2.jpg&amp;quot;&amp;gt; /9j/4AAQSkZJRgA&lt;br /&gt;
      BAQAAAQABAAD/2wBDAA0JCg sKCA0LCgsODg0PEyAVExISEy&lt;br /&gt;
      ccHhcgLikxMC4pLSwzOko+M zZGNywtQFdBRkxOUlNSMj5aY&lt;br /&gt;
      VpQYEpRUk//2wBDAQ4ODhMR EyYVFSZPNS01T09PT09PT09P&lt;br /&gt;
      T09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09&lt;br /&gt;
      PT09PT0//wAARCAYACAADAS IA&amp;lt;/attachment&amp;gt;&lt;br /&gt;
    &amp;lt;/attachments&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/setorderinfo&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Описание полей запроса статуса:'''&lt;br /&gt;
&lt;br /&gt;
'''setorderinfo''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''order''' — Контейнер заказа. Обязательный элемент. Запрос может содержать более одного контейнера '''order'''. Атрибут '''''ordercode''''' — внутренний код заказа.&lt;br /&gt;
* '''status''' — Новый статус заказа. Доступны статусы из раздела [[#Описание полей ответа статусов]], кроме AWAITING_SYNC и NEW.&lt;br /&gt;
* '''eventtime''' — Дата и время изменения статуса. Обязательно при указании статуса.&lt;br /&gt;
* '''message''' — Текст сообщения ''Инфо о доставке''.&lt;br /&gt;
* '''outstrbarcode''' — код у подрядчика (код заказа во внешней системе). Используется в интеграциях с внешними системами.&lt;br /&gt;
* '''paytype''' — Тип оплаты заказа. Допустимые значения CASH/CARD.&lt;br /&gt;
* '''storeprice''' — Агентское вознаграждение.&lt;br /&gt;
* '''items''' — Контейнер для описания вложений '''item''' . Атрибуты:&lt;br /&gt;
:* '''''code''''' — Код вложения.&lt;br /&gt;
:* '''''quantity''''' — Количество доставленных единиц вложения.&lt;br /&gt;
:* '''''reason''''' — Причина недоставки, выбирается из соответствующего списка статусов.&lt;br /&gt;
:* '''''governmentCode''''' — Указание кода ТН для вложения при необходимости.&lt;br /&gt;
* '''attachments''' — Контейнер прикрепляемых изображений. Может содержать несколько контейнеров '''attachment'''&lt;br /&gt;
:* '''attachment''' — Контейнер изображения. Содержит текст файла изображения, закодированный по стандарту ''base64''. Атрибут:&lt;br /&gt;
::* '''''filename''''' — Имя файла.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;setorderinfo&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;123456&amp;quot; error=&amp;quot;0&amp;quot; errormsg=&amp;quot;OK&amp;quot; errormsgru=&amp;quot;Успешно&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;order ordercode=&amp;quot;234567&amp;quot; error=&amp;quot;59&amp;quot; errormsg=&amp;quot;value [date_put] is already set&amp;quot; errormsgru=&amp;quot;Значение [Дата доставки] уже указано&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/setorderinfo&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Получение документов для печати ==&lt;br /&gt;
'''Пример запроса получения печатных форм:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;client&amp;gt;CLIENT&amp;lt;/client&amp;gt;&lt;br /&gt;
  &amp;lt;orders&amp;gt;&lt;br /&gt;
    &amp;lt;order orderno=&amp;quot;1234567&amp;quot; ordercode=&amp;quot;33331&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;order orderno=&amp;quot;1234568&amp;quot; ordercode=&amp;quot;33332&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/orders&amp;gt;&lt;br /&gt;
  &amp;lt;form&amp;gt;1&amp;lt;/form&amp;gt;&lt;br /&gt;
  &amp;lt;start&amp;gt;5&amp;lt;/start&amp;gt;&lt;br /&gt;
  &amp;lt;integration&amp;gt;21&amp;lt;/integration&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
&lt;br /&gt;
'''waybill''' — Корневой контейнер. Обязательный элемент&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент&lt;br /&gt;
* '''client''' — Признак клиента или агента. Необязательный элемент.&lt;br /&gt;
:* CLIENT — Признак клиента, значение по умолчанию&lt;br /&gt;
:* AGENT — Признак агента. В ответ отдается информация по заказам, переданным агенту на доставку&lt;br /&gt;
* '''orders''' — Список заказов для получения печатных форм. Содержит тэги '''order''' с атрибутами:&lt;br /&gt;
:* '''''orderno''''' — шифр заказа&lt;br /&gt;
:* '''''ordercode''''' — внутренний код заказа. Указывать необходимо один из атрибутов для всех заказов. Приоритет имеет атрибут '''''ordercode'''''&lt;br /&gt;
* '''form''' — Формат накладной. Не обязательный элемент. Принимает значения:&lt;br /&gt;
:* 1 — Подробная накладная (по-умолчанию)&lt;br /&gt;
:* 2 — Наклейки Zebra&lt;br /&gt;
:* 3 — Наклейки на страницу формата А4&lt;br /&gt;
:* 4 — Акты приема-передачи&lt;br /&gt;
* '''start''' — Имеет смысл только для form = 3. Начальная позиция первой наклейки. Используется для пропуска наклеек на листе для их экономии.&lt;br /&gt;
* '''integration''' - Получение наклеек от подрядчика. Не обязательный элемент, имеет смысл при наличии кода подрядчика в карточке заказа. Принимает значение:&lt;br /&gt;
:* 21 - подрядчик GTD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;integration code=&amp;quot;21&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;order code=&amp;quot;33331&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;content&amp;gt;JVBERi0xLjYNJeLjz9MNC...&amp;lt;/content&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order code=&amp;quot;33332&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;content&amp;gt;JVBERi0xLjYNJeLjz9MNC...&amp;lt;/content&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;/integration&amp;gt;&lt;br /&gt;
  &amp;lt;content&amp;gt;EODIcaI8KSBlwQ 4MnEOR7Px8U8EBAyGICBnwpw &lt;br /&gt;
  IZhQgz0ZxuPs8EBM/GcbjzB AwhBl8hwQYIO00GmEwg1CeEG &lt;br /&gt;
  mqYTChNU0wqf8l8nz4zgc+K fCno+zwU5GjOZmzXGcbEQYIM &lt;br /&gt;
  4zkegRE40zWzONyoNNMIOIa cWnp6aDCGEGE9NQmoQd2mg00 &lt;br /&gt;
  79U4f3hPTwnfp6Sdrafeqpa JDpFw/1aYT077VNNNdO00G3q &lt;br /&gt;
  mqqvp9p2E7T0/wiFemv8uG6 OM&amp;lt;/content&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В тэге content возвращаются бинарные данные (файл pdf), закодированные в base64.&lt;br /&gt;
При записи в файл необходимо использовать двоичный формат записи!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Блок integration содержит отдельные наклейки для заказов, предоставленные подрядчиком, так же закодированные в base64.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание''' Лимит количества при единовременном получении печатных форм - 1000 штук. Если нужно получить больше - делайте это несколькими запросами.&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание''' Печатные формы для заборов не формируются.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;waybill&amp;gt;&lt;br /&gt;
  &amp;lt;error&amp;gt;Текст ошибки&amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/waybill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник городов ==&lt;br /&gt;
'''Пример запроса справочника городов:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;townlist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;zipcode&amp;gt;110000&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;0100000100800&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;bd21979d-46f8-49d0-9105-e8d65172a983&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Краснодарский край&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;новгород&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namecontainsparts&amp;gt;молоково моск&amp;lt;/namecontainsparts&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Моск&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Москва&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Москва город&amp;lt;/fullname&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;1&amp;lt;/country&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
  &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/townlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера townlist все элементы могут как отсутствовать, так и комбинироваться. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Авторизация, необязательный элемент. Используется в случае включенного и настроенного ограничения по населенным пунктам в конкретной курьерской службе.&lt;br /&gt;
&lt;br /&gt;
* '''codesearch''' — Поиск по кодам. В случае использования — контейнеры conditions и limit игнорируются.&lt;br /&gt;
:* '''zipcode''' — Поиск по индексу. Обратите внимание на то, что один почтовый индекс может распространяться на несколько населенных пунктов. В этом случае система вернет несколько записей.&lt;br /&gt;
:* '''kladrcode''' — Поиск по 13-ти значному коду КЛАДР.&lt;br /&gt;
:* '''fiascode''' — Поиск по коду ФИАС (AOGUID).&lt;br /&gt;
:* '''code''' — Поиск по коду в системе.&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''city''' — Поиск по всем населенным пунктам региона.&lt;br /&gt;
:* '''namecontainsparts''' — Поиск населенных пунктов, название которых содержит все указанные слова, с разбиением поисковой фразы через пробел. Например &amp;quot;моск моло&amp;quot; найдет деревню &amp;quot;Молоково&amp;quot; в Московской области.&lt;br /&gt;
:* '''namecontains''' — Поиск населенных пунктов, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск населенных пунктов, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск населенных пунктов, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''fullname''' — Поиск населенных пунктов, название вместе с типом населенного пункта которых соответствует указанному тексту.&lt;br /&gt;
:* '''country''' — Поиск только по стране с указанным внутренним кодом или текстовым кодом в соответствии [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» для России.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 10000.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено — в ответе не указываются totalcount и totalpages.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;townlist count=&amp;quot;3&amp;quot; page=&amp;quot;1&amp;quot; totalcount=&amp;quot;3&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;26379&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;23&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Краснодарский край&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочи город&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;79da737a-603b-4c19-9b54-9114c96fb912&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;2300000700000&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;typename /&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;43.5855&amp;quot; lon=&amp;quot;39.7231&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;40331&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;32&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Брянская область&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочилов хутор&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;c9c96c67-2cc9-4f10-afde-fd32417ea216&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;3201900011100&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;&lt;br /&gt;
    &amp;lt;typename /&amp;gt;&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;52.6407&amp;quot; lon=&amp;quot;33.1724&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
  &amp;lt;town&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;114016&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Псковская область&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Сочихино деревня&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fiascode&amp;gt;10df7588-19c1-49d1-a387-9de1cf3eb26f&amp;lt;/fiascode&amp;gt;&lt;br /&gt;
    &amp;lt;kladrcode&amp;gt;6001900015400&amp;lt;/kladrcode&amp;gt;&lt;br /&gt;
    &amp;lt;shortname /&amp;gt;&lt;br /&gt;
    &amp;lt;typename /&amp;gt;&lt;br /&gt;
    &amp;lt;coords lat=&amp;quot;56.6003&amp;quot; lon=&amp;quot;29.3542&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/town&amp;gt;&lt;br /&gt;
&amp;lt;/townlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ответе города сортируются по популярности, важности (районные центры и т. д.), и только затем — по алфавиту.&lt;br /&gt;
&lt;br /&gt;
== Справочник регионов ==&lt;br /&gt;
'''Пример запроса справочника:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;regionlist&amp;gt;&lt;br /&gt;
  &amp;lt;codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;77&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;край&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Моск&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Московская область&amp;lt;/fullname&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;RU&amp;lt;/country&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
&amp;lt;/regionlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;regionlist count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;city&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Россия&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;643&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName1&amp;gt;RU&amp;lt;/ShortName1&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName2&amp;gt;RUS&amp;lt;/ShortName2&amp;gt;&lt;br /&gt;
    &amp;lt;/country&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Агинский Бурятский автономный округ&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/city&amp;gt;&lt;br /&gt;
  &amp;lt;city&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Россия&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;643&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName1&amp;gt;RU&amp;lt;/ShortName1&amp;gt;&lt;br /&gt;
      &amp;lt;ShortName2&amp;gt;RUS&amp;lt;/ShortName2&amp;gt;&lt;br /&gt;
    &amp;lt;/country&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Адыгея республика&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/city&amp;gt;&lt;br /&gt;
&amp;lt;/regionlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник улиц ==&lt;br /&gt;
'''Пример запроса справочника улиц:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;streetlist&amp;gt;&lt;br /&gt;
  &amp;lt;conditions&amp;gt;&lt;br /&gt;
    &amp;lt;town&amp;gt;Москва город&amp;lt;/town&amp;gt;   // ОБЯЗАТЕЛЬНОЕ ПОЛЕ!&lt;br /&gt;
    &amp;lt;namecontains&amp;gt;Хохло&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
    &amp;lt;namestarts&amp;gt;Академика Х&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Академика Хохлова&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;fullname&amp;gt;Академика Хохлова ул.&amp;lt;/fullname&amp;gt;&lt;br /&gt;
  &amp;lt;/conditions&amp;gt;&lt;br /&gt;
  &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
  &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/streetlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''town''' — Обязательное поле. Название или код населенного пункта.&lt;br /&gt;
:* '''namecontains''' — Поиск улиц, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск улиц, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск улиц, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''fullname''' — Поиск улиц, для которых название вместе с типом соответствует указанному тексту.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 10000.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено, в ответе не указываются totalcount и totalpages.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;streetlist count=&amp;quot;1&amp;quot; page=&amp;quot;1&amp;quot; totalcount=&amp;quot;3&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;street&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;124&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Академика Хохлова ул.&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;shortname&amp;gt;Академика Хохлова&amp;lt;/shortname&amp;gt;&lt;br /&gt;
     &amp;lt;typename&amp;gt;ул.&amp;lt;/typename&amp;gt;&lt;br /&gt;
  &amp;lt;/street&amp;gt;&lt;br /&gt;
&amp;lt;/streetlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ответе улицы сортируются по алфавиту.&lt;br /&gt;
&lt;br /&gt;
== Справочник номенклатуры ==&lt;br /&gt;
'''Пример запроса справочника номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemlist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
    &amp;lt;codesearch&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;123456&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;article&amp;gt;FD343&amp;lt;/article&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;2345625213125&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;/codesearch&amp;gt;&lt;br /&gt;
    &amp;lt;conditions&amp;gt;&lt;br /&gt;
      &amp;lt;namecontains&amp;gt;телевизор&amp;lt;/namecontains&amp;gt;&lt;br /&gt;
      &amp;lt;namestarts&amp;gt;sony&amp;lt;/namestarts&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Sony KDL-55W905 ЖК-телевизор&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;EXISTING_ONLY&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;store&amp;gt;2&amp;lt;/store&amp;gt;&lt;br /&gt;
    &amp;lt;/conditions&amp;gt;&lt;br /&gt;
    &amp;lt;except&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;123478&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/except&amp;gt;&lt;br /&gt;
    &amp;lt;limit&amp;gt;&lt;br /&gt;
      &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
      &amp;lt;limitcount&amp;gt;10&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
      &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
    &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера itemlist все элементы могут как отсутствовать, так и комбинироваться. Поиск не чувствителен к регистру.&lt;br /&gt;
* '''codesearch''' — Поиск по кодам. В случае использования — контейнеры conditions и limit игнорируются.&lt;br /&gt;
:* '''code''' — Поиск по внутреннему коду системы.&lt;br /&gt;
:* '''article''' — Поиск по артикулу.&lt;br /&gt;
:* '''barcode''' — Поиск по штрихкоду.&lt;br /&gt;
&lt;br /&gt;
* '''conditions''' — Задает условия поиска. Все вложенные элементы одновременно накладывают условие «И».&lt;br /&gt;
:* '''namecontains''' — Поиск товаров, название которых содержит указанный текст.&lt;br /&gt;
:* '''namestarts''' — Поиск товаров, название которых начинается с указанного текста.&lt;br /&gt;
:* '''name''' — Поиск товаров, название которых соответствует указанному тексту.&lt;br /&gt;
:* '''quantity''' — Наличие на складе. Принимает значения EXISTING_ONLY — Только в наличии, NOT_EXISTING_ONLY — Только не в наличии, ALL — Все. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
:* '''store''' — Поиск товаров по определенному складу.&lt;br /&gt;
&lt;br /&gt;
* '''except''' — Описание исключений для корректного определения количества зарезервированной номенклатуры.&lt;br /&gt;
:* '''code''' — Код заказа.&lt;br /&gt;
&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ.&lt;br /&gt;
:* '''limitcount''' — Задает количество записей результата, которые нужно вернуть.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;itemlist count=&amp;quot;3&amp;quot; totalcount=&amp;quot;3&amp;quot; page=&amp;quot;1&amp;quot; totalpages=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;item&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123456&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;article&amp;gt;FD343&amp;lt;/article&amp;gt;&lt;br /&gt;
    &amp;lt;barcode&amp;gt;2345625213125&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Sony KDL-55W905 ЖК-телевизор&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;retprice&amp;gt;65000&amp;lt;/retprice&amp;gt;&lt;br /&gt;
    &amp;lt;purchprice&amp;gt;50000&amp;lt;/purchprice&amp;gt;&lt;br /&gt;
    &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
    &amp;lt;length&amp;gt;50&amp;lt;/length&amp;gt;&lt;br /&gt;
    &amp;lt;width&amp;gt;30&amp;lt;/width&amp;gt;&lt;br /&gt;
    &amp;lt;height&amp;gt;40&amp;lt;/height&amp;gt;&lt;br /&gt;
    &amp;lt;VATrate&amp;gt;20&amp;lt;/VATrate&amp;gt;&lt;br /&gt;
    &amp;lt;CountInPallet&amp;gt;30&amp;lt;/CountInPallet&amp;gt;&lt;br /&gt;
    &amp;lt;CountInBox&amp;gt;2&amp;lt;/CountInBox&amp;gt;&lt;br /&gt;
    &amp;lt;HasSerials&amp;gt;1&amp;lt;/HasSerials&amp;gt;&lt;br /&gt;
    &amp;lt;CountryOfOrigin&amp;gt;Малайзия&amp;lt;/CountryOfOrigin&amp;gt;  (not yet supported)&lt;br /&gt;
    &amp;lt;Message&amp;gt;Хороший телевизор&amp;lt;/Message&amp;gt;&lt;br /&gt;
    &amp;lt;Message2&amp;gt;Снова хороший телевизор&amp;lt;/Message2&amp;gt;&lt;br /&gt;
    &amp;lt;quantity&amp;gt;12&amp;lt;/quantity&amp;gt;&lt;br /&gt;
    &amp;lt;reserved&amp;gt;3&amp;lt;/reserved&amp;gt;&lt;br /&gt;
  &amp;lt;item&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Описание полей:'''&lt;br /&gt;
* '''code''' — Внутренний идентификатор, присвоенный системой.&lt;br /&gt;
* '''article''' — Артикул, назначенный клиентом (поставщиком).&lt;br /&gt;
* '''barcode''' — Штрихкод производителя.&lt;br /&gt;
* '''name''' — Наименование.&lt;br /&gt;
* '''retprice''' — Розничная цена по-умолчанию. При оформлении заказа цена используется та, которая указана в заказе.&lt;br /&gt;
* '''purchprice''' — Закупочная цена.&lt;br /&gt;
* '''weight''' — Масса в килограммах.&lt;br /&gt;
* '''length''' — Длина в сантиметрах.&lt;br /&gt;
* '''width''' — Ширина в сантиметрах.&lt;br /&gt;
* '''height''' — Высота в сантиметрах.&lt;br /&gt;
* '''VATrate''' — Ставка НДС, целое число процентов.&lt;br /&gt;
* '''CountInPallet''' — Количество штук в паллете.&lt;br /&gt;
* '''CountInBox''' — Количество штук в упаковке.&lt;br /&gt;
* '''HasSerials''' — Требует учета серийных номеров. Принимает значения 1 — да, 0 — нет.&lt;br /&gt;
* '''CountryOfOrigin''' — Наименование страны происхождения на русском языке.&lt;br /&gt;
* '''Message''' — Комментарий.&lt;br /&gt;
* '''Message2''' — Дополнительный комментарий.&lt;br /&gt;
* '''quantity''' — Количество на складе. Товары, уже собранные в заказы в этом количестве не присутствуют, считаются покинувшими товарный склад. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
* '''reserved''' — Количество зарезервированного товара. Может превышать остаток на складе, если покупатели ждут следующей поставки. ''Это поле может быть недоступным в некоторых установках.''&lt;br /&gt;
&lt;br /&gt;
== Движение номенклатуры ==&lt;br /&gt;
'''Пример запроса движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemmovements&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;datefrom&amp;gt;2020-10-01&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
 &amp;lt;dateto&amp;gt;2020-10-02&amp;lt;/dateto&amp;gt;&lt;br /&gt;
&amp;lt;/itemmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — внутренний код товара в справочнике номенклатуры.&lt;br /&gt;
* '''datefrom''' — дата начала периода.&lt;br /&gt;
* '''dateto''' — дата окончания периода.&lt;br /&gt;
Может быть указан или код, или период, или код и период одновременно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemmovements count=&amp;quot;16&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;itemmovement&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;151500&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;retprice&amp;gt;0&amp;lt;/retprice&amp;gt;&lt;br /&gt;
    &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
    &amp;lt;delivered&amp;gt;0&amp;lt;/delivered&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Возврат от покупателя&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;store&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;офис в Москве&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/store&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
      &amp;lt;ordercode&amp;gt;3374830&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;123660-0&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-24&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
      &amp;lt;company&amp;gt;ТОВАР&amp;lt;/company&amp;gt;&lt;br /&gt;
      &amp;lt;address&amp;gt;Кравченко ул., 1&amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;delivereddate&amp;gt;2017-05-29&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredtime&amp;gt;12:00:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredto /&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;document&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/document&amp;gt;&lt;br /&gt;
    &amp;lt;serials&amp;gt;&lt;br /&gt;
      &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
    &amp;lt;/serials&amp;gt;&lt;br /&gt;
  &amp;lt;/itemmovements&amp;gt;&lt;br /&gt;
&amp;lt;/itemlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''code''' — внутренний код операции движения&lt;br /&gt;
* '''date''' — дата операции&lt;br /&gt;
* '''retprice''' — цена товара&lt;br /&gt;
* '''quantity''' — количество товара операции&lt;br /&gt;
* '''delivered''' — количество доставленного товара&lt;br /&gt;
&lt;br /&gt;
* '''item''' — контейнер товара&lt;br /&gt;
:* '''code''' — внутренний код товара&lt;br /&gt;
:* '''name''' — наименование товара&lt;br /&gt;
&lt;br /&gt;
* '''status''' — контейнер статуса операции&lt;br /&gt;
:* '''code''' — код статуса&lt;br /&gt;
:* '''name''' — наименование&lt;br /&gt;
&lt;br /&gt;
* '''store''' — контейнер филиала, к которому относится операция&lt;br /&gt;
:* '''code''' — код филиала&lt;br /&gt;
:* '''name''' — наименование филиала&lt;br /&gt;
&lt;br /&gt;
* '''order''' — контейнер корреспонденции&lt;br /&gt;
:* '''ordercode''' — внутренний код заказа&lt;br /&gt;
:* '''number''' — номер заказа&lt;br /&gt;
:* '''date''' — дата заказа&lt;br /&gt;
:* '''orderno''' — шифр&lt;br /&gt;
:* '''barcode''' — штрихкод&lt;br /&gt;
:* '''company''' — компания&lt;br /&gt;
:* '''address''' — адрес&lt;br /&gt;
:* '''delivereddate''' — дата вручения&lt;br /&gt;
:* '''deliveredtime''' — время вручения&lt;br /&gt;
:* '''deliveredto''' — данные о вручении, либо причина недоставки&lt;br /&gt;
&lt;br /&gt;
* '''document''' — контейнер документа операции&lt;br /&gt;
:* '''code''' — внутренний код документа&lt;br /&gt;
:* '''number''' — номер документа&lt;br /&gt;
:* '''extnumber''' — внешний номер документа&lt;br /&gt;
:* '''date''' — дата документа&lt;br /&gt;
:* '''message''' — комментарий&lt;br /&gt;
&lt;br /&gt;
* '''serials''' — контейнер серийных номеров&lt;br /&gt;
:* '''serial''' — серийный номер единицы номенклатуры, участвующей в движении&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Серийные номера ==&lt;br /&gt;
'''Пример запроса движения номенклатуры с серийным номером:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;serialmovements&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
&amp;lt;/serialmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''serial''' — серийный номер единицы номенклатуры.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры с серийным номером:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;serialmovements count=&amp;quot;16&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;serialmovement&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;151500&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;delivered&amp;gt;0&amp;lt;/delivered&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Возврат от покупателя&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/status&amp;gt;&lt;br /&gt;
    &amp;lt;order&amp;gt;&lt;br /&gt;
      &amp;lt;ordercode&amp;gt;3374830&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;123660-0&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-24&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
      &amp;lt;company&amp;gt;ТОВАР&amp;lt;/company&amp;gt;&lt;br /&gt;
      &amp;lt;address&amp;gt;Кравченко ул., 1&amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;delivereddate&amp;gt;2017-05-29&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredtime&amp;gt;12:00:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
      &amp;lt;deliveredto /&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;document&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
      &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
      &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/document&amp;gt;&lt;br /&gt;
  &amp;lt;/serialmovement&amp;gt;&lt;br /&gt;
&amp;lt;/serialmovements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
&lt;br /&gt;
Описание аналогично описанию полей [[#Движение номенклатуры|движения номенклатуры]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Серийные номера по заказу ==&lt;br /&gt;
'''Пример запроса движения серийных номеров заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;orderserials&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
  &amp;lt;ordercode&amp;gt;123456789&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
  &amp;lt;orderno&amp;gt;123456789&amp;lt;/orderno&amp;gt;&lt;br /&gt;
  &amp;lt;barcode&amp;gt;123456789&amp;lt;/barcode&amp;gt;&lt;br /&gt;
&amp;lt;/orderserials&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''ordercode''' — внутренний код заказа.&lt;br /&gt;
* '''orderno''' — шифр заказа.&lt;br /&gt;
* '''barcode''' — штрих-код заказа.&lt;br /&gt;
Указывать необходимо один из идентификаторов заказа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения серийных номеров заказа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;orderserials&amp;gt;&lt;br /&gt;
  &amp;lt;order&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;3374830&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;orderno&amp;gt;14123&amp;lt;/orderno&amp;gt;&lt;br /&gt;
    &amp;lt;barcode&amp;gt;0000000670&amp;lt;/barcode&amp;gt;&lt;br /&gt;
    &amp;lt;delivereddate&amp;gt;2024-07-20&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
    &amp;lt;deliveredtime&amp;gt;10:04:00&amp;lt;/deliveredtime&amp;gt;&lt;br /&gt;
    &amp;lt;assemblydate&amp;gt;2024-07-19 07:05:34&amp;lt;/assemblydate&amp;gt;&lt;br /&gt;
  &amp;lt;/order&amp;gt;&lt;br /&gt;
  &amp;lt;items&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;code&amp;gt;4259&amp;lt;/code&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Настольная игра Дженга&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;article&amp;gt;123000&amp;lt;/article&amp;gt;&lt;br /&gt;
      &amp;lt;state&amp;gt;Delivered&amp;lt;/state&amp;gt;&lt;br /&gt;
      &amp;lt;serials&amp;gt;&lt;br /&gt;
        &amp;lt;serial&amp;gt;123456789&amp;lt;/serial&amp;gt;&lt;br /&gt;
      &amp;lt;/serials&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/items&amp;gt;&lt;br /&gt;
&amp;lt;/orderserials&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
&lt;br /&gt;
* '''order''' — блок заказа:&lt;br /&gt;
:* '''code''' — код&lt;br /&gt;
:* '''orderno''' — шифр&lt;br /&gt;
:* '''barcode''' — штрих-код&lt;br /&gt;
:* '''delivereddate''' — дата доставки факт&lt;br /&gt;
:* '''deliveredtime''' — время доставки факт&lt;br /&gt;
:* '''assemblydate''' — дата сборки&lt;br /&gt;
&lt;br /&gt;
* '''item''' — блок товара:&lt;br /&gt;
:* '''code''' — код&lt;br /&gt;
:* '''name''' — наименование&lt;br /&gt;
:* '''article''' — артикул&lt;br /&gt;
:* '''state''' — статус Доставлено (Delivered) или Возвращено (Returned)&lt;br /&gt;
:* '''serials''' — блок серийных номеров по заказу&lt;br /&gt;
&lt;br /&gt;
== Получение справочника тарифов по городам ==&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса справочника тарифов по городам'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;tariffs&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;townfrom&amp;gt;Москва&amp;lt;/townfrom&amp;gt;&lt;br /&gt;
 &amp;lt;service&amp;gt;1&amp;lt;/service&amp;gt;&lt;br /&gt;
 &amp;lt;mainonly&amp;gt;1&amp;lt;/mainonly&amp;gt;    &lt;br /&gt;
&amp;lt;/tariffs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — атрибут '''extra''' обязателен, по нему определяется курьерская служба.&lt;br /&gt;
* '''townfrom''' — город-отправитель. Если не передан, то городом будет «Москва».&lt;br /&gt;
* '''service''' — режим доставки. Обязательный элемент.&lt;br /&gt;
* '''mainonly''' — необязательный элемент. Если передан, то в ответе будут данные только по городам из справочника '''Межгород''' &amp;gt; '''Зоны'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что в ответе отдаются только тарифы, указанные в разделе &amp;quot;Тарифы по зонам&amp;quot; раздела &amp;quot;Межгород&amp;quot; в офисной системе курьерской службы, т.е. считающихся междугородними. &lt;br /&gt;
Доставка до городов, рассчитываемая по внутригородским тарифам,  в ответе НЕ ОТДАЕТСЯ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника тарифов по городам'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;townfrom&amp;quot;: &amp;quot;0c5b2444-70a0-4932-980c-b4dc0d3f02b5&amp;quot;,&lt;br /&gt;
    &amp;quot;service&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;tariffs&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;towntofias&amp;quot;: &amp;quot;0c5b2444-70a0-4932-980c-b4dc0d3f02b5&amp;quot;,&lt;br /&gt;
            &amp;quot;towntocode&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;towntoname&amp;quot;: &amp;quot;Москва город&amp;quot;,&lt;br /&gt;
            &amp;quot;townregion&amp;quot;: &amp;quot;Город Москва&amp;quot;,&lt;br /&gt;
            &amp;quot;distance&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;pricedistance&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;pricesnew&amp;quot;: {&lt;br /&gt;
                &amp;quot;before&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 100,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 1&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 150,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 5&lt;br /&gt;
                    }&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;after&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 0,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 1,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 38.01&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;price&amp;quot;: 15,&lt;br /&gt;
                        &amp;quot;every&amp;quot;: 1,&lt;br /&gt;
                        &amp;quot;mass&amp;quot;: 51.01&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;deliveryPeriodMin&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;deliveryPeriodMax&amp;quot;: 2&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''townfrom''' — код ФИАС города-отправителя.&lt;br /&gt;
* '''service''' — режим доставки.&lt;br /&gt;
* '''tariffs''' — cписок тарифов по городу.&lt;br /&gt;
:* '''townregion''' — регион города-получателя.&lt;br /&gt;
:* '''towntofias''' — код ФИАС города-получателя.&lt;br /&gt;
:* '''towntocode''' — внутренний код города-получателя.&lt;br /&gt;
:* '''towntoname''' — наименование города-получателя.&lt;br /&gt;
:* '''distance''' — дистанция в км до города от МКАД, если в запросе townfrom — Москва.&lt;br /&gt;
:* '''pricedistance''' — сумма за километраж до города от МКАД, если в запросе townfrom — Москва.&lt;br /&gt;
:* '''pricesnew''' — ваши настройки тарифов из справочника '''Межгород''' &amp;gt; '''Тарифы по зонам'''.&lt;br /&gt;
::* '''before/after''' — контейнеры ДО/ОТ.&lt;br /&gt;
:::* '''price''' — цена. Если ответ идет по «before», то в цену также плюсуется сумма pricedistance&lt;br /&gt;
:::* '''every''' — за каждые.&lt;br /&gt;
:::* '''mass''' — масса.&lt;br /&gt;
:* '''prices''' — устаревший элемент, не используется.&lt;br /&gt;
:* '''deliveryPeriodMin''' — минимальный срок доставки.&lt;br /&gt;
:* '''deliveryPeriodMax''' — максимальный срок доставки.&lt;br /&gt;
&lt;br /&gt;
== Номенклатура приходной накладной ==&lt;br /&gt;
'''Пример запроса номенклатуры приходной накладной:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemdoc&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/itemdoc&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — внутренний код документа приходной накладной (см. предыдущий запрос).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа движения номенклатуры:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;itemdoc&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;21991&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;number&amp;gt;318&amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;2017-05-26&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;items&amp;gt;&lt;br /&gt;
    &amp;lt;item code=&amp;quot;4259&amp;quot; quantity=&amp;quot;1&amp;quot; barcode=&amp;quot;200300&amp;quot; article=&amp;quot;123555&amp;quot;&amp;gt;Настольная игра Дженга&amp;lt;/item&amp;gt;&lt;br /&gt;
  &amp;lt;/items&amp;gt;&lt;br /&gt;
&amp;lt;/itemdoc&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Описание полей ответа '''&lt;br /&gt;
* '''code''' — внутренний код приходной накладной&lt;br /&gt;
* '''number''' — номер документа&lt;br /&gt;
* '''date''' — дата документа&lt;br /&gt;
* '''message''' — комментарий&lt;br /&gt;
&lt;br /&gt;
* '''item''' — контейнер товара&lt;br /&gt;
:* '''code''' — внутренний код товара&lt;br /&gt;
:* '''barcode''' — штрихкод товара&lt;br /&gt;
:* '''article''' — артикул товара&lt;br /&gt;
:* '''quantity''' — количество поступившего товара&lt;br /&gt;
&lt;br /&gt;
== Справочник филиалов ==&lt;br /&gt;
'''Пример запроса списка филиалов:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;storelist&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;json&amp;gt;YES&amp;lt;/json&amp;gt;&lt;br /&gt;
 &amp;lt;client_code&amp;gt;7890&amp;lt;/client_code&amp;gt;&lt;br /&gt;
&amp;lt;/storelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Атрибут '''extra''' — обязателен, по нему определяется курьерская служба&lt;br /&gt;
* '''json''' — Признак вывода ответа в виде JSON YES/NO&lt;br /&gt;
* '''client_code''' — Код клиента курьерской службы&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;storelist count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;store&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt;    &lt;br /&gt;
    &amp;lt;name&amp;gt;ABC&amp;lt;/name&amp;gt; &lt;br /&gt;
  &amp;lt;/store&amp;gt;&lt;br /&gt;
  &amp;lt;store&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;456&amp;lt;/code&amp;gt;   &lt;br /&gt;
    &amp;lt;name&amp;gt;Филиал 2&amp;lt;/name&amp;gt; &lt;br /&gt;
  &amp;lt;/store&amp;gt;&lt;br /&gt;
&amp;lt;/storelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код филиала.&lt;br /&gt;
* '''name''' — Наименование филиала.&lt;br /&gt;
&lt;br /&gt;
== Справочник пунктов самовывоза ==&lt;br /&gt;
Для отображения списка пунктов выдачи (ПВЗ) есть '''готовый JavaScript модуль''': https://home.courierexe.ru/js/measoft_map.js Инструкция по использованию — внутри. Посмотреть пример работы можно [https://home.courierexe.ru/pvz_test.html Здесь]&lt;br /&gt;
&lt;br /&gt;
Уникальные запросы списка ПВЗ кешируются на стороне личного кабинета и хранятся до 7 часов утра по московскому времени следующего дня. Например, если уникальный запрос с массой 2 кг был отправлен сегодня в 10 часов, то завтра в 7 утра он сбросится. Если сегодня в 18 часов в этом же запросе вы укажете массу 2 кг, в ответе вернется тот же список ПВЗ. Если передадите массу 3 кг, список может быть другим.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что если в выборке количество ПВЗ больше '''10000''' и не указаны параметры '''code''', '''json''' или '''limitcount''', то будет возвращаться ошибка. В этом случае необходимо использовать блок '''limit'''.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса пунктов самовывоза:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;pvzlist&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot;&amp;gt;&amp;lt;/auth&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;1234&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;client_code&amp;gt;7890&amp;lt;/client_code&amp;gt;&lt;br /&gt;
 &amp;lt;city&amp;gt;Свердловская область&amp;lt;/city&amp;gt;&lt;br /&gt;
 &amp;lt;town regioncode=&amp;quot;66&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Нижний Тагил&amp;lt;/town&amp;gt;&lt;br /&gt;
 &amp;lt;address&amp;gt;Щёлковское шоссе&amp;lt;/address&amp;gt;&lt;br /&gt;
 &amp;lt;house&amp;gt;77&amp;lt;/house&amp;gt;&lt;br /&gt;
 &amp;lt;advanced_search&amp;gt;Строка поиска&amp;lt;/advanced_search&amp;gt;&lt;br /&gt;
 &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
 &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
 &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
 &amp;lt;acceptfitting&amp;gt;YES&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
 &amp;lt;maxweight&amp;gt;30&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
 &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
 &amp;lt;respstores&amp;gt;YES&amp;lt;/respstores&amp;gt;&lt;br /&gt;
 &amp;lt;lt&amp;gt;57.924737&amp;lt;/lt&amp;gt;&lt;br /&gt;
 &amp;lt;lg&amp;gt;59.940019&amp;lt;/lg&amp;gt;&lt;br /&gt;
 &amp;lt;rt&amp;gt;57.905682&amp;lt;/rt&amp;gt;&lt;br /&gt;
 &amp;lt;rg&amp;gt;59.984669&amp;lt;/rg&amp;gt;&lt;br /&gt;
 &amp;lt;json&amp;gt;YES&amp;lt;/json&amp;gt;&lt;br /&gt;
 &amp;lt;with_coords&amp;gt;YES&amp;lt;/with_coords&amp;gt;&lt;br /&gt;
 &amp;lt;limit&amp;gt;&lt;br /&gt;
    &amp;lt;limitfrom&amp;gt;30&amp;lt;/limitfrom&amp;gt;&lt;br /&gt;
    &amp;lt;limitcount&amp;gt;2&amp;lt;/limitcount&amp;gt;&lt;br /&gt;
    &amp;lt;countall&amp;gt;YES&amp;lt;/countall&amp;gt;&lt;br /&gt;
 &amp;lt;/limit&amp;gt;&lt;br /&gt;
&amp;lt;/pvzlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''auth''' — Атрибут '''extra''' — обязателен, по нему определяется курьерская служба, '''login''' и '''pass''' позволяют авторизоваться под клиентом: для отдельного клиента могут быть ограничения по доступности некоторых ПВЗ, и в этом случае они будут учтены.&lt;br /&gt;
* '''code''' — Внутренний код, целое число.&lt;br /&gt;
* '''client_code''' — Код клиента курьерской службы.&lt;br /&gt;
* '''city''' — Регион получателя. Можно указать код региона или полное наименование региона из [[#Справочник регионов|справочника регионов]].&lt;br /&gt;
* '''town''' — Город получателя.&lt;br /&gt;
Для тега города '''town''' можно указать код региона в атрибуте '''''regioncode''''' из [[#Справочник регионов|справочника регионов]]. Поиск будет производиться в указанном регионе.&lt;br /&gt;
&lt;br /&gt;
Также можно указать страну получателя в атрибуте '''''country''''' в соответствии с [https://ru.wikipedia.org/wiki/ISO_3166-1 стандартом ISO_3166-1], например, «RU», «RUS» или «643» для России.&lt;br /&gt;
Для формата запроса JSON фильтрация по городу работает только в связке с фильтром по адресу.&lt;br /&gt;
&lt;br /&gt;
* '''address''' — Фильтр по адресу, работает только в связке с фильтром по городу&lt;br /&gt;
* '''house''' — Фильтр по номеру дома, работает только в связке с фильтрами по адресу и городу&lt;br /&gt;
* '''advanced_search''' — Фильтр по коду агента, наименованию, телефону или комментарию&lt;br /&gt;
* '''parentcode''' — Фильтр по родительскому [[#Справочник филиалов|филиалу]]&lt;br /&gt;
* '''acceptcash''' — Фильтр по приему наличных YES/NO&lt;br /&gt;
* '''acceptcard''' — Фильтр по приему банковских карт YES/NO&lt;br /&gt;
* '''acceptfitting''' — Фильтр по наличию примерки YES/NO&lt;br /&gt;
* '''maxweight''' — Фильтр по максимальному весу, с которым работает ПВЗ&lt;br /&gt;
* '''acceptindividuals''' — Фильтр по доступности физическим лицам YES/NO&lt;br /&gt;
* '''respstores''' - Признак вывода ответственных филиалов при значении YES&lt;br /&gt;
* '''lt''' — Широта левого верхнего угла&lt;br /&gt;
* '''lg''' — Долгота левого верхнего угла&lt;br /&gt;
* '''rt''' — Широта правого нижнего угла&lt;br /&gt;
* '''rg''' — Долгота правого нижнего угла&lt;br /&gt;
* '''json''' — Признак вывода ответа в виде JSON YES/NO&lt;br /&gt;
* '''with_coords''' — Признак вывода ПВЗ только с наличием координат YES/NO&lt;br /&gt;
* '''limit''' — Ограничивает вывод результата.&lt;br /&gt;
:* '''limitfrom''' — Задает номер записи результата, начиная с которой выдавать ответ. По-умолчанию — 0.&lt;br /&gt;
:* '''limitcount'''- Задает количество записей результата, которые нужно вернуть. По-умолчанию — 100.&lt;br /&gt;
:* '''countall''' — YES указывает на необходимость подсчета общего количества найденных совпадений. Это может замедлять выполнение запроса. Если отключено — в ответе не указываeтся totalcount.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника пунктов самовывоза:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;pvzlist count=&amp;quot;2&amp;quot; totalcount=&amp;quot;40465&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;pvz&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;126&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;clientcode&amp;gt;3&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Нижний Тагил&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
    &amp;lt;parentname&amp;gt;Интеграция&amp;lt;/parentname&amp;gt;&lt;br /&gt;
    &amp;lt;town code=&amp;quot;124267&amp;quot; regioncode=&amp;quot;66&amp;quot; regionname=&amp;quot;Свердловская область&amp;quot;&amp;gt;Нижний Тагил город&amp;lt;/town&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;622036, г. Нижний Тагил, ул. Циолковского, д. 17&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;+73435417709, +73435254989&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Новый пункт доставки&amp;lt;/comment&amp;gt;&lt;br /&gt;
    &amp;lt;worktime&amp;gt;Вс 10:00-16:00, Сб 10:00-16:00, Пн-Пт 10:00-20:00&amp;lt;/worktime&amp;gt;&lt;br /&gt;
    &amp;lt;traveldescription&amp;gt;Жилое 5-ти этажное здание, торцом к дороге, второе здание от перекрестка Пархоменко-Циолковского&amp;lt;/traveldescription&amp;gt;&lt;br /&gt;
    &amp;lt;maxweight&amp;gt;10&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
    &amp;lt;acceptfitting&amp;gt;YES&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
    &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
    &amp;lt;latitude&amp;gt;57.93457&amp;lt;/latitude&amp;gt;&lt;br /&gt;
    &amp;lt;longitude&amp;gt;59.95131&amp;lt;/longitude&amp;gt;&lt;br /&gt;
    &amp;lt;uid&amp;gt;40606d00-9c51-11eb-b2c9-cfd6c1111392&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;/pvz&amp;gt;&lt;br /&gt;
  &amp;lt;pvz&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;245&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;clientcode&amp;gt;NTG1&amp;lt;/clientcode&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;На Красноармейской&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;parentcode&amp;gt;6&amp;lt;/parentcode&amp;gt;&lt;br /&gt;
    &amp;lt;parentname&amp;gt;Интеграция&amp;lt;/parentname&amp;gt;&lt;br /&gt;
    &amp;lt;town code=&amp;quot;124267&amp;quot; regioncode=&amp;quot;66&amp;quot; regionname=&amp;quot;Свердловская область&amp;quot;&amp;gt;Нижний Тагил город&amp;lt;/town&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;КРАСНОАРМЕЙСКАЯ, д.79&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;+7(3435)379-044&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Возможность примерки отсутствует&amp;lt;/comment&amp;gt;&lt;br /&gt;
    &amp;lt;worktime&amp;gt;Вс 10:00-16:00, Сб 10:00-16:00, Пн-Пт 10:00-20:00&amp;lt;/worktime&amp;gt;&lt;br /&gt;
    &amp;lt;traveldescription&amp;gt;Напротив ТЦ Пирамида&amp;lt;/traveldescription&amp;gt;&lt;br /&gt;
    &amp;lt;maxweight&amp;gt;20&amp;lt;/maxweight&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcash&amp;gt;YES&amp;lt;/acceptcash&amp;gt;&lt;br /&gt;
    &amp;lt;acceptcard&amp;gt;YES&amp;lt;/acceptcard&amp;gt;&lt;br /&gt;
    &amp;lt;acceptfitting&amp;gt;NO&amp;lt;/acceptfitting&amp;gt;&lt;br /&gt;
    &amp;lt;acceptindividuals&amp;gt;YES&amp;lt;/acceptindividuals&amp;gt;&lt;br /&gt;
    &amp;lt;latitude&amp;gt;57.93468&amp;lt;/latitude&amp;gt;&lt;br /&gt;
    &amp;lt;longitude&amp;gt;60.55476&amp;lt;/longitude&amp;gt;&lt;br /&gt;
    &amp;lt;uid&amp;gt;41116853-9c51-11eb-b2c9-cfd6c1451392&amp;lt;/uid&amp;gt;&lt;br /&gt;
  &amp;lt;/pvz&amp;gt;&lt;br /&gt;
&amp;lt;/pvzlist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код ПВЗ в системе. Используется в запросе [[API#Оформление заказа|оформления заказов]]&lt;br /&gt;
* '''clientcode''' — Код ПВЗ используемый компанией-подрядчиком.&lt;br /&gt;
* '''name''' — Наименование ПВЗ.&lt;br /&gt;
* '''parentcode''' — Код родительского элемента.&lt;br /&gt;
* '''parentname''' — Наименование родительского элемента.&lt;br /&gt;
* '''town''' — Населенный пункт с кодом из [[#Справочник городов|справочника городов]], а также с кодом и наименованием региона.&lt;br /&gt;
* '''address''' — Адрес ПВЗ.&lt;br /&gt;
* '''phone''' — Телефоны ПВЗ.&lt;br /&gt;
* '''comment''' — Дополнительная информация.&lt;br /&gt;
* '''worktime''' — Режим работы ПВЗ.&lt;br /&gt;
* '''traveldescription''' — Описание местонахождения ПВЗ или пути к нему.&lt;br /&gt;
* '''maxweight''' — Максимальный вес, с которым работает ПВЗ.&lt;br /&gt;
* '''acceptcash''' — Признак приема наличных&lt;br /&gt;
* '''acceptcard''' — Признак приема банковских карт&lt;br /&gt;
* '''acceptfitting''' — Наличие примерки&lt;br /&gt;
* '''latitude''' — Широта&lt;br /&gt;
* '''longitude''' — Долгота&lt;br /&gt;
* '''uid''' — Уникальный идентификатор ПВЗ в системе Measoft. Создается автоматически при получении данных о ПВЗ от агентов.&lt;br /&gt;
* '''count''' — Количество записей в ответе&lt;br /&gt;
* '''totalcount''' — Общее количество записей, отвечающее параметрам запроса&lt;br /&gt;
&lt;br /&gt;
== Получение фискальных данных заказа ==&lt;br /&gt;
'''Пример запроса получения фискальных данных:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;receiptdata&amp;gt;&lt;br /&gt;
   &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;orders&amp;gt;&lt;br /&gt;
      &amp;lt;order orderno=&amp;quot;123456&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;order orderno=&amp;quot;890111C&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/orders&amp;gt;&lt;br /&gt;
&amp;lt;/receiptdata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа получения фискальных данных:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;receipts count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;receipt&amp;gt;&lt;br /&gt;
      &amp;lt;orderno&amp;gt;123456&amp;lt;/orderno&amp;gt;&lt;br /&gt;
      &amp;lt;fdDatetime&amp;gt;2020-06-07 12:14:00&amp;lt;/fdDatetime&amp;gt;&lt;br /&gt;
      &amp;lt;fdValue&amp;gt;123&amp;lt;/fdValue&amp;gt;&lt;br /&gt;
      &amp;lt;fdNum&amp;gt;456&amp;lt;/fdNum&amp;gt;&lt;br /&gt;
      &amp;lt;fnSn&amp;gt;789&amp;lt;/fnSn&amp;gt;&lt;br /&gt;
      &amp;lt;kktNum&amp;gt;100&amp;lt;/kktNum&amp;gt;&lt;br /&gt;
      &amp;lt;inn&amp;gt;222&amp;lt;/inn&amp;gt;&lt;br /&gt;
      &amp;lt;ofdUrl&amp;gt;gate.ofd.ru&amp;lt;/ofdUrl&amp;gt;&lt;br /&gt;
      &amp;lt;fullUrl&amp;gt;https://check.ofd.ru/123&amp;lt;/fullUrl&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;12345&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;payType&amp;gt;2&amp;lt;/payType&amp;gt;&lt;br /&gt;
      &amp;lt;lines count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;line&amp;gt;&lt;br /&gt;
            &amp;lt;item&amp;gt;1111764&amp;lt;/item&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Сапоги&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;extcode&amp;gt;27113415&amp;lt;/extcode&amp;gt;&lt;br /&gt;
            &amp;lt;qty&amp;gt;1&amp;lt;/qty&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;1000&amp;lt;/price&amp;gt;&lt;br /&gt;
            &amp;lt;vatRate&amp;gt;20&amp;lt;/vatRate&amp;gt;&lt;br /&gt;
            &amp;lt;governmentCode&amp;gt;Z16513LK2&amp;lt;/governmentCode&amp;gt;&lt;br /&gt;
            &amp;lt;itemType&amp;gt;1&amp;lt;/itemType&amp;gt;&lt;br /&gt;
         &amp;lt;/line&amp;gt;&lt;br /&gt;
      &amp;lt;/lines&amp;gt;&lt;br /&gt;
   &amp;lt;/receipt&amp;gt;&lt;br /&gt;
&amp;lt;/receipts&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры ответа:&lt;br /&gt;
* '''orderno''' — Номер заказа&lt;br /&gt;
* '''fdDatetime''' — Дата и время пробития фискального чека&lt;br /&gt;
* '''fdValue''' — ФПД (фискальный признак документа)&lt;br /&gt;
* '''fdNum''' — ФИСКАЛЬНЫЙ ДОКУМЕНТ (фискальный номер чека)&lt;br /&gt;
* '''fnSn''' — ФН (номер фискального накопителя)&lt;br /&gt;
* '''kktNum''' — РН (регистрационный номер кассы)&lt;br /&gt;
* '''inn''' — ИНН&lt;br /&gt;
* '''ofdUrl''' — URL адрес (доменное имя) ОФД&lt;br /&gt;
* '''price''' — Сумма чека&lt;br /&gt;
* '''paytype''' — Тип оплаты чека. Принимает значения:&lt;br /&gt;
:* CASH — Наличными (по-умолчанию)&lt;br /&gt;
:* CARD — Безналичным способом&lt;br /&gt;
* '''fullUrl''' — URL чека для просмотра онлайн&lt;br /&gt;
* '''lines''' — Позиции чека&lt;br /&gt;
:* '''item''' — код товара&lt;br /&gt;
:* '''name''' — наименование товара&lt;br /&gt;
:* '''extcode''' — код товара во внешних системах&lt;br /&gt;
:* '''qty''' — количество товара&lt;br /&gt;
:* '''price''' — цена товара&lt;br /&gt;
:* '''governmentCode''' — считанная последовательность, которая в дальнейшем преобразуется по алгоритму тега 1162&lt;br /&gt;
:* '''vatRate''' — НДС товара&lt;br /&gt;
:* '''itemType''' — тип товара (товар, доставка и т. д.)&lt;br /&gt;
&lt;br /&gt;
== Справочник Виды срочности ==&lt;br /&gt;
'''Пример запроса видов срочности:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;services&amp;gt;&lt;br /&gt;
&amp;lt;auth extra=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/services&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника видов срочности:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;services count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;service&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Эконом&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/service&amp;gt;&lt;br /&gt;
  &amp;lt;service&amp;gt;&lt;br /&gt;
     &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Срочно&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/service&amp;gt;&lt;br /&gt;
&amp;lt;/services&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочник дополнительных услуг ==&lt;br /&gt;
'''Пример запроса дополнительных услуг:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;advprices&amp;gt;&lt;br /&gt;
   &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/advprices&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''advprices''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа справочника дополнительных услуг:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;advprices&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Этажей в доме&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;int&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Коэффициент надбавки&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
   &amp;lt;advprice&amp;gt;&lt;br /&gt;
       &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;Расписаться на упаковке&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;type&amp;gt;bool&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;/advprice&amp;gt;&lt;br /&gt;
&amp;lt;/advprices&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
* '''code''' — внутренний код услуги&lt;br /&gt;
* '''name''' — наименование услуги. Если поле «название в ЛК» в настройках услуги не пусто, то возвращает значение поля «название в ЛК».&lt;br /&gt;
* '''hine''' — подсказка по доп услуге для пользователя&lt;br /&gt;
* '''type''' — тип услуги. Может иметь значения:&lt;br /&gt;
:* '''bool''' — для услуг вида «чекбокс», «Да»&lt;br /&gt;
:* '''float''' — для числа с плавающей точкой&lt;br /&gt;
:* '''int''' — для целого числа&lt;br /&gt;
&lt;br /&gt;
== Расчет стоимости доставки ==&lt;br /&gt;
'''Пример запроса стоимости доставки:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;calculator&amp;gt;&lt;br /&gt;
 &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;order&amp;gt;&lt;br /&gt;
  &amp;lt;pricetype&amp;gt;CUSTOMER&amp;lt;/pricetype&amp;gt;&lt;br /&gt;
  &amp;lt;sender&amp;gt;&lt;br /&gt;
     &amp;lt;town&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/sender&amp;gt;&lt;br /&gt;
   &amp;lt;receiver&amp;gt;&lt;br /&gt;
     &amp;lt;zipcode&amp;gt;125480&amp;lt;/zipcode&amp;gt;&lt;br /&gt;
     &amp;lt;town regioncode=&amp;quot;78&amp;quot; country=&amp;quot;RU&amp;quot;&amp;gt;Санкт-Петербург&amp;lt;/town&amp;gt;&lt;br /&gt;
     &amp;lt;address&amp;gt;Петровка 38 офис 35&amp;lt;/address&amp;gt;&lt;br /&gt;
     &amp;lt;pvz&amp;gt;124&amp;lt;/pvz&amp;gt;&lt;br /&gt;
     &amp;lt;coords lat=&amp;quot;55.680327&amp;quot; lon=&amp;quot;37.604456&amp;quot;&amp;gt;&amp;lt;/coords&amp;gt;&lt;br /&gt;
   &amp;lt;/receiver&amp;gt;&lt;br /&gt;
   &amp;lt;weight&amp;gt;5.1&amp;lt;/weight&amp;gt;&lt;br /&gt;
   &amp;lt;service&amp;gt;2&amp;lt;/service&amp;gt;&lt;br /&gt;
   &amp;lt;paytype&amp;gt;CASH&amp;lt;/paytype&amp;gt;&lt;br /&gt;
   &amp;lt;price&amp;gt;387.5&amp;lt;/price&amp;gt;&lt;br /&gt;
   &amp;lt;deliveryprice&amp;gt;150&amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
   &amp;lt;inshprice&amp;gt;387.5&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
   &amp;lt;packages&amp;gt;&lt;br /&gt;
      &amp;lt;package mass=&amp;quot;1&amp;quot; quantity=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
      &amp;lt;package mass=&amp;quot;2.5&amp;quot; length=&amp;quot;10&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/package&amp;gt;&lt;br /&gt;
   &amp;lt;/packages&amp;gt;&lt;br /&gt;
   &amp;lt;userid&amp;gt;user123&amp;lt;/userid&amp;gt;&lt;br /&gt;
   &amp;lt;groupid&amp;gt;customer&amp;lt;/groupid&amp;gt;&lt;br /&gt;
 &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/calculator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
Структура данных и заполнение полей аналогичны и совместимы с [[#Оформление заказа]].&lt;br /&gt;
&lt;br /&gt;
Дополнительные поля:&lt;br /&gt;
* '''pricetype''' — тип требуемой цены. Возможные значения: «CUSTOMER» (по-умолчанию) — [[Личный кабинет клиента#Цена доставки для получателя|цена для конечного получателя]], «CLIENT» — цена курьерской службы для клиента.&lt;br /&gt;
* '''userid''' — Идентификатор пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенного покупателя.&lt;br /&gt;
* '''groupid''' — Идентификатор группы пользователя, строковый или числовой тип. Виртуальное поле. Необязательное. Данное поле используется совместно с настройками «Цена доставки для получателя», определяя приоритет правила. Можно использовать в различных CMS/CRM системах, настраивая цены для определенной группы покупателей.&lt;br /&gt;
&lt;br /&gt;
Суммы НП и ОЦ, а также тип оплаты CARD имеют значение при настроенных в тарифе на вкладке Прочее долях (в процентах) от данных сумм.&lt;br /&gt;
&lt;br /&gt;
В авторизации можно опустить параметры login и pass, тогда расчет будет производиться по стандартному тарифу курьерской службы, без учета возможных отличий для конкретного клиента.&amp;lt;br&amp;gt;&lt;br /&gt;
Объемный вес будет учитываться только при условии указания всех габаритов: длины, ширины и высоты.&amp;lt;br&amp;gt;&lt;br /&gt;
В полях город-отправитель и город-получатель можно указывать название города (не рекомендуется!), либо код города из нашего справочника, либо 13-ти значный код КЛАДР, либо 36-ти значный код адресной системы ФИАС (AOID).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа стоимости доставки:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;calculator&amp;gt;&lt;br /&gt;
  &amp;lt;calc&amp;gt;&lt;br /&gt;
    &amp;lt;townfrom code=&amp;quot;1&amp;quot;&amp;gt;Москва город&amp;lt;/townfrom&amp;gt;&lt;br /&gt;
    &amp;lt;townto code=&amp;quot;56603&amp;quot;&amp;gt;Иркутск город&amp;lt;/townto&amp;gt;&lt;br /&gt;
    &amp;lt;mass&amp;gt;3.7&amp;lt;/mass&amp;gt;&lt;br /&gt;
    &amp;lt;service name=&amp;quot;Экспресс&amp;quot;&amp;gt;1&amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;zone&amp;gt;2&amp;lt;/zone&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;1113&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;mindeliverydays&amp;gt;1&amp;lt;/mindeliverydays&amp;gt;&lt;br /&gt;
    &amp;lt;maxdeliverydays&amp;gt;3&amp;lt;/maxdeliverydays&amp;gt;&lt;br /&gt;
    &amp;lt;mindeliverydate&amp;gt;2020-05-13&amp;lt;/mindeliverydate&amp;gt;&lt;br /&gt;
    &amp;lt;intervals&amp;gt;&lt;br /&gt;
        &amp;lt;workdays&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;10:00-16:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;16:00-22:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
        &amp;lt;/workdays&amp;gt;&lt;br /&gt;
        &amp;lt;holidays&amp;gt;&lt;br /&gt;
            &amp;lt;interval&amp;gt;12:00-16:00&amp;lt;/interval&amp;gt;&lt;br /&gt;
        &amp;lt;/holidays&amp;gt;&lt;br /&gt;
    &amp;lt;/intervals&amp;gt;&lt;br /&gt;
    &amp;lt;deliveryprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;1&amp;quot; price=&amp;quot;1000&amp;quot;&amp;gt;База&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;4&amp;quot; price=&amp;quot;100&amp;quot;&amp;gt;Процент от суммы руб&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;5&amp;quot; price=&amp;quot;63&amp;quot;&amp;gt;Процент от объявленной стоимости&amp;lt;/advprice&amp;gt;&lt;br /&gt;
     &amp;lt;advprice code=&amp;quot;6&amp;quot; price=&amp;quot;-50&amp;quot;&amp;gt;Скидка при доставке&amp;lt;/advprice&amp;gt;&lt;br /&gt;
    &amp;lt;/deliveryprice&amp;gt;&lt;br /&gt;
  &amp;lt;/calc&amp;gt;&lt;br /&gt;
&amp;lt;/calculator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
* '''townfrom''' — Город-отправитель так, как система его распознала и привязала к справочнику. Атрибут '''code''' — код из справочника городов системы.&lt;br /&gt;
* '''townto''' — Город-получатель так, как система его распознала и привязала к справочнику. Атрибут '''code''' — код из справочника городов системы.&lt;br /&gt;
* '''mass''' — Масса в килограммах&lt;br /&gt;
* '''service''' — Режим доставки — число, указывающее на запись в справочнике видов срочности (см описание на этой странице).&lt;br /&gt;
* '''zone''' — номер тарифной зоны, по которой рассчиталась стоимость. В зависимости от зоны выбирается тарифная сетка. Так же к цене могут применяться повышающие или понижающие коэффициенты при доставке не из/в региональный центр.&lt;br /&gt;
* '''price''' — рассчитанная стоимость доставки в валюте прайс-листа курьерской службы. Рекомендуется к использованию в отличие от одноименного атрибута родительского контейнера.&lt;br /&gt;
* '''maxdeliverydays''' — максимальный срок доставки в рабочих днях.&lt;br /&gt;
* '''mindeliverydate''' — минимальная дата доставки в учетом выходных дней.&lt;br /&gt;
* '''intervals''' — список интервалов доставки для соответствующей зоны и режима срочности.&lt;br /&gt;
* '''deliveryprice''' — Данные по составляющим ценам доставки&lt;br /&gt;
&lt;br /&gt;
'''''Обратите внимание:''''' В реальном ответе сервера в теге calc присутствует атрибут «price». Он оставлен для обратной совместимости, не используйте его. Пользуйтесь вложенным тегом price.&lt;br /&gt;
&lt;br /&gt;
=== Коды и описание ошибок ===&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!Код ошибки&lt;br /&gt;
!Английское описание&lt;br /&gt;
!Русское описание&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|15||tarif not found||Тариф не найден||Ошибка получения тарифов: для клиента не указан тариф&lt;br /&gt;
|-&lt;br /&gt;
|19||field [town to] cannot be empty||Поле [город получателя] не может быть пустым||Необходимо указать город получателя или ПВЗ&lt;br /&gt;
|-&lt;br /&gt;
|20||field [weight] is incorrect||Некорректное значение [масса]||Значение массы некорректное, например, не является числом. Его необходимо исправить&lt;br /&gt;
|-&lt;br /&gt;
|21||town from not found||Город отправителя не найден||Системе не удалось найти указанный населенный пункт отправителя&lt;br /&gt;
|-&lt;br /&gt;
|22||town to not found||Город получателя не найден||Системе не удалось найти указанный населенный пункт отправителя&lt;br /&gt;
|-&lt;br /&gt;
|23||field [weight] cannot be empty||Поле [масса] не может быть пустым||Необходимо указать значение массы отправления, поле [weight]&lt;br /&gt;
|-&lt;br /&gt;
|36||subtown not found||Город в регионе не найден||Не настроено направление доставки до города в регионе: не добавлен регион или указанный город отсутствует в списке региона&lt;br /&gt;
|-&lt;br /&gt;
|37||zoneprice not found||Тариф зоны не найден||Отсутствуют зоны тарификации или для них не указаны стоимости&lt;br /&gt;
|-&lt;br /&gt;
|38||tarif not found - 1||Тариф не найден 1||Результаты расчета отсутствуют: общая ошибка в случае, если других ошибок нет, но результат пустой &lt;br /&gt;
|-&lt;br /&gt;
|39||tarif not found - 2||Тариф не найден 2||Ошибка получения тарифов: для клиента не настроен тариф или тарификация от количества заказов&lt;br /&gt;
|-&lt;br /&gt;
|82||field [weight] exceeded limit PVZ||Значение [weight] превышает ограничение ПВЗ||Указанное значение массы больше, чем максимально допустимое для указанного ПВЗ&lt;br /&gt;
|-&lt;br /&gt;
|83||attribute [paytype] not allowed PVZ||Значение [paytype] не допустимо для ПВЗ||В ПВЗ не допустим указанный тип оплаты&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Получение информации о клиенте ==&lt;br /&gt;
'''Пример запроса получения информации о клиенте:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;client&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt; &lt;br /&gt;
&amp;lt;/client&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''client''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос получения информации о клиенте:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;client&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;1082&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/client&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код клиента&lt;br /&gt;
&lt;br /&gt;
== Список актов передачи денег ==&lt;br /&gt;
'''Пример запроса списка актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;smalist&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;datefrom&amp;gt;2016-02-10&amp;lt;/datefrom&amp;gt;&lt;br /&gt;
  &amp;lt;dateto&amp;gt;2016-03-10&amp;lt;/dateto&amp;gt;&lt;br /&gt;
&amp;lt;/smalist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''smalist''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''datefrom''' — Дата «с». Необязательный элемент.&lt;br /&gt;
* '''dateto''' — Дата «по». Необязательный элемент.&lt;br /&gt;
Если интервал дат не указан, то возвращаются акты передачи денег за последний месяц.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос списка актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;smalist count=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;sma&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;6278&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;number&amp;gt;3992&amp;lt;/number&amp;gt;&lt;br /&gt;
    &amp;lt;actdate&amp;gt;2016-02-12&amp;lt;/actdate&amp;gt;&lt;br /&gt;
    &amp;lt;datepay&amp;gt;&amp;lt;/datepay&amp;gt;&lt;br /&gt;
    &amp;lt;dateto&amp;gt;2016-02-12&amp;lt;/dateto&amp;gt;&lt;br /&gt;
    &amp;lt;promiseddatepay&amp;gt;&amp;lt;/promiseddatepay&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;637.00&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;pricecorr&amp;gt;113.00&amp;lt;/pricecorr&amp;gt;&lt;br /&gt;
    &amp;lt;rur&amp;gt;13430.00&amp;lt;/rur&amp;gt;&lt;br /&gt;
    &amp;lt;pricekur&amp;gt;570.00&amp;lt;/pricekur&amp;gt;&lt;br /&gt;
    &amp;lt;priceag&amp;gt;67.00&amp;lt;/priceag&amp;gt;&lt;br /&gt;
    &amp;lt;payno&amp;gt;42423&amp;lt;/payno&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;1&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;paytypename&amp;gt;Безнал&amp;lt;/paytypename&amp;gt;&lt;br /&gt;
    &amp;lt;signedcopyreceived&amp;gt;NO&amp;lt;/signedcopyreceived&amp;gt;&lt;br /&gt;
  &amp;lt;/sma&amp;gt;&lt;br /&gt;
&amp;lt;/smalist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код акта&lt;br /&gt;
* '''number''' — Номер акта в системе&lt;br /&gt;
* '''actdate''' — Дата акта&lt;br /&gt;
* '''datepay''' — Дата оплаты по акту&lt;br /&gt;
* '''dateto''' — Дата конечного периода для формирования АПД&lt;br /&gt;
* '''promiseddatepay''' — Плановая дата оплаты&lt;br /&gt;
* '''price''' — Стоимость услуг&lt;br /&gt;
* '''pricecorr''' — Сумма корректировки&lt;br /&gt;
* '''rur''' — Сумма заказа&lt;br /&gt;
* '''pricekur''' — Стоимость курьерской доставки&lt;br /&gt;
* '''priceag''' — Агентское вознаграждение&lt;br /&gt;
* '''payno''' — Номер платежного поручения&lt;br /&gt;
* '''paytype''' — Тип оплаты: 1 — безнал, 2 — наличными курьером, 3 — наличными в офисе, 4 — перевод на карту&lt;br /&gt;
* '''paytypename''' — Строковое представление типа оплаты&lt;br /&gt;
* '''signedcopyreceived''' — Признак факта возврата акта YES/NO&lt;br /&gt;
&lt;br /&gt;
== Детализация актов передачи денег ==&lt;br /&gt;
'''Пример запроса детализации актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;smadetail&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;6278&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/smadetail&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''smadetail''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''auth''' — Авторизация. Обязательный элемент.&lt;br /&gt;
* '''code''' — Код акта передачи денег (см. запрос списка АПД). Обязательный элемент.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос детализации актов передачи денег:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;smadetail count=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;specialsma&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;42494&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ordercode&amp;gt;14424&amp;lt;/ordercode&amp;gt;&lt;br /&gt;
    &amp;lt;orderno&amp;gt;11111&amp;lt;/orderno&amp;gt;&lt;br /&gt;
    &amp;lt;orderdate&amp;gt;2018-01-01&amp;lt;/orderdate&amp;gt;&lt;br /&gt;
    &amp;lt;delivereddate&amp;gt;2018-10-01&amp;lt;/delivereddate&amp;gt;&lt;br /&gt;
    &amp;lt;company&amp;gt;Компания&amp;lt;/company&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;314.00&amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;rur&amp;gt;8800.00&amp;lt;/rur&amp;gt;&lt;br /&gt;
    &amp;lt;inshprice&amp;gt;314.00&amp;lt;/inshprice&amp;gt;&lt;br /&gt;
    &amp;lt;pricekur&amp;gt;270.00&amp;lt;/pricekur&amp;gt;&lt;br /&gt;
    &amp;lt;priceag&amp;gt;44.00&amp;lt;/priceag&amp;gt;&lt;br /&gt;
    &amp;lt;pricecalc&amp;gt;8486.00&amp;lt;/pricecalc&amp;gt;&lt;br /&gt;
    &amp;lt;paytype&amp;gt;2&amp;lt;/paytype&amp;gt;&lt;br /&gt;
    &amp;lt;paytypename&amp;gt;наличными курьером&amp;lt;/paytypename&amp;gt;&lt;br /&gt;
    &amp;lt;weight&amp;gt;0.400&amp;lt;/weight&amp;gt;&lt;br /&gt;
    &amp;lt;distance&amp;gt;0.0&amp;lt;/distance&amp;gt;&lt;br /&gt;
    &amp;lt;status&amp;gt;Доставлено&amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;/specialsma&amp;gt;&lt;br /&gt;
&amp;lt;/smadetail&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''code''' — Код записи.&lt;br /&gt;
* '''ordercode''' — Код заказа.&lt;br /&gt;
* '''orderno''' — Шифр заказа.&lt;br /&gt;
* '''orderdate''' — Дата заказа.&lt;br /&gt;
* '''delivereddate''' — Дата доставки.&lt;br /&gt;
* '''company''' — Получатель.&lt;br /&gt;
* '''price''' — Стоимость услуг.&lt;br /&gt;
* '''rur''' — Сумма заказа.&lt;br /&gt;
* '''inshprice''' — Стоимость заказа.&lt;br /&gt;
* '''pricekur''' — Стоимость курьерской доставки.&lt;br /&gt;
* '''priceag''' — Агентское вознаграждение.&lt;br /&gt;
* '''pricecalc''' — Сумма для передачи агенту.&lt;br /&gt;
* '''paytype''' — Тип оплаты: 1 — безнал, 2 — наличными курьером, 3 — наличными в офисе, 4 — перевод на карту.&lt;br /&gt;
* '''paytypename''' — Строковое представление типа оплаты&lt;br /&gt;
* '''weight''' — Вес заказа.&lt;br /&gt;
* '''distance''' — Дистанция по заказу&lt;br /&gt;
* '''status''' — Статус заказа.&lt;br /&gt;
&lt;br /&gt;
== Установка статуса согласования заказа ==&lt;br /&gt;
Для возможности клиентом установки статуса согласования заказа необходимо включить переменную [[Личный кабинет курьерской службы#Заказы|Разрешить менять статус согласования]]&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса установки статуса согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;setapprovalstatus&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234561&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;1&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Сообщение статуса&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234562&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;2&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Согласовано&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
    &amp;lt;order ordercode=&amp;quot;1234563&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;confirmstate&amp;gt;3&amp;lt;/confirmstate&amp;gt;&lt;br /&gt;
        &amp;lt;message&amp;gt;Не согласовано&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/order&amp;gt;&lt;br /&gt;
&amp;lt;/setapprovalstatus&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''order''' — Контейнер заказа. Обязателен как минимум один элемент.&lt;br /&gt;
:* '''ordercode''' — Внутренний код заказа.&lt;br /&gt;
* '''confirmstate''' — Код статуса заказа. Все статусы с кодами можно получить запросом [[#Получение списка статусов согласования заказа|Получение списка статусов согласования заказа]]&lt;br /&gt;
* '''message''' — Дополнительный комментарий, который отобразится в поле ''Инфо о доставке''.&lt;br /&gt;
&lt;br /&gt;
== Получение списка статусов согласования заказа ==&lt;br /&gt;
'''Пример запроса списка статусов согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;approvalstatuses&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/approvalstatuses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа списка статусов согласования заказа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;approvalstatuses count=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Неизвестно&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Согласование запрошено&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Доставка полностью согласована&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Согласовано с изменением времени&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Перенос на другую дату&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Отказ&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/approvalstatuses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Генерация коротких ссылок ==&lt;br /&gt;
В некоторых случаях, например, при использовании в СМС, может потребоваться использование коротких ссылок на ЛК.&lt;br /&gt;
Для этого, необходимо отправить запрос с полной ссылкой, в ответ на который придёт хэш-код для ссылки.&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса генерации коротких ссылок:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;shortlink&amp;gt;&lt;br /&gt;
  &amp;lt;link short=&amp;quot;0&amp;quot;&amp;gt; https://home.courierexe.ru/8/site/orders &amp;lt;/link&amp;gt;&lt;br /&gt;
&amp;lt;/shortlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''shortlink''' — Корневой контейнер. Обязательный элемент.&lt;br /&gt;
* '''link''' — Полная ссылка, для которой необходимо получить код. Обязательный элемент. Если атрибут '''short''' равен 1, то ответ не будет содержать XML, а только хэш-код.&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа на запрос генерации коротких ссылок:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;shortlink&amp;gt;&lt;br /&gt;
  &amp;lt;hash&amp;gt;35AF350C&amp;lt;/hash&amp;gt;&lt;br /&gt;
&amp;lt;/shortlink&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''hash''' — Хэш-код ссылки.&lt;br /&gt;
&lt;br /&gt;
Далее, можно использовать ссылку на ЛК:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://home.courierexe.ru/35AF350C или curie.ru/35AF350C&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Примечание!''' Сервис коротких ссылок работает только для ресурсов компании MeaSoft.&lt;br /&gt;
&lt;br /&gt;
== Проверка надежности покупателя ==&lt;br /&gt;
Проверка надежности работает только для тарифа «Максимум» личного кабинета.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;mcheck&amp;gt;&lt;br /&gt;
  &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;phones&amp;gt;&lt;br /&gt;
    &amp;lt;phone&amp;gt;89161147992&amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/phones&amp;gt;&lt;br /&gt;
&amp;lt;/mcheck&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;mcheck&amp;gt;&lt;br /&gt;
  &amp;lt;phones&amp;gt;&lt;br /&gt;
    &amp;lt;phone rate=&amp;quot;90&amp;quot;&amp;gt;89161147992&amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/phones&amp;gt;&lt;br /&gt;
&amp;lt;/mcheck&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Размещение страниц на своем сайте (iframe) ==&lt;br /&gt;
&lt;br /&gt;
В некоторых случаях имеет смысл разметить те или иные страницы на своем сайте.&lt;br /&gt;
&lt;br /&gt;
Например, чтобы клиенты могли рассчитать стоимость доставки не переходя по внешней ссылке, а там же, на сайте, калькулятор можно разместить прямо на странице такого сайта посредством так называемого фрейма — '''iframe'''.&lt;br /&gt;
&lt;br /&gt;
[https://ya.ru/search/?text=iframe Фрейм] — контейнер внутри обычной страницы, который позволяет загружать сторонние страницы. Пример загрузки калькулятора:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe id=&amp;quot;frame&amp;quot; src=&amp;quot;https://home.courierexe.ru/8/calculator&amp;quot;&amp;gt;&lt;br /&gt;
    Здесь должен отобразиться калькулятор&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для удобства пользователей вашего сайта можно указать язык интерфейса (который переключается непосредственно на сайте) параметром '''lang''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe id=&amp;quot;frame&amp;quot; src=&amp;quot;https://home.courierexe.ru/8/calculator?lang=2&amp;quot;&amp;gt;&lt;br /&gt;
    Здесь должен отобразиться калькулятор&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
'''Обратите внимание!'''&lt;br /&gt;
# При использовании iFrame могут не работать некоторые функции, например, подписка на push-уведомления на странице трекинга или отслеживания.&lt;br /&gt;
# Если язык не указать, то на страницах калькулятора и трекинга отображается свой переключатель языка. Если язык указан, то переключатель не отображается.&lt;br /&gt;
&lt;br /&gt;
Поддерживаемые языки и их коды:&lt;br /&gt;
:'''1''' — русский&lt;br /&gt;
:'''2''' — английский&lt;br /&gt;
:'''4''' — узбекский&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Оформление манифеста ==&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса на создание манифеста:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
    &amp;lt;auth extra=&amp;quot;8&amp;quot; login=&amp;quot;login&amp;quot; pass=&amp;quot;pass&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;store_from&amp;gt;1&amp;lt;/store_from&amp;gt;&lt;br /&gt;
    &amp;lt;store_to&amp;gt;2&amp;lt;/store_to&amp;gt;&lt;br /&gt;
    &amp;lt;trn_code&amp;gt;3&amp;lt;/trn_code&amp;gt;&lt;br /&gt;
    &amp;lt;sentdate&amp;gt;2024-11-07&amp;lt;/sentdate&amp;gt;&lt;br /&gt;
    &amp;lt;places&amp;gt;&lt;br /&gt;
        &amp;lt;place&amp;gt;&lt;br /&gt;
            &amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;&lt;br /&gt;
            &amp;lt;seal&amp;gt;7890AABBB&amp;lt;/seal&amp;gt;&lt;br /&gt;
        &amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;place&amp;gt;&lt;br /&gt;
            &amp;lt;number&amp;gt;2&amp;lt;/number&amp;gt;&lt;br /&gt;
            &amp;lt;seal&amp;gt;123456ABC&amp;lt;/seal&amp;gt;&lt;br /&gt;
        &amp;lt;/place&amp;gt;&lt;br /&gt;
    &amp;lt;/places&amp;gt;&lt;br /&gt;
    &amp;lt;addresses&amp;gt;&lt;br /&gt;
        &amp;lt;address&amp;gt;&lt;br /&gt;
            &amp;lt;code&amp;gt;12345&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;place&amp;gt;1&amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;/address&amp;gt;&lt;br /&gt;
        &amp;lt;address&amp;gt;&lt;br /&gt;
            &amp;lt;code&amp;gt;67890&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;place&amp;gt;2&amp;lt;/place&amp;gt;&lt;br /&gt;
        &amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''manifest''' - Корневой контейнер. Обязательный элемент.&lt;br /&gt;
*'''auth''' - Авторизация. Обязательный элемент.&lt;br /&gt;
*'''store_from''' - код филиала отправителя. Обязательный элемент.&lt;br /&gt;
*'''store_to''' - код филиала получателя. Обязательный элемент.&lt;br /&gt;
*'''trn_code''' - код перевозчика. Обязательный элемент.&lt;br /&gt;
*'''sentdate''' - дата отправки манифеста. Не обязательный элемент.&lt;br /&gt;
*'''addresses''' - корневой элемент для списка заказов.&lt;br /&gt;
*:'''address''' - корневой элемент для заказа.&lt;br /&gt;
*::'''code''' - наш внутренний номер заказа. Обязательный элемент.&lt;br /&gt;
*::'''place''' - номер места заказа. Обязательный элемент, если переданы места.&lt;br /&gt;
*'''places''' - корневой элемент для списка мест.&lt;br /&gt;
*::'''place''' - корневой элемент для места.&lt;br /&gt;
*::'''number''' - номер места. Обязательный элемент.&lt;br /&gt;
*::'''seal''' - номер пломбы. Необязательный элемент.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример успешного ответа'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
  &amp;lt;result&amp;gt;OK&amp;lt;/result&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример ответа с ошибкой'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest&amp;gt;&lt;br /&gt;
  &amp;lt;result error=&amp;quot;Текст ошибки&amp;quot;&amp;gt;ERROR&amp;lt;/result&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''manifest''' - Корневой контейнер. Обязательный элемент.&lt;br /&gt;
*'''result ''' - Результат. Принимает значения OK или ERROR.&lt;br /&gt;
*'''error''' - атрибут с текстом ошибки, если она была.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15381</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15381"/>
				<updated>2025-09-25T05:21:38Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка документов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;.  %ACopyNo% - номер копии, нумерация с 1. %KolvoStr% - Стандартный текст &amp;quot;текущее место/всего мест&amp;quot;, с учетом возможной печати этикетки на одно место из нескольких. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
'''ChangeSchetDetailQuery''' - Вызывается формировании / пересчете счета. Возвращает строку разбитую через CRLF на две. Первая строка заменяет поля в запросе по детализации счета, вторая меняет строку группировки. Обязательные поля: zakazcnt - кол-во заказов, price - стоимость курьерских услуг, cnt - количество, pr - общая стоимость курьерских услуг.&lt;br /&gt;
&lt;br /&gt;
'''OnAutoPrintManSticker''' - вызывается перед автопечатью сопроводительного документа к манифесту при заполнении номера пломбы (такая возможность включается уставкой печатаемой формы в переменной AutoPrintManSticker), содержит %code% - код манифеста, %mnf_date% - дату манифеста, %transporter% - код перевозчика, %store% - код филиала-получателя манифеста. Если доп.возможность возвращает true - автопечать происходит, false - нет.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintAddresses''' - Вызывается из формы печати ведомостей/наклеек после нажатия на кнопку &amp;quot;ОК&amp;quot;, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. При вызове из интерфейса доски приема либо приема корреспонденции передается дополнительный тег %NewMass%, который содержит массу проставленную весами, содержит -1 если проставление массы отключено.&lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''OnAfterPlanning'''- событие после планирования планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) фактически запланированных корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterClientSave''' - событие срабатывает после сохранения изменений в карточке клиента. Код выполняется в транзакции. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит сохранённую информацию о карточке клиента, а так же все её пользовательские поля с предыдущими значениями, которые можно получить через функцию _Former('VarCode', значение, 'VarValue')&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterCreateSpecialSMA''' - событие срабатывает после создания нового АПД для клиента. Код выполняется вне транзакции, потому есть возможность показывать диалоговые окна. В качестве единственного параметра %code% передается код созданного АПД.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeReturnIncome'''  - Событие перед приемом возврата на вкладке выдача. Код выполняется вне транзакции. Содержит %Code% - код адреса. Функция заполняет две переменные: ''$mass'' - масса возврата корреспонденции (проставляется только если значение переменной больше нуля, а если это значение больше массы корреспонденции, то будет использовано в качестве массы места) и ''$kurier'' - код вернувшего курьера (если пустое или равно нулю, то проставляется стандартный код курьера ВОЗВРАТ НА СКЛАД [15]).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeCreatePickup'''  - Событие перед созданием забора правой кнопкой мыши в списке заказов. Код выполняется вне транзакции. Содержит %Code% - код заказа. %FromCompany% - компания, у которой осуществляется забор (поле target), %FromAddress% - адрес забора&lt;br /&gt;
&lt;br /&gt;
'''AfterTicketAnswer'''  - Событие происходит после ответа на тикет. %code% - код сообщения, %TimeSpent% - кол-во потраченных минут, %ticket% - номер тикета. Доп. возможность может отключить стандартный ввод затраченного времени, для этого нужно вернуть любое значение.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterTownSave''' - событие срабатывает после заведения нового населенного пункта через интерфейс справочника городов. Параметры: %code% - код населенного пункта, %name% - название населенного пункта, %city% - код региона (области).&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''QRCodePurpose'''  - задает строку &amp;quot;Назначение платежа&amp;quot; (тэг &amp;quot;Purpose&amp;quot;) в платежном QR-коде счета. По умолчанию &amp;quot;Курьерские услуги&amp;quot;. Содержит %code% - код счета schet.code, %Source% - код клиента clients.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %DatePut% - дата доставки (добавлено для альтернативных видов подсчета, может быть null); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
&lt;br /&gt;
'''ZPAdditionalSheets''' - кастомное дополнение к детализации зарплаты - дополнительный лист(листы) на форме детализации. В функцию передается DataSet из детализации зарплаты, ссылка на объект Excel (имя - xl). Внутри функции нельзя объявлять объект TSelfAdo с именем DB (он объявлен в детализации). Номер новой страницы Excel передается в переменной $page.&lt;br /&gt;
&lt;br /&gt;
'''OnAddrInventoryAfterCreateDoc''' - вызывается в транзакции, в процедуре создания документа инветаризации корреспонденции.  Входящие параметры: %code% - код созданного документа инвентаризации. &lt;br /&gt;
&lt;br /&gt;
'''AddrInventoryAdditionalSQL''' - позволяет модифицировать запрос на создаваемый документ инвентаризации корреспонденции. Используется для наложения дополнительных фильтров.  Входящие параметры: %code% - код созданного документа инвентаризации. %header% - часть SQL запроса в которую необходимо сделать вставки, возможные варианты join, where. &lt;br /&gt;
Пример использования  '''AddrInventoryAdditionalSQL''', добавление фильтра по пользовательскому полю.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if('%header%'='join',  'left join userfields uf on uf.sourcecode=b.source and uf.sourcetable=2 and uf.varvalue=1',&lt;br /&gt;
 if('%header%'='where', 'and ifnull(uf.varvalue, &amp;quot;F&amp;quot;) = &amp;quot;T&amp;quot;'&lt;br /&gt;
 ,''))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник (острым концом вниз), 2 - треугольник, 3 - увеличенный перевернутый треугольник (острым концом вниз), чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный перевернутый треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Речь диктора ==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnVoice''' - выполняется после изменения статуса выдачи. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код выдачи, &amp;lt;nowiki&amp;gt;%State%&amp;lt;/nowiki&amp;gt; содержит код устанавливаемого статуса, &amp;lt;nowiki&amp;gt;%OldState%&amp;lt;/nowiki&amp;gt; - код старого статуса (0 если не было). Позволяет отключать стандартный звук ОК, если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
'''OnDashboardManifestVoice''' - выполняется после сканирования адреса в интерфейсе приёма манифестов. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код корреспонденции. Позволяет отключать стандартную диктовку программой (код курьера, вес и т.д.), если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnCalcAvans''' - Событие происходит после начисления аванса курьеру.  %code% - код созданного начисления kurier_pays.code. Можно произвести дополнительные начисления и удержания из kurier_pays.profit. &lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnFilterAddressRecalc''' - Позволяет отфильтровать коды адресов, для которых можно пересчитать стоимость. Событие происходит перед расчетом стоимости доставки из интерфейса программы для: актов, счетов, заказов, и т.д. Не работает для пересчета запускаемого из самой карточки корреспонденции. &lt;br /&gt;
%codes% - коды адресов для пересчета стоимости доставки. Формат: (1,2,3,...). %RecalcUserCode% - код пользователя запустившего пересчет (актуально для отложенных пересчетов). &lt;br /&gt;
Функция должна вернуть коды адресов, допущенных к пересчету в формате: (1,2,3,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
 rem('2023-12-04 Sergey.  Отключаем перерасчет стоимости доставки у корреспонденций в статусе - проверено,&lt;br /&gt;
  если у пользователя нет права Счета-изменять. Тикет 79954.&lt;br /&gt;
  Блокировка работает в связке с тикетом 77995.');&lt;br /&gt;
 new('TSelfADO', 'DB');&lt;br /&gt;
 DB.OPEN('SELECT a.code FROM courier.address a&lt;br /&gt;
  LEFT JOIN courier.users u ON u.code=%RecalcUserCode%&lt;br /&gt;
  LEFT JOIN courier.`userrules` ur ON ur.`GroupId`=u.grup AND ur.`RuleType`=1 AND  ur.newruleid =78  -- RSA&lt;br /&gt;
  WHERE ((a.state1&amp;lt;&amp;gt;8) OR (a.state1=8 AND ur.state=&amp;quot;T&amp;quot;)) AND a.code in %code%');&lt;br /&gt;
 DB.ParseForIn('CODE')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnRecalcBoldCntInFrame''' - срабатывает в карточке тарифа при перемещении курсора зоны. Возвращает целочисленное значение, равное количеству доставленных корреспонденций у клиента за предыдущий месяц. Срабатывает только при открытии карточки тарифа из карточки клиента. %ClientCode% - код клиента. %ZoneCode% - код зоны.&lt;br /&gt;
&lt;br /&gt;
'''ChangeStatusColor''' - подменяет цвет фона сообщения в строке статуса в форме приема корреспонденции. Возвращает целочисленное значение - новый цвет фона, 0 - если цвет менять не нужно. Входящие значения: %code% - входящее значение цвета. Остальные переменные - булевского типа - отражают состояние Настроек: %Renum% - Перенумеровывать, %IgnoreDblScan% - Игнорировать ошибки повторного сканирования, %PrintNakl% - Печатать накладные, %Given% - Выдавать отправления, %PrintFiles% - Печатать файлы, %BarLine% - Включить поддержку штрих-кодовой линейки, '%CreateTrans% - формировать кассовые чеки.&lt;br /&gt;
&lt;br /&gt;
'''GetLusrSQL''' - переопределяет столбец &amp;quot;Изменивший пользователь&amp;quot; в истории изменений. Должен возвращать часть SQL запроса для столбца lusr. Входящее значение %code% содержит код таблицы, для которой строится SQL-запрос истории.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15354</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15354"/>
				<updated>2025-08-13T08:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка всплывающих окон */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;.  %ACopyNo% - номер копии, нумерация с 1. %KolvoStr% - Стандартный текст &amp;quot;текущее место/всего мест&amp;quot;, с учетом возможной печати этикетки на одно место из нескольких. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
'''ChangeSchetDetailQuery''' - Вызывается формировании / пересчете счета. Возвращает строку разбитую через CRLF на две. Первая строка заменяет поля в запросе по детализации счета, вторая меняет строку группировки. Обязательные поля: zakazcnt - кол-во заказов, price - стоимость курьерских услуг, cnt - количество, pr - общая стоимость курьерских услуг.&lt;br /&gt;
&lt;br /&gt;
'''OnAutoPrintManSticker''' - вызывается перед автопечатью сопроводительного документа к манифесту при заполнении номера пломбы (такая возможность включается уставкой печатаемой формы в переменной AutoPrintManSticker), содержит %code% - код манифеста, %mnf_date% - дату манифеста, %transporter% - код перевозчика, %store% - код филиала-получателя манифеста. Если доп.возможность возвращает true - автопечать происходит, false - нет.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintAddresses''' - Вызывается из формы печати ведомостей/наклеек после нажатия на кнопку &amp;quot;ОК&amp;quot;, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. При вызове из интерфейса доски приема либо приема корреспонденции передается дополнительный тег %NewMass%, который содержит массу проставленную весами, содержит -1 если проставление массы отключено.&lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''OnAfterPlanning'''- событие после планирования планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) фактически запланированных корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterClientSave''' - событие срабатывает после сохранения изменений в карточке клиента. Код выполняется в транзакции. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит сохранённую информацию о карточке клиента, а так же все её пользовательские поля с предыдущими значениями, которые можно получить через функцию _Former('VarCode', значение, 'VarValue')&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterCreateSpecialSMA''' - событие срабатывает после создания нового АПД для клиента. Код выполняется вне транзакции, потому есть возможность показывать диалоговые окна. В качестве единственного параметра %code% передается код созданного АПД.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeReturnIncome'''  - Событие перед приемом возврата на вкладке выдача. Код выполняется вне транзакции. Содержит %Code% - код адреса. Функция заполняет две переменные: ''$mass'' - масса возврата корреспонденции (проставляется только если значение переменной больше нуля, а если это значение больше массы корреспонденции, то будет использовано в качестве массы места) и ''$kurier'' - код вернувшего курьера (если пустое или равно нулю, то проставляется стандартный код курьера ВОЗВРАТ НА СКЛАД [15]).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeCreatePickup'''  - Событие перед созданием забора правой кнопкой мыши в списке заказов. Код выполняется вне транзакции. Содержит %Code% - код заказа. %FromCompany% - компания, у которой осуществляется забор (поле target), %FromAddress% - адрес забора&lt;br /&gt;
&lt;br /&gt;
'''AfterTicketAnswer'''  - Событие происходит после ответа на тикет. %code% - код сообщения, %TimeSpent% - кол-во потраченных минут, %ticket% - номер тикета. Доп. возможность может отключить стандартный ввод затраченного времени, для этого нужно вернуть любое значение.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterTownSave''' - событие срабатывает после заведения нового населенного пункта через интерфейс справочника городов. Параметры: %code% - код населенного пункта, %name% - название населенного пункта, %city% - код региона (области).&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %DatePut% - дата доставки (добавлено для альтернативных видов подсчета, может быть null); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
&lt;br /&gt;
'''ZPAdditionalSheets''' - кастомное дополнение к детализации зарплаты - дополнительный лист(листы) на форме детализации. В функцию передается DataSet из детализации зарплаты, ссылка на объект Excel (имя - xl). Внутри функции нельзя объявлять объект TSelfAdo с именем DB (он объявлен в детализации). Номер новой страницы Excel передается в переменной $page.&lt;br /&gt;
&lt;br /&gt;
'''OnAddrInventoryAfterCreateDoc''' - вызывается в транзакции, в процедуре создания документа инветаризации корреспонденции.  Входящие параметры: %code% - код созданного документа инвентаризации. &lt;br /&gt;
&lt;br /&gt;
'''AddrInventoryAdditionalSQL''' - позволяет модифицировать запрос на создаваемый документ инвентаризации корреспонденции. Используется для наложения дополнительных фильтров.  Входящие параметры: %code% - код созданного документа инвентаризации. %header% - часть SQL запроса в которую необходимо сделать вставки, возможные варианты join, where. &lt;br /&gt;
Пример использования  '''AddrInventoryAdditionalSQL''', добавление фильтра по пользовательскому полю.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if('%header%'='join',  'left join userfields uf on uf.sourcecode=b.source and uf.sourcetable=2 and uf.varvalue=1',&lt;br /&gt;
 if('%header%'='where', 'and ifnull(uf.varvalue, &amp;quot;F&amp;quot;) = &amp;quot;T&amp;quot;'&lt;br /&gt;
 ,''))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник (острым концом вниз), 2 - треугольник, 3 - увеличенный перевернутый треугольник (острым концом вниз), чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный перевернутый треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Речь диктора ==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnVoice''' - выполняется после изменения статуса выдачи. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код выдачи, &amp;lt;nowiki&amp;gt;%State%&amp;lt;/nowiki&amp;gt; содержит код устанавливаемого статуса, &amp;lt;nowiki&amp;gt;%OldState%&amp;lt;/nowiki&amp;gt; - код старого статуса (0 если не было). Позволяет отключать стандартный звук ОК, если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
'''OnDashboardManifestVoice''' - выполняется после сканирования адреса в интерфейсе приёма манифестов. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код корреспонденции. Позволяет отключать стандартную диктовку программой (код курьера, вес и т.д.), если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnFilterAddressRecalc''' - Позволяет отфильтровать коды адресов, для которых можно пересчитать стоимость. Событие происходит перед расчетом стоимости доставки из интерфейса программы для: актов, счетов, заказов, и т.д. Не работает для пересчета запускаемого из самой карточки корреспонденции. &lt;br /&gt;
%codes% - коды адресов для пересчета стоимости доставки. Формат: (1,2,3,...). %RecalcUserCode% - код пользователя запустившего пересчет (актуально для отложенных пересчетов). &lt;br /&gt;
Функция должна вернуть коды адресов, допущенных к пересчету в формате: (1,2,3,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
 rem('2023-12-04 Sergey.  Отключаем перерасчет стоимости доставки у корреспонденций в статусе - проверено,&lt;br /&gt;
  если у пользователя нет права Счета-изменять. Тикет 79954.&lt;br /&gt;
  Блокировка работает в связке с тикетом 77995.');&lt;br /&gt;
 new('TSelfADO', 'DB');&lt;br /&gt;
 DB.OPEN('SELECT a.code FROM courier.address a&lt;br /&gt;
  LEFT JOIN courier.users u ON u.code=%RecalcUserCode%&lt;br /&gt;
  LEFT JOIN courier.`userrules` ur ON ur.`GroupId`=u.grup AND ur.`RuleType`=1 AND  ur.newruleid =78  -- RSA&lt;br /&gt;
  WHERE ((a.state1&amp;lt;&amp;gt;8) OR (a.state1=8 AND ur.state=&amp;quot;T&amp;quot;)) AND a.code in %code%');&lt;br /&gt;
 DB.ParseForIn('CODE')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnRecalcBoldCntInFrame''' - срабатывает в карточке тарифа при перемещении курсора зоны. Возвращает целочисленное значение, равное количеству доставленных корреспонденций у клиента за предыдущий месяц. Срабатывает только при открытии карточки тарифа из карточки клиента. %ClientCode% - код клиента. %ZoneCode% - код зоны.&lt;br /&gt;
&lt;br /&gt;
'''ChangeStatusColor''' - подменяет цвет фона сообщения в строке статуса в форме приема корреспонденции. Возвращает целочисленное значение - новый цвет фона, 0 - если цвет менять не нужно. Входящие значения: %code% - входящее значение цвета. Остальные переменные - булевского типа - отражают состояние Настроек: %Renum% - Перенумеровывать, %IgnoreDblScan% - Игнорировать ошибки повторного сканирования, %PrintNakl% - Печатать накладные, %Given% - Выдавать отправления, %PrintFiles% - Печатать файлы, %BarLine% - Включить поддержку штрих-кодовой линейки, '%CreateTrans% - формировать кассовые чеки.&lt;br /&gt;
&lt;br /&gt;
'''GetLusrSQL''' - переопределяет столбец &amp;quot;Изменивший пользователь&amp;quot; в истории изменений. Должен возвращать часть SQL запроса для столбца lusr. Входящее значение %code% содержит код таблицы, для которой строится SQL-запрос истории.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15329</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15329"/>
				<updated>2025-07-21T13:23:12Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TExcel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «MEASOFT» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
ExtractFileName(FilePath) - возвращает имя файла с расширением из полного пути к файлу FilePath.&lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
Abs(f) - возвращает модуль числа f.&lt;br /&gt;
&lt;br /&gt;
Mod(x, y) - возвращает остаток от деления целочисленного числа x на целочисленное число y.&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit([y1, y2]) - Устанавливает автоматическую высоту строк. Аргументы y1 и y2 необязательны и если не указаны, то процедура будет выполнена для всей страницы, в ином случае только для строк от y1 до y2.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
GetRowHeight(r) – Возвращает высоту строки r в пикселях.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w пикселей.&lt;br /&gt;
&lt;br /&gt;
GetColWidth (c) – Возвращает ширину столбца c в пикселях.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
SaveValuesOnly - убирает формулы на текущей странице и оставляет лишь их результативные статичные значения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «MEASOFT». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownPrice''' - возвращает базовую стоимость междугородней доставки, посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов, типа, срочности, массы, расстояния.&lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset.self&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*tp - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FromEmailStr''' - строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber,Print,[printer]) - Выполняет указанную печатную форму в объекте excel. Excel объект можно не указывать, тогда функция сама создаст объект экселя и разрушит его, полезно когда книгу &lt;br /&gt;
нужно распечатать или отправить по email (на листе данных в ячейке 1,1 укажите ключевое слово email). Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Print - печатает книгу на принтере, после печати объект excel разрушается, при использовании параметра не указываете объект excel. Printer - имя принтера, на котором печатать (по умолчанию пустая строка, что означает &amp;quot;печатать на принтере по умолчанию&amp;quot;). Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
'''WriteOut(DocId, ItemId, Date, Cnt[, BC])''' – производит списание товара со склада. DocId - код (docs.code) документа списания, ItemId - код товара (item.code), Date - дата операции, Cnt - количество списываемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер. Если указан BC, то параметр ItemId игнорируется и поиск номенклатуры происходит исключительно по штрих-коду. В случае успеха, функция возвращает строку вида: код номенклатуры, списанное кол-во&lt;br /&gt;
&lt;br /&gt;
'''IncomePurch(DocId, ItemId, Date, Cnt[, BC, Location = CurrentLocation])''' – производит приход товара на склад. DocId - код (docs.code) приходной накладной, ItemId - код товара (item.code), Date - дата операции, Cnt - количество приходуемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер, Location - код склада (store.code).  В случае успеха, функция возвращает строку вида: код номенклатуры, введенное кол-во&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''PrintBlanc(Codes, BlancNumber)''' - печатать форму из раздела &amp;quot;Заполнить бланк&amp;quot;. Codes - коды корреспонденций, BlancNumber - номер формы из раздела &amp;quot;Бланки для корреспонденции&amp;quot; (3)&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm([SkipFormName])''' - возвращает код активной формы в программе где происходит сканирование. SkipFormName - не обязательны параметр, имя формы которую нужно пропустить при определении интерфейса.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад»; &lt;br /&gt;
 15 - Список номенклатуры; &lt;br /&gt;
 16 - Инвентаризация склада; &lt;br /&gt;
 17 - Приходная накладная; &lt;br /&gt;
 18 - Списание товара; &lt;br /&gt;
 19 - Карточка корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''AddAddressScanLog(Code[, StrBarCode, IsManual, FromInterface, ExtraInfo])''' - добавляет событие сканирование для корреспонденции с кодом Code. Необязательные параметры: StrBarCode - сканируемый ШК корреспонденции (по умолчанию пустой), IsManual - галка ручного сканирования (по умолчанию false), FromInterface - код интерфейса сканирования (StateType=81, по умолчанию 0 - неопределенный), ExtraInfo - текстовый комментарий события.&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''ShowText(Caption:string, Value:string)''' - показывает пользователю окно с заголовком Caption и с многострочным полем со значением Value. Может быть полезен при отображении логов выполненной операции. &lt;br /&gt;
&lt;br /&gt;
'''ShowScanError(msg [, Speek])''' - выдает пользователю окно с текстом msg блокируя последующие действия сканирования. Если Speek - истинно, то сообщение проговаривается голосовым движком, по умолчанию выключено.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''GetKurierMoney(KurierCode, DateEnd, NonCash)''' - возвращает баланс курьера с кодом KurierCode на дату DateEnd. NonCash - булевый флаг, если истинно, то будет рассчитан безнальный баланс; &lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Создается только автоматически. Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Создается только автоматически. Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Объект TStringList ==&lt;br /&gt;
Может использоваться для построчной обработки многостраничных файлов либо для организации текстовых данных. Номер строк начинается с 0. &lt;br /&gt;
Имеет следующий функционал:&lt;br /&gt;
&lt;br /&gt;
'''Count''' - возвращает количество строк в списке.&lt;br /&gt;
&lt;br /&gt;
'''Add(Value:string)''' - добавляет значение Value в конец списка.&lt;br /&gt;
&lt;br /&gt;
'''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number.&lt;br /&gt;
&lt;br /&gt;
'''Delete(Number:integer)''' - удаляет строку из списка в позиции Number.&lt;br /&gt;
&lt;br /&gt;
'''Clear''' - очищает элементы списка.&lt;br /&gt;
&lt;br /&gt;
'''LoadFromFile(Path:string)''' - загружает текстовый файл по пути Path.&lt;br /&gt;
&lt;br /&gt;
'''Strings(Number:integer)''' - возвращает строку с номером Number.&lt;br /&gt;
&lt;br /&gt;
'''SetString(Number:integer, Value:string)''' - устанавливает значение строки с номером Number в значение Value.&lt;br /&gt;
&lt;br /&gt;
'''Text''' - возвращает полный список строк в виде текста.&lt;br /&gt;
&lt;br /&gt;
'''CommaText([Quoted:boolean])''' - возвращает список значений через запятую. Если Quoted = true, то квотирует элементы списка. По умолчанию равен false.&lt;br /&gt;
&lt;br /&gt;
'''SetCommaText(Value: string)''' - разбивает значение Value на отдельные строки и кладет в список. Разделитель - запятые.&lt;br /&gt;
&lt;br /&gt;
'''IndexOf(Value:string)''' - ищет значение Value среди элементов списка и если находит, то возвращает номер строки. Возвращает -1 если значение не было найдено.&lt;br /&gt;
&lt;br /&gt;
'''Sorted(Value:boolean)''' - устанавливает флаг отсортированности списка в Value. Если Value = true, то сразу же его сортирует. По умолчанию Value = false.&lt;br /&gt;
&lt;br /&gt;
'''Exchange(Pos1:integer, Pos2:integer)''' - меняет элементы списка с позициями Pos1 и Pos2 местами.&lt;br /&gt;
&lt;br /&gt;
'''Duplicates(Value:integer)''' - изменяет параметр управления дубликатами в списке. Если Value = 0 (значение по умолчанию), то список не реагирует на дубликаты. Если Value = 1, то список при добавлении будет игнорировать дубликаты. Если Value = 2, то список будет выдавать исключение, при добавлении дубликата в список.&lt;br /&gt;
&lt;br /&gt;
'''ParamName(Number:integer[, Delimiter:string])''' - возвращает текст до первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает пустоту.&lt;br /&gt;
&lt;br /&gt;
'''ParamValue(Number:integer[, Delimiter:string])''' - возвращает текст после первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает всю строку.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «MEASOFT» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MEASOFT ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15328</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15328"/>
				<updated>2025-07-21T13:22:24Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TExcel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «MEASOFT» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
ExtractFileName(FilePath) - возвращает имя файла с расширением из полного пути к файлу FilePath.&lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
Abs(f) - возвращает модуль числа f.&lt;br /&gt;
&lt;br /&gt;
Mod(x, y) - возвращает остаток от деления целочисленного числа x на целочисленное число y.&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit([y1, y2]) - Устанавливает автоматическую высоту строк. Аргументы y1 и y2 необязательны и если не указаны, то процедура будет выполнена для всей страницы, в ином случае только для строк от y1 до y2.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
GetRowHeight(r) – Возвращает высоту строки r в пикселях.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w пикселей.&lt;br /&gt;
&lt;br /&gt;
ПуеColWidth (c) – Возвращает ширину столбца c в пикселях.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
SaveValuesOnly - убирает формулы на текущей странице и оставляет лишь их результативные статичные значения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «MEASOFT». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownPrice''' - возвращает базовую стоимость междугородней доставки, посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов, типа, срочности, массы, расстояния.&lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset.self&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*tp - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FromEmailStr''' - строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber,Print,[printer]) - Выполняет указанную печатную форму в объекте excel. Excel объект можно не указывать, тогда функция сама создаст объект экселя и разрушит его, полезно когда книгу &lt;br /&gt;
нужно распечатать или отправить по email (на листе данных в ячейке 1,1 укажите ключевое слово email). Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Print - печатает книгу на принтере, после печати объект excel разрушается, при использовании параметра не указываете объект excel. Printer - имя принтера, на котором печатать (по умолчанию пустая строка, что означает &amp;quot;печатать на принтере по умолчанию&amp;quot;). Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
'''WriteOut(DocId, ItemId, Date, Cnt[, BC])''' – производит списание товара со склада. DocId - код (docs.code) документа списания, ItemId - код товара (item.code), Date - дата операции, Cnt - количество списываемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер. Если указан BC, то параметр ItemId игнорируется и поиск номенклатуры происходит исключительно по штрих-коду. В случае успеха, функция возвращает строку вида: код номенклатуры, списанное кол-во&lt;br /&gt;
&lt;br /&gt;
'''IncomePurch(DocId, ItemId, Date, Cnt[, BC, Location = CurrentLocation])''' – производит приход товара на склад. DocId - код (docs.code) приходной накладной, ItemId - код товара (item.code), Date - дата операции, Cnt - количество приходуемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер, Location - код склада (store.code).  В случае успеха, функция возвращает строку вида: код номенклатуры, введенное кол-во&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''PrintBlanc(Codes, BlancNumber)''' - печатать форму из раздела &amp;quot;Заполнить бланк&amp;quot;. Codes - коды корреспонденций, BlancNumber - номер формы из раздела &amp;quot;Бланки для корреспонденции&amp;quot; (3)&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm([SkipFormName])''' - возвращает код активной формы в программе где происходит сканирование. SkipFormName - не обязательны параметр, имя формы которую нужно пропустить при определении интерфейса.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад»; &lt;br /&gt;
 15 - Список номенклатуры; &lt;br /&gt;
 16 - Инвентаризация склада; &lt;br /&gt;
 17 - Приходная накладная; &lt;br /&gt;
 18 - Списание товара; &lt;br /&gt;
 19 - Карточка корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''AddAddressScanLog(Code[, StrBarCode, IsManual, FromInterface, ExtraInfo])''' - добавляет событие сканирование для корреспонденции с кодом Code. Необязательные параметры: StrBarCode - сканируемый ШК корреспонденции (по умолчанию пустой), IsManual - галка ручного сканирования (по умолчанию false), FromInterface - код интерфейса сканирования (StateType=81, по умолчанию 0 - неопределенный), ExtraInfo - текстовый комментарий события.&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''ShowText(Caption:string, Value:string)''' - показывает пользователю окно с заголовком Caption и с многострочным полем со значением Value. Может быть полезен при отображении логов выполненной операции. &lt;br /&gt;
&lt;br /&gt;
'''ShowScanError(msg [, Speek])''' - выдает пользователю окно с текстом msg блокируя последующие действия сканирования. Если Speek - истинно, то сообщение проговаривается голосовым движком, по умолчанию выключено.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''GetKurierMoney(KurierCode, DateEnd, NonCash)''' - возвращает баланс курьера с кодом KurierCode на дату DateEnd. NonCash - булевый флаг, если истинно, то будет рассчитан безнальный баланс; &lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Создается только автоматически. Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Создается только автоматически. Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Объект TStringList ==&lt;br /&gt;
Может использоваться для построчной обработки многостраничных файлов либо для организации текстовых данных. Номер строк начинается с 0. &lt;br /&gt;
Имеет следующий функционал:&lt;br /&gt;
&lt;br /&gt;
'''Count''' - возвращает количество строк в списке.&lt;br /&gt;
&lt;br /&gt;
'''Add(Value:string)''' - добавляет значение Value в конец списка.&lt;br /&gt;
&lt;br /&gt;
'''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number.&lt;br /&gt;
&lt;br /&gt;
'''Delete(Number:integer)''' - удаляет строку из списка в позиции Number.&lt;br /&gt;
&lt;br /&gt;
'''Clear''' - очищает элементы списка.&lt;br /&gt;
&lt;br /&gt;
'''LoadFromFile(Path:string)''' - загружает текстовый файл по пути Path.&lt;br /&gt;
&lt;br /&gt;
'''Strings(Number:integer)''' - возвращает строку с номером Number.&lt;br /&gt;
&lt;br /&gt;
'''SetString(Number:integer, Value:string)''' - устанавливает значение строки с номером Number в значение Value.&lt;br /&gt;
&lt;br /&gt;
'''Text''' - возвращает полный список строк в виде текста.&lt;br /&gt;
&lt;br /&gt;
'''CommaText([Quoted:boolean])''' - возвращает список значений через запятую. Если Quoted = true, то квотирует элементы списка. По умолчанию равен false.&lt;br /&gt;
&lt;br /&gt;
'''SetCommaText(Value: string)''' - разбивает значение Value на отдельные строки и кладет в список. Разделитель - запятые.&lt;br /&gt;
&lt;br /&gt;
'''IndexOf(Value:string)''' - ищет значение Value среди элементов списка и если находит, то возвращает номер строки. Возвращает -1 если значение не было найдено.&lt;br /&gt;
&lt;br /&gt;
'''Sorted(Value:boolean)''' - устанавливает флаг отсортированности списка в Value. Если Value = true, то сразу же его сортирует. По умолчанию Value = false.&lt;br /&gt;
&lt;br /&gt;
'''Exchange(Pos1:integer, Pos2:integer)''' - меняет элементы списка с позициями Pos1 и Pos2 местами.&lt;br /&gt;
&lt;br /&gt;
'''Duplicates(Value:integer)''' - изменяет параметр управления дубликатами в списке. Если Value = 0 (значение по умолчанию), то список не реагирует на дубликаты. Если Value = 1, то список при добавлении будет игнорировать дубликаты. Если Value = 2, то список будет выдавать исключение, при добавлении дубликата в список.&lt;br /&gt;
&lt;br /&gt;
'''ParamName(Number:integer[, Delimiter:string])''' - возвращает текст до первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает пустоту.&lt;br /&gt;
&lt;br /&gt;
'''ParamValue(Number:integer[, Delimiter:string])''' - возвращает текст после первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает всю строку.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «MEASOFT» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MEASOFT ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A1%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C&amp;diff=15327</id>
		<title>Статусная модель</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A1%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C&amp;diff=15327"/>
				<updated>2025-07-21T13:17:24Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Статусы трекинга */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Виды статусов =&lt;br /&gt;
Основные виды статусов, связанные с доставкой отправлений:&lt;br /&gt;
* статус корреспонденции — пользовательский статус отправления, отображается в [[Карточка корреспонденции#Общие поля|карточке корреспонденции]]. Значения можно добавлять и изменять в справочнике '''Статусы''' &amp;gt; '''15 Статусы корреспонденции''';&lt;br /&gt;
* статус срочного заказа — системный статус выполнения [[Срочные заказы#Вкладка «Срочные»|срочного заказа]]. Статусы определены в справочнике '''Статусы''' &amp;gt; '''3 Статусы для срочных'''. Вы можете изменить название статуса и цвет, которым окрашена соответствующая строка в таблице. Количество статусов изменить нельзя;&lt;br /&gt;
* статус клиента — дополнительные статусы отправления, настраиваются по просьбе клиента в случае использования своего набора статусов. Подробнее см. раздел [[Клиенты и партнеры#Основное|«Клиенты и партнеры»]];&lt;br /&gt;
* статус манифеста — системные статусы, хранятся в справочнике '''Статусы''' &amp;gt; '''43 Системные''' &amp;gt; '''63 Статусы манифестов'''. Статусы нельзя изменять, можно выбрать их цвета. Подробнее см. в разделе [[Манифесты#Статусы манифеста|«Статусы манифеста»]];&lt;br /&gt;
* статус со слов курьера — статус доставки, который сообщает курьер, отображается на вкладке [[Выдача корреспонденции курьерам#Вкладка «Выдача»|'''Выдача''']]. Значения статуса хранятся в справочнике '''Статусы''' &amp;gt; '''43 Системные''' &amp;gt; '''64 Статусы со слов курьера'''. Если включена переменная '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Выдача''' &amp;gt; '''Использовать статус со слов курьера в первую очередь''', то в карточке корреспонденции в поле '''Инфо о доставке''' копируется примечание, которое курьер указал в мобильном приложении при проставлении статуса недоставки, и вне зависимости от статуса выдачи всегда будет проставлен тот, который указан в статусе со слов курьера;&lt;br /&gt;
* статус выдачи — статус доставки, которые [[Выдача корреспонденции курьерам#Статус выдачи|устанавливает]] менеджер в офисе при приемке работы курьера, отображается на вкладке [[Выдача корреспонденции курьерам#Вкладка «Выдача»|'''Выдача''']]. Значения статуса хранятся в справочнике '''Справочники''' &amp;gt; '''Статусы''' &amp;gt; '''8 Статусы выдачи'''. Пользователи могут только переименовывать и назначать цвета статусов выдачи;&lt;br /&gt;
* статусы трекинга — системные статусы, устанавливаются автоматически, пользователь не может их изменить. Значения статуса хранятся в справочнике '''Справочники''' &amp;gt; '''Статусы''' &amp;gt; '''43 Системные''' &amp;gt; '''1 Статусы трекинга'''.&lt;br /&gt;
&lt;br /&gt;
==Статусы трекинга ==&lt;br /&gt;
&lt;br /&gt;
Статусы трекинга отображаются:&lt;br /&gt;
* в карточке отправления — '''Функции''' &amp;gt; '''История статусов''';&lt;br /&gt;
* в ответах на запрос по [[API#Запрос статуса заказов|API]];&lt;br /&gt;
* в [[Личный кабинет курьерской службы#Отслеживание заказа по номеру|трекинге]] заказа в личном кабинете;&lt;br /&gt;
* в информации по заказу в ЛК клиента, в офисной системе можно вывести столбец со статусами на вкладке '''Адреса'''.&lt;br /&gt;
&lt;br /&gt;
В таблице ниже указаны события, при наступлении каждого из которых устанавливается определенный статус трекинга.&lt;br /&gt;
 &lt;br /&gt;
{|class = &amp;quot;wikitable&amp;quot; style = &amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
!Код статуса&lt;br /&gt;
!Название&lt;br /&gt;
!В каких случаях устанавливается статус&lt;br /&gt;
|-&lt;br /&gt;
|AWAITING_SYNC||Ожидает синхронизации||Служба доставки еще не получила данные заказа&lt;br /&gt;
|-&lt;br /&gt;
|NEW||Новый||Добавлено отправление на вкладке '''Адреса'''&lt;br /&gt;
|-&lt;br /&gt;
|NEWPICKUP||Создан забор||Добавлено отправление на вкладке '''Адреса''' типа «забор» (номер 0)&lt;br /&gt;
|-&lt;br /&gt;
|PICKUP||Забран у отправителя||Если отправлению типа «забор» установили статус «Доставлено» или доставочную кор-ию приняли через мобильное приложение по забору  или в мобильном приложении в заявке на забор установлен статус «Получено».&lt;br /&gt;
|-&lt;br /&gt;
|WMSASSEMBLED||Скомплектован на складе фулфилмента||На складе ответственного хранения скомплектовали отправление&lt;br /&gt;
|-&lt;br /&gt;
|WMSDISASSEMBLED|| Разукомплектован на склад фулфилмента||На складе ответственного хранения разукомплектовали отправление&lt;br /&gt;
|-&lt;br /&gt;
|ACCEPTED||Получен складом||Отправление [[Прием корреспонденции на склад#Прием корреспонденции|принято]] на склад&lt;br /&gt;
|-&lt;br /&gt;
|CUSTOMSPROCESS||Производится таможенный контроль||Установлен статус отправления, указанный в переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Корреспонденция''' &amp;gt; '''Статусы таможенного контроля в процессе'''. Подробнее см. раздел [[Манифесты#Таможенное оформление отправления|«Таможенное оформление отправления»]]&lt;br /&gt;
|-&lt;br /&gt;
|CUSTOMSFINISHED|| Таможенный контроль произведен||Установлен статус отправления, указанный в переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Корреспонденция''' &amp;gt; '''Статусы пройденного таможенного контроля'''. Подробнее см. раздел [[Манифесты#Таможенное оформление отправления|«Таможенное оформление отправления»]]&lt;br /&gt;
|-&lt;br /&gt;
|CONFIRM||Согласована доставка||Установлен статус отправления, указанный в переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Корреспонденция''' &amp;gt; '''Статусы успешного согласования доставки'''&lt;br /&gt;
|-&lt;br /&gt;
|UNCONFIRM||Не удалось согласовать доставку||Установлен статус отправления, указанный в переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Корреспонденция''' &amp;gt; '''Статусы НЕ успешного согласования доставки'''.&lt;br /&gt;
|-&lt;br /&gt;
|DEPARTURING||Планируется отправка||Отправление запланировано в манифест&lt;br /&gt;
|-&lt;br /&gt;
|DEPARTURE||Отправлено со склада||В манифесте указали дату отправки и отсканировали отправление в мешок&lt;br /&gt;
|-&lt;br /&gt;
|INVENTORY||Инвентаризация||Отправление отсканировано в интерфейсе функции [[Функции#Инвентаризация корреспонденции|«Инвентаризация корреспонденции»]]&lt;br /&gt;
|-&lt;br /&gt;
|PICKUPREADY||Готов к выдаче||Если получатель — ПВЗ, и отправление принято на ПВЗ&lt;br /&gt;
|-&lt;br /&gt;
|DELIVERY||Выдан курьеру на доставку||Отправление выдается курьеру, статус в выдаче — «На руках»&lt;br /&gt;
|-&lt;br /&gt;
|COURIERDELIVERED||Доставлен (предварительно)||Отправлению установлен статус со слов курьера '''Доставлено''' или статус в выдаче '''Доставлено'''&lt;br /&gt;
|-&lt;br /&gt;
|COURIERPARTIALLY||Частично со слов курьера||Установлен статус со слов курьера «Частично доставлено»&lt;br /&gt;
|-&lt;br /&gt;
|COURIERCANCELED||Отказ со слов курьера	||Установлен статус со слов курьера «Не доставлено»&lt;br /&gt;
|-&lt;br /&gt;
|COURIERRETURN||Возвращено курьером (курьер вернул на склад)||Курьер не смог доставить отправление получателю и вернул заказ обратно на склад. Это промежуточный статус, после которого оператор выясняет, нужно ли еще раз доставлять заказ или это окончательная недоставка. Статус отправления в выдаче «Не доставлено» или «Не доставлено по причине»&lt;br /&gt;
|-&lt;br /&gt;
|DATECHANGE||Перенос||Изменена плановая дата доставки. На проставляется, если у корреспонденции только один статус &amp;quot;Новый&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|COMPLETE||Доставлен||В карточке отправления указаны дата и время вручения&lt;br /&gt;
|-&lt;br /&gt;
|PARTIALLY||Доставлен частично||В карточке отправления указаны дата и время вручения, но есть возвраты вложений&lt;br /&gt;
|-&lt;br /&gt;
|CANCELED||Не доставлен (Возврат/Отмена)||В карточке отправления указана только дата вручения, без времени&lt;br /&gt;
|-&lt;br /&gt;
|RETURNING||Планируется возврат||Отправление отсканировано в интерфейсе [[Акты_передачи_денег_и_корреспонденции#Акты передачи корреспонденции (АПК)|АПК]]&lt;br /&gt;
|-&lt;br /&gt;
|RETURNED||Возвращен||В АПК указали дату отправки&lt;br /&gt;
|-&lt;br /&gt;
|LOST||Утрачен||В карточке корреспонденции установлен флажок '''Утрачено'''&lt;br /&gt;
|-&lt;br /&gt;
|PARTLYRETURNING||Планируется возврат остатков||Заказ с частичной доставкой добавлен в АПК&lt;br /&gt;
|-&lt;br /&gt;
|PARTLYRETURNED||Остаток возвращен||По АПК проставлена дата возврата для заказа с частичной доставкой&lt;br /&gt;
|-&lt;br /&gt;
|TRANSACCEPTED||Прибыл на склад перевозчика||При проставлении даты доставки в манифесте&lt;br /&gt;
|-&lt;br /&gt;
|PICKUPTRANS||Забран у перевозчика||При проставлении даты получения в манифесте&lt;br /&gt;
|-&lt;br /&gt;
|STORETAKE||Принят в работу на складе||При взятии в работу на вкладке Склад или при первой складской операции&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15295</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15295"/>
				<updated>2025-06-27T13:42:18Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка документов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;.  %ACopyNo% - номер копии, нумерация с 1. %KolvoStr% - Стандартный текст &amp;quot;текущее место/всего мест&amp;quot;, с учетом возможной печати этикетки на одно место из нескольких. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
'''ChangeSchetDetailQuery''' - Вызывается формировании / пересчете счета. Возвращает строку разбитую через CRLF на две. Первая строка заменяет поля в запросе по детализации счета, вторая меняет строку группировки. Обязательные поля: zakazcnt - кол-во заказов, price - стоимость курьерских услуг, cnt - количество, pr - общая стоимость курьерских услуг.&lt;br /&gt;
&lt;br /&gt;
'''OnAutoPrintManSticker''' - вызывается перед автопечатью сопроводительного документа к манифесту при заполнении номера пломбы (такая возможность включается уставкой печатаемой формы в переменной AutoPrintManSticker), содержит %code% - код манифеста, %mnf_date% - дату манифеста, %transporter% - код перевозчика, %store% - код филиала-получателя манифеста. Если доп.возможность возвращает true - автопечать происходит, false - нет.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintAddresses''' - Вызывается из формы печати ведомостей/наклеек после нажатия на кнопку &amp;quot;ОК&amp;quot;, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. При вызове из интерфейса доски приема либо приема корреспонденции передается дополнительный тег %NewMass%, который содержит массу проставленную весами, содержит -1 если проставление массы отключено.&lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''OnAfterPlanning'''- событие после планирования планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) фактически запланированных корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterClientSave''' - событие срабатывает после сохранения изменений в карточке клиента. Код выполняется в транзакции. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит сохранённую информацию о карточке клиента, а так же все её пользовательские поля с предыдущими значениями, которые можно получить через функцию _Former('VarCode', значение, 'VarValue')&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterCreateSpecialSMA''' - событие срабатывает после создания нового АПД для клиента. Код выполняется вне транзакции, потому есть возможность показывать диалоговые окна. В качестве единственного параметра %code% передается код созданного АПД.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeReturnIncome'''  - Событие перед приемом возврата на вкладке выдача. Код выполняется вне транзакции. Содержит %Code% - код адреса. Функция заполняет две переменные: ''$mass'' - масса возврата корреспонденции (проставляется только если значение переменной больше нуля, а если это значение больше массы корреспонденции, то будет использовано в качестве массы места) и ''$kurier'' - код вернувшего курьера (если пустое или равно нулю, то проставляется стандартный код курьера ВОЗВРАТ НА СКЛАД [15]).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeCreatePickup'''  - Событие перед созданием забора правой кнопкой мыши в списке заказов. Код выполняется вне транзакции. Содержит %Code% - код заказа. %FromCompany% - компания, у которой осуществляется забор (поле target), %FromAddress% - адрес забора&lt;br /&gt;
&lt;br /&gt;
'''AfterTicketAnswer'''  - Событие происходит после ответа на тикет. %code% - код сообщения, %TimeSpent% - кол-во потраченных минут, %ticket% - номер тикета. Доп. возможность может отключить стандартный ввод затраченного времени, для этого нужно вернуть любое значение.&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %DatePut% - дата доставки (добавлено для альтернативных видов подсчета, может быть null); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
&lt;br /&gt;
'''ZPAdditionalSheets''' - кастомное дополнение к детализации зарплаты - дополнительный лист(листы) на форме детализации. В функцию передается DataSet из детализации зарплаты, ссылка на объект Excel (имя - xl). Внутри функции нельзя объявлять объект TSelfAdo с именем DB (он объявлен в детализации). Номер новой страницы Excel передается в переменной $page.&lt;br /&gt;
&lt;br /&gt;
'''OnAddrInventoryAfterCreateDoc''' - вызывается в транзакции, в процедуре создания документа инветаризации корреспонденции.  Входящие параметры: %code% - код созданного документа инвентаризации. &lt;br /&gt;
&lt;br /&gt;
'''AddrInventoryAdditionalSQL''' - позволяет модифицировать запрос на создаваемый документ инвентаризации корреспонденции. Используется для наложения дополнительных фильтров.  Входящие параметры: %code% - код созданного документа инвентаризации. %header% - часть SQL запроса в которую необходимо сделать вставки, возможные варианты join, where. &lt;br /&gt;
Пример использования  '''AddrInventoryAdditionalSQL''', добавление фильтра по пользовательскому полю.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if('%header%'='join',  'left join userfields uf on uf.sourcecode=b.source and uf.sourcetable=2 and uf.varvalue=1',&lt;br /&gt;
 if('%header%'='where', 'and ifnull(uf.varvalue, &amp;quot;F&amp;quot;) = &amp;quot;T&amp;quot;'&lt;br /&gt;
 ,''))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник (острым концом вниз), 2 - треугольник, 3 - увеличенный перевернутый треугольник (острым концом вниз), чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный перевернутый треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Речь диктора ==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnVoice''' - выполняется после изменения статуса выдачи. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код выдачи, &amp;lt;nowiki&amp;gt;%State%&amp;lt;/nowiki&amp;gt; содержит код устанавливаемого статуса, &amp;lt;nowiki&amp;gt;%OldState%&amp;lt;/nowiki&amp;gt; - код старого статуса (0 если не было). Позволяет отключать стандартный звук ОК, если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
'''OnDashboardManifestVoice''' - выполняется после сканирования адреса в интерфейсе приёма манифестов. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код корреспонденции. Позволяет отключать стандартную диктовку программой (код курьера, вес и т.д.), если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnFilterAddressRecalc''' - Позволяет отфильтровать коды адресов, для которых можно пересчитать стоимость. Событие происходит перед расчетом стоимости доставки из интерфейса программы для: актов, счетов, заказов, и т.д. Не работает для пересчета запускаемого из самой карточки корреспонденции. &lt;br /&gt;
%codes% - коды адресов для пересчета стоимости доставки. Формат: (1,2,3,...). %RecalcUserCode% - код пользователя запустившего пересчет (актуально для отложенных пересчетов). &lt;br /&gt;
Функция должна вернуть коды адресов, допущенных к пересчету в формате: (1,2,3,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
 rem('2023-12-04 Sergey.  Отключаем перерасчет стоимости доставки у корреспонденций в статусе - проверено,&lt;br /&gt;
  если у пользователя нет права Счета-изменять. Тикет 79954.&lt;br /&gt;
  Блокировка работает в связке с тикетом 77995.');&lt;br /&gt;
 new('TSelfADO', 'DB');&lt;br /&gt;
 DB.OPEN('SELECT a.code FROM courier.address a&lt;br /&gt;
  LEFT JOIN courier.users u ON u.code=%RecalcUserCode%&lt;br /&gt;
  LEFT JOIN courier.`userrules` ur ON ur.`GroupId`=u.grup AND ur.`RuleType`=1 AND  ur.newruleid =78  -- RSA&lt;br /&gt;
  WHERE ((a.state1&amp;lt;&amp;gt;8) OR (a.state1=8 AND ur.state=&amp;quot;T&amp;quot;)) AND a.code in %code%');&lt;br /&gt;
 DB.ParseForIn('CODE')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnRecalcBoldCntInFrame''' - срабатывает в карточке тарифа при перемещении курсора зоны. Возвращает целочисленное значение, равное количеству доставленных корреспонденций у клиента за предыдущий месяц. Срабатывает только при открытии карточки тарифа из карточки клиента. %ClientCode% - код клиента. %ZoneCode% - код зоны.&lt;br /&gt;
&lt;br /&gt;
'''ChangeStatusColor''' - подменяет цвет фона сообщения в строке статуса в форме приема корреспонденции. Возвращает целочисленное значение - новый цвет фона, 0 - если цвет менять не нужно. Входящие значения: %code% - входящее значение цвета. Остальные переменные - булевского типа - отражают состояние Настроек: %Renum% - Перенумеровывать, %IgnoreDblScan% - Игнорировать ошибки повторного сканирования, %PrintNakl% - Печатать накладные, %Given% - Выдавать отправления, %PrintFiles% - Печатать файлы, %BarLine% - Включить поддержку штрих-кодовой линейки, '%CreateTrans% - формировать кассовые чеки.&lt;br /&gt;
&lt;br /&gt;
'''GetLusrSQL''' - переопределяет столбец &amp;quot;Изменивший пользователь&amp;quot; в истории изменений. Должен возвращать часть SQL запроса для столбца lusr. Входящее значение %code% содержит код таблицы, для которой строится SQL-запрос истории.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15293</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15293"/>
				<updated>2025-06-20T12:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBaseUtils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «MEASOFT» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
ExtractFileName(FilePath) - возвращает имя файла с расширением из полного пути к файлу FilePath.&lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
Abs(f) - возвращает модуль числа f.&lt;br /&gt;
&lt;br /&gt;
Mod(x, y) - возвращает остаток от деления целочисленного числа x на целочисленное число y.&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit([y1, y2]) - Устанавливает автоматическую высоту строк. Аргументы y1 и y2 необязательны и если не указаны, то процедура будет выполнена для всей страницы, в ином случае только для строк от y1 до y2.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
SaveValuesOnly - убирает формулы на текущей странице и оставляет лишь их результативные статичные значения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «MEASOFT». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownPrice''' - возвращает базовую стоимость междугородней доставки, посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов, типа, срочности, массы, расстояния.&lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset.self&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*tp - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FromEmailStr''' - строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber,Print,[printer]) - Выполняет указанную печатную форму в объекте excel. Excel объект можно не указывать, тогда функция сама создаст объект экселя и разрушит его, полезно когда книгу &lt;br /&gt;
нужно распечатать или отправить по email (на листе данных в ячейке 1,1 укажите ключевое слово email). Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Print - печатает книгу на принтере, после печати объект excel разрушается, при использовании параметра не указываете объект excel. Printer - имя принтера, на котором печатать (по умолчанию пустая строка, что означает &amp;quot;печатать на принтере по умолчанию&amp;quot;). Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
'''WriteOut(DocId, ItemId, Date, Cnt[, BC])''' – производит списание товара со склада. DocId - код (docs.code) документа списания, ItemId - код товара (item.code), Date - дата операции, Cnt - количество списываемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер. Если указан BC, то параметр ItemId игнорируется и поиск номенклатуры происходит исключительно по штрих-коду. В случае успеха, функция возвращает строку вида: код номенклатуры, списанное кол-во&lt;br /&gt;
&lt;br /&gt;
'''IncomePurch(DocId, ItemId, Date, Cnt[, BC, Location = CurrentLocation])''' – производит приход товара на склад. DocId - код (docs.code) приходной накладной, ItemId - код товара (item.code), Date - дата операции, Cnt - количество приходуемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер, Location - код склада (store.code).  В случае успеха, функция возвращает строку вида: код номенклатуры, введенное кол-во&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''PrintBlanc(Codes, BlancNumber)''' - печатать форму из раздела &amp;quot;Заполнить бланк&amp;quot;. Codes - коды корреспонденций, BlancNumber - номер формы из раздела &amp;quot;Бланки для корреспонденции&amp;quot; (3)&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm([SkipFormName])''' - возвращает код активной формы в программе где происходит сканирование. SkipFormName - не обязательны параметр, имя формы которую нужно пропустить при определении интерфейса.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад»; &lt;br /&gt;
 15 - Список номенклатуры; &lt;br /&gt;
 16 - Инвентаризация склада; &lt;br /&gt;
 17 - Приходная накладная; &lt;br /&gt;
 18 - Списание товара; &lt;br /&gt;
 19 - Карточка корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''AddAddressScanLog(Code[, StrBarCode, IsManual, FromInterface, ExtraInfo])''' - добавляет событие сканирование для корреспонденции с кодом Code. Необязательные параметры: StrBarCode - сканируемый ШК корреспонденции (по умолчанию пустой), IsManual - галка ручного сканирования (по умолчанию false), FromInterface - код интерфейса сканирования (StateType=81, по умолчанию 0 - неопределенный), ExtraInfo - текстовый комментарий события.&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''ShowText(Caption:string, Value:string)''' - показывает пользователю окно с заголовком Caption и с многострочным полем со значением Value. Может быть полезен при отображении логов выполненной операции. &lt;br /&gt;
&lt;br /&gt;
'''ShowScanError(msg [, Speek])''' - выдает пользователю окно с текстом msg блокируя последующие действия сканирования. Если Speek - истинно, то сообщение проговаривается голосовым движком, по умолчанию выключено.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Создается только автоматически. Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Создается только автоматически. Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Объект TStringList ==&lt;br /&gt;
Может использоваться для построчной обработки многостраничных файлов либо для организации текстовых данных. Номер строк начинается с 0. &lt;br /&gt;
Имеет следующий функционал:&lt;br /&gt;
&lt;br /&gt;
'''Count''' - возвращает количество строк в списке.&lt;br /&gt;
&lt;br /&gt;
'''Add(Value:string)''' - добавляет значение Value в конец списка.&lt;br /&gt;
&lt;br /&gt;
'''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number.&lt;br /&gt;
&lt;br /&gt;
'''Delete(Number:integer)''' - удаляет строку из списка в позиции Number.&lt;br /&gt;
&lt;br /&gt;
'''Clear''' - очищает элементы списка.&lt;br /&gt;
&lt;br /&gt;
'''LoadFromFile(Path:string)''' - загружает текстовый файл по пути Path.&lt;br /&gt;
&lt;br /&gt;
'''Strings(Number:integer)''' - возвращает строку с номером Number.&lt;br /&gt;
&lt;br /&gt;
'''SetString(Number:integer, Value:string)''' - устанавливает значение строки с номером Number в значение Value.&lt;br /&gt;
&lt;br /&gt;
'''Text''' - возвращает полный список строк в виде текста.&lt;br /&gt;
&lt;br /&gt;
'''CommaText([Quoted:boolean])''' - возвращает список значений через запятую. Если Quoted = true, то квотирует элементы списка. По умолчанию равен false.&lt;br /&gt;
&lt;br /&gt;
'''SetCommaText(Value: string)''' - разбивает значение Value на отдельные строки и кладет в список. Разделитель - запятые.&lt;br /&gt;
&lt;br /&gt;
'''IndexOf(Value:string)''' - ищет значение Value среди элементов списка и если находит, то возвращает номер строки. Возвращает -1 если значение не было найдено.&lt;br /&gt;
&lt;br /&gt;
'''Sorted(Value:boolean)''' - устанавливает флаг отсортированности списка в Value. Если Value = true, то сразу же его сортирует. По умолчанию Value = false.&lt;br /&gt;
&lt;br /&gt;
'''Exchange(Pos1:integer, Pos2:integer)''' - меняет элементы списка с позициями Pos1 и Pos2 местами.&lt;br /&gt;
&lt;br /&gt;
'''Duplicates(Value:integer)''' - изменяет параметр управления дубликатами в списке. Если Value = 0 (значение по умолчанию), то список не реагирует на дубликаты. Если Value = 1, то список при добавлении будет игнорировать дубликаты. Если Value = 2, то список будет выдавать исключение, при добавлении дубликата в список.&lt;br /&gt;
&lt;br /&gt;
'''ParamName(Number:integer[, Delimiter:string])''' - возвращает текст до первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает пустоту.&lt;br /&gt;
&lt;br /&gt;
'''ParamValue(Number:integer[, Delimiter:string])''' - возвращает текст после первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает всю строку.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «MEASOFT» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MEASOFT ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15263</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15263"/>
				<updated>2025-05-05T09:25:31Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBaseUtils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «MEASOFT» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
ExtractFileName(FilePath) - возвращает имя файла с расширением из полного пути к файлу FilePath.&lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
Abs(f) - возвращает модуль числа f.&lt;br /&gt;
&lt;br /&gt;
Mod(x, y) - возвращает остаток от деления целочисленного числа x на целочисленное число y.&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit([y1, y2]) - Устанавливает автоматическую высоту строк. Аргументы y1 и y2 необязательны и если не указаны, то процедура будет выполнена для всей страницы, в ином случае только для строк от y1 до y2.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
SaveValuesOnly - убирает формулы на текущей странице и оставляет лишь их результативные статичные значения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «MEASOFT». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownPrice''' - возвращает базовую стоимость междугородней доставки, посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов, типа, срочности, массы, расстояния.&lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset.self&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*tp - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FromEmailStr''' - строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber,Print,[printer]) - Выполняет указанную печатную форму в объекте excel. Excel объект можно не указывать, тогда функция сама создаст объект экселя и разрушит его, полезно когда книгу &lt;br /&gt;
нужно распечатать или отправить по email (на листе данных в ячейке 1,1 укажите ключевое слово email). Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Print - печатает книгу на принтере, после печати объект excel разрушается, при использовании параметра не указываете объект excel. Printer - имя принтера, на котором печатать (по умолчанию пустая строка, что означает &amp;quot;печатать на принтере по умолчанию&amp;quot;). Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
'''WriteOut(DocId, ItemId, Date, Cnt[, BC])''' – производит списание товара со склада. DocId - код (docs.code) документа списания, ItemId - код товара (item.code), Date - дата операции, Cnt - количество списываемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер. Если указан BC, то параметр ItemId игнорируется и поиск номенклатуры происходит исключительно по штрих-коду. В случае успеха, функция возвращает строку вида: код номенклатуры, списанное кол-во&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''PrintBlanc(Codes, BlancNumber)''' - печатать форму из раздела &amp;quot;Заполнить бланк&amp;quot;. Codes - коды корреспонденций, BlancNumber - номер формы из раздела &amp;quot;Бланки для корреспонденции&amp;quot; (3)&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm([SkipFormName])''' - возвращает код активной формы в программе где происходит сканирование. SkipFormName - не обязательны параметр, имя формы которую нужно пропустить при определении интерфейса.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад»; &lt;br /&gt;
 15 - Список номенклатуры; &lt;br /&gt;
 16 - Инвентаризация склада; &lt;br /&gt;
 17 - Приходная накладная; &lt;br /&gt;
 18 - Списание товара; &lt;br /&gt;
 19 - Карточка корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''AddAddressScanLog(Code[, StrBarCode, IsManual, FromInterface, ExtraInfo])''' - добавляет событие сканирование для корреспонденции с кодом Code. Необязательные параметры: StrBarCode - сканируемый ШК корреспонденции (по умолчанию пустой), IsManual - галка ручного сканирования (по умолчанию false), FromInterface - код интерфейса сканирования (StateType=81, по умолчанию 0 - неопределенный), ExtraInfo - текстовый комментарий события.&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''ShowText(Caption:string, Value:string)''' - показывает пользователю окно с заголовком Caption и с многострочным полем со значением Value. Может быть полезен при отображении логов выполненной операции. &lt;br /&gt;
&lt;br /&gt;
'''ShowScanError(msg [, Speek])''' - выдает пользователю окно с текстом msg блокируя последующие действия сканирования. Если Speek - истинно, то сообщение проговаривается голосовым движком, по умолчанию выключено.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Создается только автоматически. Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Создается только автоматически. Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Объект TStringList ==&lt;br /&gt;
Может использоваться для построчной обработки многостраничных файлов либо для организации текстовых данных. Номер строк начинается с 0. &lt;br /&gt;
Имеет следующий функционал:&lt;br /&gt;
&lt;br /&gt;
'''Count''' - возвращает количество строк в списке.&lt;br /&gt;
&lt;br /&gt;
'''Add(Value:string)''' - добавляет значение Value в конец списка.&lt;br /&gt;
&lt;br /&gt;
'''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number.&lt;br /&gt;
&lt;br /&gt;
'''Delete(Number:integer)''' - удаляет строку из списка в позиции Number.&lt;br /&gt;
&lt;br /&gt;
'''Clear''' - очищает элементы списка.&lt;br /&gt;
&lt;br /&gt;
'''LoadFromFile(Path:string)''' - загружает текстовый файл по пути Path.&lt;br /&gt;
&lt;br /&gt;
'''Strings(Number:integer)''' - возвращает строку с номером Number.&lt;br /&gt;
&lt;br /&gt;
'''SetString(Number:integer, Value:string)''' - устанавливает значение строки с номером Number в значение Value.&lt;br /&gt;
&lt;br /&gt;
'''Text''' - возвращает полный список строк в виде текста.&lt;br /&gt;
&lt;br /&gt;
'''CommaText([Quoted:boolean])''' - возвращает список значений через запятую. Если Quoted = true, то квотирует элементы списка. По умолчанию равен false.&lt;br /&gt;
&lt;br /&gt;
'''SetCommaText(Value: string)''' - разбивает значение Value на отдельные строки и кладет в список. Разделитель - запятые.&lt;br /&gt;
&lt;br /&gt;
'''IndexOf(Value:string)''' - ищет значение Value среди элементов списка и если находит, то возвращает номер строки. Возвращает -1 если значение не было найдено.&lt;br /&gt;
&lt;br /&gt;
'''Sorted(Value:boolean)''' - устанавливает флаг отсортированности списка в Value. Если Value = true, то сразу же его сортирует. По умолчанию Value = false.&lt;br /&gt;
&lt;br /&gt;
'''Exchange(Pos1:integer, Pos2:integer)''' - меняет элементы списка с позициями Pos1 и Pos2 местами.&lt;br /&gt;
&lt;br /&gt;
'''Duplicates(Value:integer)''' - изменяет параметр управления дубликатами в списке. Если Value = 0 (значение по умолчанию), то список не реагирует на дубликаты. Если Value = 1, то список при добавлении будет игнорировать дубликаты. Если Value = 2, то список будет выдавать исключение, при добавлении дубликата в список.&lt;br /&gt;
&lt;br /&gt;
'''ParamName(Number:integer[, Delimiter:string])''' - возвращает текст до первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает пустоту.&lt;br /&gt;
&lt;br /&gt;
'''ParamValue(Number:integer[, Delimiter:string])''' - возвращает текст после первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает всю строку.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «MEASOFT» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MEASOFT ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15257</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15257"/>
				<updated>2025-04-29T13:24:22Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «MEASOFT» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
ExtractFileName(FilePath) - возвращает имя файла с расширением из полного пути к файлу FilePath.&lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
Abs(f) - возвращает модуль числа f.&lt;br /&gt;
&lt;br /&gt;
Mod(x, y) - возвращает остаток от деления целочисленного числа x на целочисленное число y.&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit([y1, y2]) - Устанавливает автоматическую высоту строк. Аргументы y1 и y2 необязательны и если не указаны, то процедура будет выполнена для всей страницы, в ином случае только для строк от y1 до y2.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
SaveValuesOnly - убирает формулы на текущей странице и оставляет лишь их результативные статичные значения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «MEASOFT». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownPrice''' - возвращает базовую стоимость междугородней доставки, посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов, типа, срочности, массы, расстояния.&lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset.self&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*tp - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FromEmailStr''' - строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber,Print) - Выполняет указанную печатную форму в объекте excel. Excel объект можно не указывать, тогда функция сама создаст объект экселя и разрушит его, полезно когда книгу &lt;br /&gt;
нужно распечатать или отправить по email (на листе данных в ячейке 1,1 укажите ключевое слово email). Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Print - печатает ккнигу на принтере по умолчанию, после печати объект excel разрушается, при использовании параметра не указывате объект excel. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
'''WriteOut(DocId, ItemId, Date, Cnt[, BC])''' – производит списание товара со склада. DocId - код (docs.code) документа списания, ItemId - код товара (item.code), Date - дата операции, Cnt - количество списываемого товара, BC- штрих-код товара, для товара с учетом серийных номеров нужно обязательно указывать серийный номер. Если указан BC, то параметр ItemId игнорируется и поиск номенклатуры происходит исключительно по штрих-коду. В случае успеха, функция возвращает строку вида: код номенклатуры, списанное кол-во&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''PrintBlanc(Codes, BlancNumber)''' - печатать форму из раздела &amp;quot;Заполнить бланк&amp;quot;. Codes - коды корреспонденций, BlancNumber - номер формы из раздела &amp;quot;Бланки для корреспонденции&amp;quot; (3)&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm([SkipFormName])''' - возвращает код активной формы в программе где происходит сканирование. SkipFormName - не обязательны параметр, имя формы которую нужно пропустить при определении интерфейса.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад»; &lt;br /&gt;
 15 - Список номенклатуры; &lt;br /&gt;
 16 - Инвентаризация склада; &lt;br /&gt;
 17 - Приходная накладная; &lt;br /&gt;
 18 - Списание товара; &lt;br /&gt;
 19 - Карточка корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''AddAddressScanLog(Code[, StrBarCode, IsManual, FromInterface, ExtraInfo])''' - добавляет событие сканирование для корреспонденции с кодом Code. Необязательные параметры: StrBarCode - сканируемый ШК корреспонденции (по умолчанию пустой), IsManual - галка ручного сканирования (по умолчанию false), FromInterface - код интерфейса сканирования (StateType=81, по умолчанию 0 - неопределенный), ExtraInfo - текстовый комментарий события.&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''ShowText(Caption:string, Value:string)''' - показывает пользователю окно с заголовком Caption и с многострочным полем со значением Value. Может быть полезен при отображении логов выполненной операции. &lt;br /&gt;
&lt;br /&gt;
'''ShowScanError(msg [, Speek])''' - выдает пользователю окно с текстом msg блокируя последующие действия сканирования. Если Speek - истинно, то сообщение проговаривается голосовым движком, по умолчанию выключено.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Создается только автоматически. Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Создается только автоматически. Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Объект TStringList ==&lt;br /&gt;
Может использоваться для построчной обработки многостраничных файлов либо для организации текстовых данных. Номер строк начинается с 0. &lt;br /&gt;
Имеет следующий функционал:&lt;br /&gt;
&lt;br /&gt;
'''Count''' - возвращает количество строк в списке.&lt;br /&gt;
&lt;br /&gt;
'''Add(Value:string)''' - добавляет значение Value в конец списка.&lt;br /&gt;
&lt;br /&gt;
'''Insert(Number:integer, Value:string)''' - добавляет строку Value в позицию Number.&lt;br /&gt;
&lt;br /&gt;
'''Delete(Number:integer)''' - удаляет строку из списка в позиции Number.&lt;br /&gt;
&lt;br /&gt;
'''Clear''' - очищает элементы списка.&lt;br /&gt;
&lt;br /&gt;
'''LoadFromFile(Path:string)''' - загружает текстовый файл по пути Path.&lt;br /&gt;
&lt;br /&gt;
'''Strings(Number:integer)''' - возвращает строку с номером Number.&lt;br /&gt;
&lt;br /&gt;
'''SetString(Number:integer, Value:string)''' - устанавливает значение строки с номером Number в значение Value.&lt;br /&gt;
&lt;br /&gt;
'''Text''' - возвращает полный список строк в виде текста.&lt;br /&gt;
&lt;br /&gt;
'''CommaText([Quoted:boolean])''' - возвращает список значений через запятую. Если Quoted = true, то квотирует элементы списка. По умолчанию равен false.&lt;br /&gt;
&lt;br /&gt;
'''SetCommaText(Value: string)''' - разбивает значение Value на отдельные строки и кладет в список. Разделитель - запятые.&lt;br /&gt;
&lt;br /&gt;
'''IndexOf(Value:string)''' - ищет значение Value среди элементов списка и если находит, то возвращает номер строки. Возвращает -1 если значение не было найдено.&lt;br /&gt;
&lt;br /&gt;
'''Sorted(Value:boolean)''' - устанавливает флаг отсортированности списка в Value. Если Value = true, то сразу же его сортирует. По умолчанию Value = false.&lt;br /&gt;
&lt;br /&gt;
'''Exchange(Pos1:integer, Pos2:integer)''' - меняет элементы списка с позициями Pos1 и Pos2 местами.&lt;br /&gt;
&lt;br /&gt;
'''Duplicates(Value:integer)''' - изменяет параметр управления дубликатами в списке. Если Value = 0 (значение по умолчанию), то список не реагирует на дубликаты. Если Value = 1, то список при добавлении будет игнорировать дубликаты. Если Value = 2, то список будет выдавать исключение, при добавлении дубликата в список.&lt;br /&gt;
&lt;br /&gt;
'''ParamName(Number:integer[, Delimiter:string])''' - возвращает текст до первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает пустоту.&lt;br /&gt;
&lt;br /&gt;
'''ParamValue(Number:integer[, Delimiter:string])''' - возвращает текст после первого знака разделителя Delimiter (по умолчанию &amp;quot;=&amp;quot;) из строки с номером Number. Если разделителя в строке нет, то возвращает всю строку.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «MEASOFT» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MEASOFT ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8&amp;diff=15204</id>
		<title>Файлы для загрузки</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8&amp;diff=15204"/>
				<updated>2025-02-12T09:29:22Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Популярные документы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;На этой странице собраны документы, которые можно загрузить и использовать при настройке системы.&lt;br /&gt;
&lt;br /&gt;
== Популярные документы ==&lt;br /&gt;
* [https://www.courierexe.ru/download/Univer_disc_UPD5_new.xls Стандартный] счет для России со скидкой, УПД и поддержкой валют для версий системы от 2008.0.0.1152. [https://www.courierexe.ru/download/UPD_2021_back_compatible.xls Для старых версий]&lt;br /&gt;
&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/Univer_disc_UPD2024_new.xlsx Стандартный с новым УПД] счет для России со скидкой и УПД согласно постановлению Правительства РФ от 16.08.2024 № 1096&lt;br /&gt;
&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/стандарт_факт_2024.xls Стандартный с новой счет-фактурой] счет для России &amp;quot;стандартный&amp;quot;(не скриптовой) с счет-фактурой нового образца (2024)&lt;br /&gt;
&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/std_ms_171001.xls Многострочный (поддерживает вывод поля «Наименование» из карточки счета)]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/nakl.pdf Расширенная накладная в формате PDF]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/BNKSEEK.DBF Справочник банков]. Вы можете скачать и обновить справочник банков в системе.&lt;br /&gt;
&lt;br /&gt;
== Примеры составления документов ==&lt;br /&gt;
&lt;br /&gt;
=== Документы для клиентов ===&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для клиентов». После добавления, выйдите из программы и зайдите снова, документ появится в меню по кнопке «Печать» в карточке клиента.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor.doc Пример договора (Word)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor2.doc Пример договора 2 (Word)] Такой же, как предыдущий, плюс загружает реквизиты курьерской службы из фирмы клиента.&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor3.docx Пример договора 3 (Word)] Склоняет должности (сам) и ФИО руководителей — через сервис morpher.ru — бесплатно до 100 склонений (50 договоров) в день.&lt;br /&gt;
&lt;br /&gt;
=== Документы для курьеров ===&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для курьеров». После добавления, выйдите из программы и зайдите снова, документ появится в меню по кнопке «Печать» в карточке курьера.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor_courier.doc Пример договора (Word)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
* [https://courierexe.ru/download/samples/doveren_courier.xls Пример доверенности (Excel)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
&lt;br /&gt;
=== Примеры шаблонов загрузки ===&lt;br /&gt;
* [https://courierexe.ru/download/samples/load_report.xml Пример шаблона] для загрузки отчетов о доставке от контрагентов. Загружает информацию о доставке из Excel-отчетов. Добавлять в шаблоны импорта БД из эксель. В окне «Условие загрузки» можно настраивать, из каких полей какие значения брать.&lt;br /&gt;
&lt;br /&gt;
=== Примеры скриптов для доп. возможностей ===&lt;br /&gt;
Добавлять в меню «Отчеты» — «Дополнительные возможности»&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/XML_Load.xml Пример обработки] для загрузки xml-файла. Загружает заказы с товарными вложениями из xml. Добавлять в «Дополнительные возможности».&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/toy_load.xml Загрузка XML в формате Той.ру]&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/sms_analit.xml Отчет «Аналитика SMS»] Отчет для анализа эффективности составления SMS, контроля расходов на SMS-рассылки.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/changed_rur_report.xml Отчет «Изменения суммы в отправлениях»] Отчет для анализа изменений сумм заказов.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/profit_per_city.xml Отчет «Рентабельность отправок по городам»] Отчет для анализа рентабельности междугородных перевозок.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/old_given_report.xml Отчет «Задержка на руках курьеров»] Отчет для анализа отправлений, не сданных курьерами. В версии 818 от 07.11.2017 было убрано поле «Неотч.» на вкладке «Сотрудники», служившее этой цели. Вместо него предлагается использовать данный отчет.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/store_remains_w_reserv.xml Отчет «Остаток с учетом резерва»] Отчет в виде списка складской номенклатуры в формате Excel с полями «Кол-во товара в резерве» и «Кол-во на складе».&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/zone_price_load.xml Загрузка тарифов по зонам] позволяет загрузить междугородные тарифы из файла [https://courierexe.ru/download/userfunc/zone_price_load_example.xls такого формата].&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/courier_late_report.xml Отчет по опозданиям курьеров] Выводит доставки, по которым курьер установил статус позже срока окончания доставки, с дополнительной аналитикой.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/clients_weekly.xml Отчет «Оборот по клиентам помесячно и понедельно»] Аналогичный стандартному «Отчеты» — «Клиенты» — «Оборот по клиентам помесячно», но позволяющий вывести оборот за каждую неделю. При формировании отчета по неделям, анализируется динамика роста оборота.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/prin_sozd_39246.xml Отчет «Принятые не набитые накладные»]. При приемке у курьера отправлений забранных, но еще не внесенных в систему (через Доску приема) создаются накладные, которых нигде не видно до их ввода оператором. Этот отчет позволяет их посмотреть и не потерять.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/tickettimereport.xml Отчет «Анализ трудозатрат»]. Позволяет анализировать время, затраченное на решение тикетов в различных разрезах.&lt;br /&gt;
&lt;br /&gt;
==== Импорт входящих отчетов партнеров ====&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/load_incom_act.xml Универсальная загрузка отчета подрядчика] Создает входящий АПД по отчету. Обязательно требуется настройка под конкретный формат входящего документа. Попробуйте посмотреть в тексте, если не получается — обратитесь в тех. поддержку.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/PickPoint_report_load.xml Загрузка отчета PickPoint] Создает входящий АПД по отчету PickPoint [https://courierexe.ru/download/userfunc/PickPoint_report_demo.xls такого формата]. Работает только при передаче заказов в PickPoint с помощью [[Интеграция с другими системами|штатной интеграции]].&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/SDEK_report_load.xml Загрузка отчета СДЭК] Создает входящий АПД по отчету СДЭК [https://courierexe.ru/download/userfunc/SDEK_report_demo.xls такого формата]. Работает начиная с версии 626 от 29.01.2016 и только при передаче заказов в СДЭК с помощью [[Интеграция с другими системами|штатной интеграции]].&lt;br /&gt;
&lt;br /&gt;
==== Импорт выписок по эквайрингу ====&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/bank_load/Sber_import.xml Загрузка реестра Сбербанк] Загружает реестр платежей по эквайрингу Сбербанка [https://courierexe.ru/download/userfunc/bank_load/sber_sample.xlsx такого формата]. Устанавливает галку «Оплачено», записывает код транзакции. Выводит результирующий файл с отметками — что загружено, что — нет, и почему.&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для корреспонденции ==&lt;br /&gt;
Чтобы добавить печатную форму:&lt;br /&gt;
# Откройте '''Справочники''' &amp;gt; '''Печатные формы''' и в левой части окна выберите '''Бланки для корреспонденции'''.&lt;br /&gt;
# В правой части окна в контекстном меню выберите '''Добавить''' и введите название формы.&lt;br /&gt;
# Выделите новую форму в списке и в контекстном меню выберите '''Загрузить из файла'''.&lt;br /&gt;
&lt;br /&gt;
'''Формы для скачивания'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 30%;&amp;quot;|Бланк&lt;br /&gt;
!style=&amp;quot;width: 70%;&amp;quot;|Пояснение&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/post-sticker.doc Шаблон наклейки] для «Почты России»&lt;br /&gt;
|Предназначен для наклеечного термопринтера. Выводит «Кому», «Куда» и индекс «правильным» шрифтом. Для правильного отображения индекса нужно установить шрифт [https://courierexe.ru/download/PECHKIN.TTF «Печкин»].&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/from-sticker.doc Шаблон наклейки] «От кого»&lt;br /&gt;
|Предназначен для наклеечного термопринтера. Выводит «От кого» и «Откуда» по данным отправителя.&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/PD4.xls Форма '''ПД-4'''] для оплаты через Сбербанк&lt;br /&gt;
|Может составляться как на полную стоимость — товар+доставка, так и только на доставку. Может сразу отправляться по e-mail.&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/MarketPlace_v1.txt Форма] для маркетплейсов (например Wildberries, OZON, AliExpress)&lt;br /&gt;
|Для каждого маркетплейса создайте отдельного клиента. В карточке номенклатуры товара в поле '''Поставщик''' укажите маркетплейс, в поле '''Артикул''' — штрихкод маркетплейса (запросите у маркетплейса). При печати бланка нужно выбрать, штрихкод какого маркетплейса использовать.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Шаблоны рассылки из адресов ==&lt;br /&gt;
* [https://courierexe.ru/download/samples/OFD.txt Отправка ссылки на электронный чек]. Работает при фискализации через LIFEPAY. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Шаблоны SMS получателю в адресах''' (или e-mail получателю).&lt;br /&gt;
*: '''Примечание'''. В шаблон «зашиты» форматы ссылок на популярные ОФД. Они могут изменяться. Поэтому если ссылка не работает, попробуйте обновить, если не помогает — обратитесь в поддержку.&lt;br /&gt;
* [https://courierexe.ru/download/samples/OFD_Send.txt Отправка ссылки на электронный чек 2.0]. Работает при любой фискализации, для систем начиная с версии 1058 от 20.01.2020. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Шаблоны SMS получателю в адресах''' (или e-mail получателю).&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для манифестов ==&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для манифестов». После добавления закройте программу, откройте заново, и документ появится на закладке «Манифесты», в контекстном меню «Сопр. документы» к манифесту.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/IMlogisticsManifest.xls '''IM Logistics''' реестр] Префикс штрих-кода должен находиться в поле «Источник информации» карточки клиента. Порядковый номер заказа в поле «Штрих-код клиента».&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/IMSticker.xls '''IM Logistics''' печать наклеек ] Для добавления логотипа загрузите файл с расширением bmp, jpg или gif, и с названием «logo» в прикрепленные файлы к клиенту «IM Logistics». Префикс штрих-кода должен находиться в поле «Источник информации» карточки клиента. Порядковый номер заказа в поле «Штрих-код клиента». Печать наклеек производится на наклеечном термо-принтере.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/RPS.xls '''РПС (Русская почтовая служба)''' реестр]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/flippost.xls '''Флиппост''' реестр]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/topdelivery_sticker.xls '''TopDelivery''' печать наклеек] Данная обработка печатает наклейки по правилам TopDelivery ТОЛЬКО после передачи заказов через [[Интеграция с другими системами|штатную интеграцию с TopDelivery]]. Обязательно впишите в файле префикс штрих-кодов, назначенный вам в TopDelivery. Работает ТОЛЬКО начиная с версии программы 2008.0.0.570 от 05.08.2015. [https://courierexe.ru/download/manifest/TopDelSticker.txt '''Версия 2'''] (работает начиная с версии 2008.0.0.744 от 03.02.2017).&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/CSE.xls '''КСЭ (Курьер сервис экспресс)''' реестр ] Данная обработка формирует реестр по правилам «Курьер сервис экспресс». Обязательно заполните форму на листе «Данные»! Работает ТОЛЬКО начиная с версии программы 2008.0.0.550 от 21.05.2015. Обратите внимание на наличие [[Интеграция с другими системами|интеграции]].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/torg_12_manifest_1.xls '''ТОРГ-12''' вариант 1] Формируется один документ с одной строкой на манифест.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/torg_12_manifest_2.xls '''ТОРГ-12''' вариант 2] Формируется один документ с одной строкой на каждый заказ в манифесте.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Glavpunkt_CSV.xls '''Главпункт''' экспорт реестра в CSV] Можно выделить много манифестов и выгрузить все.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Glavpunkt.xls '''Главпункт''' реестра в XLS].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Maxipost_reestr.xls '''Максипост''' реестр], [https://courierexe.ru/download/manifest/Maxipost_act.xls Акт приема-передачи]. Обратите внимание на возможность автоматического присвоения системой нумерации отправлений по диапазону подрядчика.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/SamZaberu_reestr.xls '''Сам Заберу''' реестр]. В качестве акта приема-передачи использовать [https://courierexe.ru/download/manifest/torg_12_manifest_2.xls ТОРГ-12 вариант 2]&lt;br /&gt;
&lt;br /&gt;
* [http://courierexe.ru/download/manifest/Logsys_reestr.xls '''Logsis''' реестр] Формируется один документ с одной строкой на каждый заказ в манифесте. Перед загрузкой в систему необходима настройка.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/professionel.xls '''Профессионал''' реестр]. Для компании &amp;lt;nowiki&amp;gt;https://www.pro-cour.ru/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/dost_guru.xls '''Доставка-гуру''' реестр]. Для компании Доставка-гуру.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/sdek.txt '''Наклейка СДЭК'''] с кодом подрядчика.&lt;br /&gt;
&lt;br /&gt;
=== Печатные формы этикеток при комплектации в манифесты ===&lt;br /&gt;
Текст нужно вставить в поле «Скрипт для выполнения в манифестах» на закладке «Дополнительно» карточки филиала. Позволяет формировать этикетки для маркировки отправлений в процессе комплектации манифеста.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/SDEK.txt '''Наклейка СДЭК'''].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/5Post.txt '''Наклейка 5Пост''']. Во второй строке текста нужно внести номер, присвоенный вашей компании.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/TopDelivery.txt '''Наклейка TopDelivery''']. Во второй строке текста нужно внести номер, присвоенный вашей компании.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/RusPost.txt '''Наклейка Почта России'''].&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для актов передачи корреспонденции ==&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для актов передачи корреспонденции». После добавления закройте программу, откройте заново, и документ появится в контекстном меню «Сопроводительные документы» к акту передачи корреспонденции.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/torg_12_apk.xls ТОРГ-12]&lt;br /&gt;
&lt;br /&gt;
== Получение списка названий полей для использования в печатных формах ==&lt;br /&gt;
Система позволяет производить выгрузку необходимой информации из определенных полей (например, из карточки клиента или из карточки сотрудника) в печатную форму документа в формате MS Word или MS Excel. Делается это при помощи названия поля, заключенного в теги '''&amp;lt;Name&amp;gt;'''. Например, при составлении документа «Договор клиента» требуется подстановка названия фирмы из карточки клиента в исходный документ. C полным списком доступных полей можно ознакомиться путем создания новой записи в определенном разделе печатных форм (например, «Документы для клиентов») и загрузке в него [https://courierexe.ru/download/samples/echo.doc файла в формате MS Office с содержимым — командой '''%echo%''']. Система при построении этой печатной формы выдаст полный список доступных полей и их названий. Полученные названия полей можно использовать при построении различных пользовательских печатных форм.&lt;br /&gt;
&lt;br /&gt;
== Отчеты для контролирующих органов == &lt;br /&gt;
&lt;br /&gt;
=== Отчет для организаций с почтовой лицензией ===&lt;br /&gt;
 &lt;br /&gt;
* [https://courierexe.ru/download/userfunc/ACLreport.txt  Формирование отчета в модуле автоматизации.]  Задание должно запускаться после полуночи - отчет формируется за предыдущий день. Последняя строка в скрипте - сохранение файла, нужно прописать актуальную директорию, куда сохранять.&lt;br /&gt;
&lt;br /&gt;
== Локализация для разных стран ==&lt;br /&gt;
&lt;br /&gt;
=== Казахстан ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/kazah_VAT.xls Счет для Казахстана с НДС]. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Счета'''.&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/kazah_order.xls Расходный ордер для Казахстана]. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Официально утвержденные формы'''.&lt;br /&gt;
&lt;br /&gt;
=== Украина ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/ukraine.xls Счет для Украины] ОДНОСТРОЧНЫЙ. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Счета'''.&lt;br /&gt;
&lt;br /&gt;
=== Белоруссия ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/bel_std.xls Белорусский счет], [https://www.courierexe.ru/download/prnforms/bel_std_sk.xls Белорусский счет со скидкой], [https://www.courierexe.ru/download/prnforms/bel_std_ms.xls Белорусский многострочный счет (поддерживает вывод поля «Наименование» из карточки счета)]&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/belpack/zakaz-poruch.xls Бланк заказ-поручение]. Нужно добавить в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Документы при выдаче курьеру''' (4-й пункт снизу). Он появится (возможно, нужно перевойти в программу) на вкладке '''Выдача''', кнопка '''Печать''' &amp;gt; '''Сопроводительные документы'''. Формирует для всех заказов, выданных курьеру «Заказ-Поручение». Адрес вашей компании берется из карточки в '''Справочники''' &amp;gt; '''Филиалы'''. Номер путевого листа формируется при формировании [[Путевые листы|путевого листа]], поэтому запускать этот бланк правильно после путевого листа.&lt;br /&gt;
*[https://www.courierexe.ru/download/prnforms/TTNBEL.xlsx ТТН + приложение]&lt;br /&gt;
*[https://www.courierexe.ru/download/prnforms/PUTBEL.xlsx Путевой лист]&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8&amp;diff=15203</id>
		<title>Файлы для загрузки</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8&amp;diff=15203"/>
				<updated>2025-02-12T09:27:15Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Популярные документы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;На этой странице собраны документы, которые можно загрузить и использовать при настройке системы.&lt;br /&gt;
&lt;br /&gt;
== Популярные документы ==&lt;br /&gt;
* [https://www.courierexe.ru/download/Univer_disc_UPD5_new.xls Стандартный] счет для России со скидкой, УПД и поддержкой валют для версий системы от 2008.0.0.1152. [https://www.courierexe.ru/download/UPD_2021_back_compatible.xls Для старых версий]&lt;br /&gt;
&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/Univer_disc_UPD2024_new.xlsx] счет для России со скидкой и УПД согласно постановлению Правительства РФ от 16.08.2024 № 1096&lt;br /&gt;
&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/стандарт_факт_2024.xls] счет для России &amp;quot;стандартный&amp;quot; с счет-фактурой нового образца (2024)&lt;br /&gt;
&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/std_ms_171001.xls Многострочный (поддерживает вывод поля «Наименование» из карточки счета)]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/nakl.pdf Расширенная накладная в формате PDF]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/BNKSEEK.DBF Справочник банков]. Вы можете скачать и обновить справочник банков в системе.&lt;br /&gt;
&lt;br /&gt;
== Примеры составления документов ==&lt;br /&gt;
&lt;br /&gt;
=== Документы для клиентов ===&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для клиентов». После добавления, выйдите из программы и зайдите снова, документ появится в меню по кнопке «Печать» в карточке клиента.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor.doc Пример договора (Word)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor2.doc Пример договора 2 (Word)] Такой же, как предыдущий, плюс загружает реквизиты курьерской службы из фирмы клиента.&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor3.docx Пример договора 3 (Word)] Склоняет должности (сам) и ФИО руководителей — через сервис morpher.ru — бесплатно до 100 склонений (50 договоров) в день.&lt;br /&gt;
&lt;br /&gt;
=== Документы для курьеров ===&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для курьеров». После добавления, выйдите из программы и зайдите снова, документ появится в меню по кнопке «Печать» в карточке курьера.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor_courier.doc Пример договора (Word)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
* [https://courierexe.ru/download/samples/doveren_courier.xls Пример доверенности (Excel)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
&lt;br /&gt;
=== Примеры шаблонов загрузки ===&lt;br /&gt;
* [https://courierexe.ru/download/samples/load_report.xml Пример шаблона] для загрузки отчетов о доставке от контрагентов. Загружает информацию о доставке из Excel-отчетов. Добавлять в шаблоны импорта БД из эксель. В окне «Условие загрузки» можно настраивать, из каких полей какие значения брать.&lt;br /&gt;
&lt;br /&gt;
=== Примеры скриптов для доп. возможностей ===&lt;br /&gt;
Добавлять в меню «Отчеты» — «Дополнительные возможности»&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/XML_Load.xml Пример обработки] для загрузки xml-файла. Загружает заказы с товарными вложениями из xml. Добавлять в «Дополнительные возможности».&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/toy_load.xml Загрузка XML в формате Той.ру]&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/sms_analit.xml Отчет «Аналитика SMS»] Отчет для анализа эффективности составления SMS, контроля расходов на SMS-рассылки.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/changed_rur_report.xml Отчет «Изменения суммы в отправлениях»] Отчет для анализа изменений сумм заказов.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/profit_per_city.xml Отчет «Рентабельность отправок по городам»] Отчет для анализа рентабельности междугородных перевозок.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/old_given_report.xml Отчет «Задержка на руках курьеров»] Отчет для анализа отправлений, не сданных курьерами. В версии 818 от 07.11.2017 было убрано поле «Неотч.» на вкладке «Сотрудники», служившее этой цели. Вместо него предлагается использовать данный отчет.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/store_remains_w_reserv.xml Отчет «Остаток с учетом резерва»] Отчет в виде списка складской номенклатуры в формате Excel с полями «Кол-во товара в резерве» и «Кол-во на складе».&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/zone_price_load.xml Загрузка тарифов по зонам] позволяет загрузить междугородные тарифы из файла [https://courierexe.ru/download/userfunc/zone_price_load_example.xls такого формата].&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/courier_late_report.xml Отчет по опозданиям курьеров] Выводит доставки, по которым курьер установил статус позже срока окончания доставки, с дополнительной аналитикой.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/clients_weekly.xml Отчет «Оборот по клиентам помесячно и понедельно»] Аналогичный стандартному «Отчеты» — «Клиенты» — «Оборот по клиентам помесячно», но позволяющий вывести оборот за каждую неделю. При формировании отчета по неделям, анализируется динамика роста оборота.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/prin_sozd_39246.xml Отчет «Принятые не набитые накладные»]. При приемке у курьера отправлений забранных, но еще не внесенных в систему (через Доску приема) создаются накладные, которых нигде не видно до их ввода оператором. Этот отчет позволяет их посмотреть и не потерять.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/tickettimereport.xml Отчет «Анализ трудозатрат»]. Позволяет анализировать время, затраченное на решение тикетов в различных разрезах.&lt;br /&gt;
&lt;br /&gt;
==== Импорт входящих отчетов партнеров ====&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/load_incom_act.xml Универсальная загрузка отчета подрядчика] Создает входящий АПД по отчету. Обязательно требуется настройка под конкретный формат входящего документа. Попробуйте посмотреть в тексте, если не получается — обратитесь в тех. поддержку.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/PickPoint_report_load.xml Загрузка отчета PickPoint] Создает входящий АПД по отчету PickPoint [https://courierexe.ru/download/userfunc/PickPoint_report_demo.xls такого формата]. Работает только при передаче заказов в PickPoint с помощью [[Интеграция с другими системами|штатной интеграции]].&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/SDEK_report_load.xml Загрузка отчета СДЭК] Создает входящий АПД по отчету СДЭК [https://courierexe.ru/download/userfunc/SDEK_report_demo.xls такого формата]. Работает начиная с версии 626 от 29.01.2016 и только при передаче заказов в СДЭК с помощью [[Интеграция с другими системами|штатной интеграции]].&lt;br /&gt;
&lt;br /&gt;
==== Импорт выписок по эквайрингу ====&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/bank_load/Sber_import.xml Загрузка реестра Сбербанк] Загружает реестр платежей по эквайрингу Сбербанка [https://courierexe.ru/download/userfunc/bank_load/sber_sample.xlsx такого формата]. Устанавливает галку «Оплачено», записывает код транзакции. Выводит результирующий файл с отметками — что загружено, что — нет, и почему.&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для корреспонденции ==&lt;br /&gt;
Чтобы добавить печатную форму:&lt;br /&gt;
# Откройте '''Справочники''' &amp;gt; '''Печатные формы''' и в левой части окна выберите '''Бланки для корреспонденции'''.&lt;br /&gt;
# В правой части окна в контекстном меню выберите '''Добавить''' и введите название формы.&lt;br /&gt;
# Выделите новую форму в списке и в контекстном меню выберите '''Загрузить из файла'''.&lt;br /&gt;
&lt;br /&gt;
'''Формы для скачивания'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 30%;&amp;quot;|Бланк&lt;br /&gt;
!style=&amp;quot;width: 70%;&amp;quot;|Пояснение&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/post-sticker.doc Шаблон наклейки] для «Почты России»&lt;br /&gt;
|Предназначен для наклеечного термопринтера. Выводит «Кому», «Куда» и индекс «правильным» шрифтом. Для правильного отображения индекса нужно установить шрифт [https://courierexe.ru/download/PECHKIN.TTF «Печкин»].&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/from-sticker.doc Шаблон наклейки] «От кого»&lt;br /&gt;
|Предназначен для наклеечного термопринтера. Выводит «От кого» и «Откуда» по данным отправителя.&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/PD4.xls Форма '''ПД-4'''] для оплаты через Сбербанк&lt;br /&gt;
|Может составляться как на полную стоимость — товар+доставка, так и только на доставку. Может сразу отправляться по e-mail.&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/MarketPlace_v1.txt Форма] для маркетплейсов (например Wildberries, OZON, AliExpress)&lt;br /&gt;
|Для каждого маркетплейса создайте отдельного клиента. В карточке номенклатуры товара в поле '''Поставщик''' укажите маркетплейс, в поле '''Артикул''' — штрихкод маркетплейса (запросите у маркетплейса). При печати бланка нужно выбрать, штрихкод какого маркетплейса использовать.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Шаблоны рассылки из адресов ==&lt;br /&gt;
* [https://courierexe.ru/download/samples/OFD.txt Отправка ссылки на электронный чек]. Работает при фискализации через LIFEPAY. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Шаблоны SMS получателю в адресах''' (или e-mail получателю).&lt;br /&gt;
*: '''Примечание'''. В шаблон «зашиты» форматы ссылок на популярные ОФД. Они могут изменяться. Поэтому если ссылка не работает, попробуйте обновить, если не помогает — обратитесь в поддержку.&lt;br /&gt;
* [https://courierexe.ru/download/samples/OFD_Send.txt Отправка ссылки на электронный чек 2.0]. Работает при любой фискализации, для систем начиная с версии 1058 от 20.01.2020. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Шаблоны SMS получателю в адресах''' (или e-mail получателю).&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для манифестов ==&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для манифестов». После добавления закройте программу, откройте заново, и документ появится на закладке «Манифесты», в контекстном меню «Сопр. документы» к манифесту.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/IMlogisticsManifest.xls '''IM Logistics''' реестр] Префикс штрих-кода должен находиться в поле «Источник информации» карточки клиента. Порядковый номер заказа в поле «Штрих-код клиента».&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/IMSticker.xls '''IM Logistics''' печать наклеек ] Для добавления логотипа загрузите файл с расширением bmp, jpg или gif, и с названием «logo» в прикрепленные файлы к клиенту «IM Logistics». Префикс штрих-кода должен находиться в поле «Источник информации» карточки клиента. Порядковый номер заказа в поле «Штрих-код клиента». Печать наклеек производится на наклеечном термо-принтере.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/RPS.xls '''РПС (Русская почтовая служба)''' реестр]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/flippost.xls '''Флиппост''' реестр]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/topdelivery_sticker.xls '''TopDelivery''' печать наклеек] Данная обработка печатает наклейки по правилам TopDelivery ТОЛЬКО после передачи заказов через [[Интеграция с другими системами|штатную интеграцию с TopDelivery]]. Обязательно впишите в файле префикс штрих-кодов, назначенный вам в TopDelivery. Работает ТОЛЬКО начиная с версии программы 2008.0.0.570 от 05.08.2015. [https://courierexe.ru/download/manifest/TopDelSticker.txt '''Версия 2'''] (работает начиная с версии 2008.0.0.744 от 03.02.2017).&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/CSE.xls '''КСЭ (Курьер сервис экспресс)''' реестр ] Данная обработка формирует реестр по правилам «Курьер сервис экспресс». Обязательно заполните форму на листе «Данные»! Работает ТОЛЬКО начиная с версии программы 2008.0.0.550 от 21.05.2015. Обратите внимание на наличие [[Интеграция с другими системами|интеграции]].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/torg_12_manifest_1.xls '''ТОРГ-12''' вариант 1] Формируется один документ с одной строкой на манифест.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/torg_12_manifest_2.xls '''ТОРГ-12''' вариант 2] Формируется один документ с одной строкой на каждый заказ в манифесте.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Glavpunkt_CSV.xls '''Главпункт''' экспорт реестра в CSV] Можно выделить много манифестов и выгрузить все.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Glavpunkt.xls '''Главпункт''' реестра в XLS].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Maxipost_reestr.xls '''Максипост''' реестр], [https://courierexe.ru/download/manifest/Maxipost_act.xls Акт приема-передачи]. Обратите внимание на возможность автоматического присвоения системой нумерации отправлений по диапазону подрядчика.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/SamZaberu_reestr.xls '''Сам Заберу''' реестр]. В качестве акта приема-передачи использовать [https://courierexe.ru/download/manifest/torg_12_manifest_2.xls ТОРГ-12 вариант 2]&lt;br /&gt;
&lt;br /&gt;
* [http://courierexe.ru/download/manifest/Logsys_reestr.xls '''Logsis''' реестр] Формируется один документ с одной строкой на каждый заказ в манифесте. Перед загрузкой в систему необходима настройка.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/professionel.xls '''Профессионал''' реестр]. Для компании &amp;lt;nowiki&amp;gt;https://www.pro-cour.ru/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/dost_guru.xls '''Доставка-гуру''' реестр]. Для компании Доставка-гуру.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/sdek.txt '''Наклейка СДЭК'''] с кодом подрядчика.&lt;br /&gt;
&lt;br /&gt;
=== Печатные формы этикеток при комплектации в манифесты ===&lt;br /&gt;
Текст нужно вставить в поле «Скрипт для выполнения в манифестах» на закладке «Дополнительно» карточки филиала. Позволяет формировать этикетки для маркировки отправлений в процессе комплектации манифеста.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/SDEK.txt '''Наклейка СДЭК'''].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/5Post.txt '''Наклейка 5Пост''']. Во второй строке текста нужно внести номер, присвоенный вашей компании.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/TopDelivery.txt '''Наклейка TopDelivery''']. Во второй строке текста нужно внести номер, присвоенный вашей компании.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/RusPost.txt '''Наклейка Почта России'''].&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для актов передачи корреспонденции ==&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для актов передачи корреспонденции». После добавления закройте программу, откройте заново, и документ появится в контекстном меню «Сопроводительные документы» к акту передачи корреспонденции.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/torg_12_apk.xls ТОРГ-12]&lt;br /&gt;
&lt;br /&gt;
== Получение списка названий полей для использования в печатных формах ==&lt;br /&gt;
Система позволяет производить выгрузку необходимой информации из определенных полей (например, из карточки клиента или из карточки сотрудника) в печатную форму документа в формате MS Word или MS Excel. Делается это при помощи названия поля, заключенного в теги '''&amp;lt;Name&amp;gt;'''. Например, при составлении документа «Договор клиента» требуется подстановка названия фирмы из карточки клиента в исходный документ. C полным списком доступных полей можно ознакомиться путем создания новой записи в определенном разделе печатных форм (например, «Документы для клиентов») и загрузке в него [https://courierexe.ru/download/samples/echo.doc файла в формате MS Office с содержимым — командой '''%echo%''']. Система при построении этой печатной формы выдаст полный список доступных полей и их названий. Полученные названия полей можно использовать при построении различных пользовательских печатных форм.&lt;br /&gt;
&lt;br /&gt;
== Отчеты для контролирующих органов == &lt;br /&gt;
&lt;br /&gt;
=== Отчет для организаций с почтовой лицензией ===&lt;br /&gt;
 &lt;br /&gt;
* [https://courierexe.ru/download/userfunc/ACLreport.txt  Формирование отчета в модуле автоматизации.]  Задание должно запускаться после полуночи - отчет формируется за предыдущий день. Последняя строка в скрипте - сохранение файла, нужно прописать актуальную директорию, куда сохранять.&lt;br /&gt;
&lt;br /&gt;
== Локализация для разных стран ==&lt;br /&gt;
&lt;br /&gt;
=== Казахстан ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/kazah_VAT.xls Счет для Казахстана с НДС]. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Счета'''.&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/kazah_order.xls Расходный ордер для Казахстана]. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Официально утвержденные формы'''.&lt;br /&gt;
&lt;br /&gt;
=== Украина ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/ukraine.xls Счет для Украины] ОДНОСТРОЧНЫЙ. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Счета'''.&lt;br /&gt;
&lt;br /&gt;
=== Белоруссия ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/bel_std.xls Белорусский счет], [https://www.courierexe.ru/download/prnforms/bel_std_sk.xls Белорусский счет со скидкой], [https://www.courierexe.ru/download/prnforms/bel_std_ms.xls Белорусский многострочный счет (поддерживает вывод поля «Наименование» из карточки счета)]&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/belpack/zakaz-poruch.xls Бланк заказ-поручение]. Нужно добавить в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Документы при выдаче курьеру''' (4-й пункт снизу). Он появится (возможно, нужно перевойти в программу) на вкладке '''Выдача''', кнопка '''Печать''' &amp;gt; '''Сопроводительные документы'''. Формирует для всех заказов, выданных курьеру «Заказ-Поручение». Адрес вашей компании берется из карточки в '''Справочники''' &amp;gt; '''Филиалы'''. Номер путевого листа формируется при формировании [[Путевые листы|путевого листа]], поэтому запускать этот бланк правильно после путевого листа.&lt;br /&gt;
*[https://www.courierexe.ru/download/prnforms/TTNBEL.xlsx ТТН + приложение]&lt;br /&gt;
*[https://www.courierexe.ru/download/prnforms/PUTBEL.xlsx Путевой лист]&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15139</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15139"/>
				<updated>2024-11-15T06:39:10Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBaseUtils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
Abs(f) - возвращает модуль числа f.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
'''WriteOut(DocId, ItemId, Store, DateOper, Cnt [, SerialNo, Source])''' – производит списание товара со склада. DocId - код (code) документа списания, ItemId - код товара, Store - код филиала (склада), DateOper - дата операции, Cnt - количество списываемого товара, SerialNo - серийные номера списываемых товаров через запятую (если товар предполагает учет по серийным номерам), Source - поставщик товара (может быть указан, когда нужно списать товар определенного поставщика).&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm([SkipFormName])''' - возвращает код активной формы в программе где происходит сканирование. SkipFormName - не обязательны параметр, имя формы которую нужно пропустить при определении интерфейса.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад»; &lt;br /&gt;
 15 - Список номенклатуры; &lt;br /&gt;
 16 - Инвентаризация склада; &lt;br /&gt;
 17 - Приходная накладная; &lt;br /&gt;
 18 - Списание товара; &lt;br /&gt;
 19 - Карточка корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''AddAddressScanLog(Code[, StrBarCode, IsManual, FromInterface, ExtraInfo])''' - добавляет событие сканирование для корреспонденции с кодом Code. Необязательные параметры: StrBarCode - сканируемый ШК корреспонденции (по умолчанию пустой), IsManual - галка ручного сканирования (по умолчанию false), FromInterface - код интерфейса сканирования (StateType=81, по умолчанию 0 - неопределенный), ExtraInfo - текстовый комментарий события.&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''ShowScanError(msg [, Speek])''' - выдает пользователю окно с текстом msg блокируя последующие действия сканирования. Если Speek - истинно, то сообщение проговаривается голосовым движком, по умолчанию выключено.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Создается только автоматически. Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Создается только автоматически. Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15070</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15070"/>
				<updated>2024-09-11T05:00:23Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Скрипты */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;.  %ACopyNo% - номер копии, нумерация с 1. %KolvoStr% - Стандартный текст &amp;quot;текущее место/всего мест&amp;quot;, с учетом возможной печати этикетки на одно место из нескольких. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
'''ChangeSchetDetailQuery''' - Вызывается формировании / пересчете счета. Возвращает строку разбитую через CRLF на две. Первая строка заменяет поля в запросе по детализации счета, вторая меняет строку группировки. Обязательные поля: zakazcnt - кол-во заказов, price - стоимость курьерских услуг, cnt - количество, pr - общая стоимость курьерских услуг.&lt;br /&gt;
&lt;br /&gt;
'''OnAutoPrintManSticker''' - вызывается перед автопечатью сопроводительного документа к манифесту при заполнении номера пломбы (такая возможность включается уставкой печатаемой формы в переменной AutoPrintManSticker), содержит %code% - код манифеста, %mnf_date% - дату манифеста, %transporter% - код перевозчика, %store% - код филиала-получателя манифеста. Если доп.возможность возвращает true - автопечать происходит, false - нет.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintAddresses''' - вызывается перед печатью документов, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''OnAfterPlanning'''- событие после планирования планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) фактически запланированных корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterClientSave''' - событие срабатывает после сохранения изменений в карточке клиента. Код выполняется в транзакции. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит сохранённую информацию о карточке клиента, а так же все её пользовательские поля с предыдущими значениями, которые можно получить через функцию _Former('VarCode', значение, 'VarValue')&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterCreateSpecialSMA''' - событие срабатывает после создания нового АПД для клиента. Код выполняется вне транзакции, потому есть возможность показывать диалоговые окна. В качестве единственного параметра %code% передается код созданного АПД.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeReturnIncome'''  - Событие перед приемом возврата на вкладке выдача. Код выполняется вне транзакции. Содержит %Code% - код адреса. Если функция возвращает значение больше 0, то это будет массой возврата корреспонденции, а если это значение больше массы корреспонденции, то будет использовано в качестве массы места&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeCreatePickup'''  - Событие перед созданием забора правой кнопкой мыши в списке заказов. Код выполняется вне транзакции. Содержит %Code% - код заказа. %FromCompany% - компания, у которой осуществляется забор (поле target), %FromAddress% - адрес забора&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %DatePut% - дата доставки (добавлено для альтернативных видов подсчета, может быть null); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник (острым концом вниз), 2 - треугольник, 3 - увеличенный перевернутый треугольник (острым концом вниз), чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный перевернутый треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Речь диктора ==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnVoice''' - выполняется после изменения статуса выдачи. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код выдачи, &amp;lt;nowiki&amp;gt;%State%&amp;lt;/nowiki&amp;gt; содержит код устанавливаемого статуса, &amp;lt;nowiki&amp;gt;%OldState%&amp;lt;/nowiki&amp;gt; - код старого статуса (0 если не было). Позволяет отключать стандартный звук ОК, если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
'''OnDashboardManifestVoice''' - выполняется после сканирования адреса в интерфейсе приёма манифестов. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код корреспонденции. Позволяет отключать стандартную диктовку программой (код курьера, вес и т.д.), если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnFilterAddressRecalc''' - Позволяет отфильтровать коды адресов, для которых можно пересчитать стоимость. Событие происходит перед расчетом стоимости доставки из интерфейса программы для: актов, счетов, заказов, и т.д. Не работает для пересчета запускаемого из самой карточки корреспонденции. &lt;br /&gt;
%codes% - коды адресов для пересчета стоимости доставки. Формат: (1,2,3,...). %RecalcUserCode% - код пользователя запустившего пересчет (актуально для отложенных пересчетов). &lt;br /&gt;
Функция должна вернуть коды адресов, допущенных к пересчету в формате: (1,2,3,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
 rem('2023-12-04 Sergey.  Отключаем перерасчет стоимости доставки у корреспонденций в статусе - проверено,&lt;br /&gt;
  если у пользователя нет права Счета-изменять. Тикет 79954.&lt;br /&gt;
  Блокировка работает в связке с тикетом 77995.');&lt;br /&gt;
 new('TSelfADO', 'DB');&lt;br /&gt;
 DB.OPEN('SELECT a.code FROM courier.address a&lt;br /&gt;
  LEFT JOIN courier.users u ON u.code=%RecalcUserCode%&lt;br /&gt;
  LEFT JOIN courier.`userrules` ur ON ur.`GroupId`=u.grup AND ur.`RuleType`=1 AND  ur.newruleid =78  -- RSA&lt;br /&gt;
  WHERE ((a.state1&amp;lt;&amp;gt;8) OR (a.state1=8 AND ur.state=&amp;quot;T&amp;quot;)) AND a.code in %code%');&lt;br /&gt;
 DB.ParseForIn('CODE')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnRecalcBoldCntInFrame''' - срабатывает в карточке тарифа при перемещении курсора зоны. Возвращает целочисленное значение, равное количеству доставленных корреспонденций у клиента за предыдущий месяц. Срабатывает только при открытии карточки тарифа из карточки клиента. %ClientCode% - код клиента. %ZoneCode% - код зоны.&lt;br /&gt;
&lt;br /&gt;
'''ChangeStatusColor''' - подменяет цвет фона сообщения в строке статуса в форме приема корреспонденции. Возвращает целочисленное значение - новый цвет фона, 0 - если цвет менять не нужно. Входящие значения: %code% - входящее значение цвета. Остальные переменные - булевского типа - отражают состояние Настроек: %Renum% - Перенумеровывать, %IgnoreDblScan% - Игнорировать ошибки повторного сканирования, %PrintNakl% - Печатать накладные, %Given% - Выдавать отправления, %PrintFiles% - Печатать файлы, %BarLine% - Включить поддержку штрих-кодовой линейки, '%CreateTrans% - формировать кассовые чеки&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15066</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15066"/>
				<updated>2024-08-28T05:14:35Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка всплывающих окон */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;.  %ACopyNo% - номер копии, нумерация с 1. %KolvoStr% - Стандартный текст &amp;quot;текущее место/всего мест&amp;quot;, с учетом возможной печати этикетки на одно место из нескольких. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
'''ChangeSchetDetailQuery''' - Вызывается формировании / пересчете счета. Возвращает строку разбитую через CRLF на две. Первая строка заменяет поля в запросе по детализации счета, вторая меняет строку группировки. Обязательные поля: zakazcnt - кол-во заказов, price - стоимость курьерских услуг, cnt - количество, pr - общая стоимость курьерских услуг.&lt;br /&gt;
&lt;br /&gt;
'''OnAutoPrintManSticker''' - вызывается перед автопечатью сопроводительного документа к манифесту при заполнении номера пломбы (такая возможность включается уставкой печатаемой формы в переменной AutoPrintManSticker), содержит %code% - код манифеста, %mnf_date% - дату манифеста, %transporter% - код перевозчика, %store% - код филиала-получателя манифеста. Если доп.возможность возвращает true - автопечать происходит, false - нет.&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''OnAfterPlanning'''- событие после планирования планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) фактически запланированных корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterClientSave''' - событие срабатывает после сохранения изменений в карточке клиента. Код выполняется в транзакции. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит сохранённую информацию о карточке клиента, а так же все её пользовательские поля с предыдущими значениями, которые можно получить через функцию _Former('VarCode', значение, 'VarValue')&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterCreateSpecialSMA''' - событие срабатывает после создания нового АПД для клиента. Код выполняется вне транзакции, потому есть возможность показывать диалоговые окна. В качестве единственного параметра %code% передается код созданного АПД.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeReturnIncome'''  - Событие перед приемом возврата на вкладке выдача. Код выполняется вне транзакции. Содержит %Code% - код адреса. Если функция возвращает значение больше 0, то это будет массой возврата корреспонденции, а если это значение больше массы корреспонденции, то будет использовано в качестве массы места&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeCreatePickup'''  - Событие перед созданием забора правой кнопкой мыши в списке заказов. Код выполняется вне транзакции. Содержит %Code% - код заказа. %FromCompany% - компания, у которой осуществляется забор (поле target), %FromAddress% - адрес забора&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %DatePut% - дата доставки (добавлено для альтернативных видов подсчета, может быть null); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник (острым концом вниз), 2 - треугольник, 3 - увеличенный перевернутый треугольник (острым концом вниз), чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный перевернутый треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Речь диктора ==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnVoice''' - выполняется после изменения статуса выдачи. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код выдачи, &amp;lt;nowiki&amp;gt;%State%&amp;lt;/nowiki&amp;gt; содержит код устанавливаемого статуса, &amp;lt;nowiki&amp;gt;%OldState%&amp;lt;/nowiki&amp;gt; - код старого статуса (0 если не было). Позволяет отключать стандартный звук ОК, если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
'''OnDashboardManifestVoice''' - выполняется после сканирования адреса в интерфейсе приёма манифестов. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код корреспонденции. Позволяет отключать стандартную диктовку программой (код курьера, вес и т.д.), если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnFilterAddressRecalc''' - Позволяет отфильтровать коды адресов, для которых можно пересчитать стоимость. Событие происходит перед расчетом стоимости доставки из интерфейса программы для: актов, счетов, заказов, и т.д. Не работает для пересчета запускаемого из самой карточки корреспонденции. &lt;br /&gt;
%codes% - коды адресов для пересчета стоимости доставки. Формат: (1,2,3,...). %RecalcUserCode% - код пользователя запустившего пересчет (актуально для отложенных пересчетов). &lt;br /&gt;
Функция должна вернуть коды адресов, допущенных к пересчету в формате: (1,2,3,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
 rem('2023-12-04 Sergey.  Отключаем перерасчет стоимости доставки у корреспонденций в статусе - проверено,&lt;br /&gt;
  если у пользователя нет права Счета-изменять. Тикет 79954.&lt;br /&gt;
  Блокировка работает в связке с тикетом 77995.');&lt;br /&gt;
 new('TSelfADO', 'DB');&lt;br /&gt;
 DB.OPEN('SELECT a.code FROM courier.address a&lt;br /&gt;
  LEFT JOIN courier.users u ON u.code=%RecalcUserCode%&lt;br /&gt;
  LEFT JOIN courier.`userrules` ur ON ur.`GroupId`=u.grup AND ur.`RuleType`=1 AND  ur.newruleid =78  -- RSA&lt;br /&gt;
  WHERE ((a.state1&amp;lt;&amp;gt;8) OR (a.state1=8 AND ur.state=&amp;quot;T&amp;quot;)) AND a.code in %code%');&lt;br /&gt;
 DB.ParseForIn('CODE')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnRecalcBoldCntInFrame''' - срабатывает в карточке тарифа при перемещении курсора зоны. Возвращает целочисленное значение, равное количеству доставленных корреспонденций у клиента за предыдущий месяц. Срабатывает только при открытии карточки тарифа из карточки клиента. %ClientCode% - код клиента. %ZoneCode% - код зоны.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%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%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BA%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%87%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=15064</id>
		<title>Настройка модуля печати кассовых чеков</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%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%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BA%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%87%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=15064"/>
				<updated>2024-08-23T06:21:33Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка чековой службы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Модуль интеграции с фискальным регистратором (печати кассовых чеков) предназначен для обеспечения возможности взаимодействия системы MeaSoft с фискальными регистраторами. Он представляет собой [http://ru.wikipedia.org/wiki/Службы_Windows службу Windows], которая подключается к БД системы и к фискальному регистратору.&lt;br /&gt;
&lt;br /&gt;
Одна установка службы поддерживает один регистратор.&lt;br /&gt;
&lt;br /&gt;
MeaSoft поддерживает неограниченное количество регистраторов, в том числе и зарегистрированных на одно юридическое лицо. Чтобы подключить несколько регистраторов, установите соответствующее количество модулей интеграции с ФР.&lt;br /&gt;
&lt;br /&gt;
Модуль печати кассовых чеков состоит из следующих файлов:&lt;br /&gt;
* CheckServiceExe.exe — исполняемый файл службы;&lt;br /&gt;
* CheckServiceExe.ini — конфигурационный файл;&lt;br /&gt;
* CheckServiceExe.log — файл журнала. Если его нет, создается при запуске службы.&lt;br /&gt;
&lt;br /&gt;
= Применение =&lt;br /&gt;
&lt;br /&gt;
Чековая служба нужна, если:&lt;br /&gt;
* установлена касса Штрих-М — для печати чеков в офисной системе и мобильном приложении курьера.&lt;br /&gt;
:При закрытии заказа курьером в мобильном приложении для печати чеков нужен [[Настройка модуля автоматизации|модуль автоматизации]], который будет отправлять чеки, поскольку прямой связи мобильного приложения с Штрих-М нет; &lt;br /&gt;
* установлена касса LIFE PAY — для ручной печати чека из офисного приложения.&lt;br /&gt;
&lt;br /&gt;
Для печати чека через LIFE PAY и Штрих-Нано-Ф при закрытии заказа курьером в мобильном приложении чековая служба не нужна.&lt;br /&gt;
&lt;br /&gt;
'''Примечание'''. Касса Штрих-М работает с чековой службой только при подключении через COM-порт или USB и одновременно передает данные в ОФД. При подключении через USB на компьютере настраивается виртуальный COM-порт.&lt;br /&gt;
&lt;br /&gt;
= Установка чековой службы=&lt;br /&gt;
&lt;br /&gt;
# Скопируйте файл CheckServiceExe.exe в любую папку на компьютере:&lt;br /&gt;
#* для кассы Штрих-М — на тот компьютер, к которому физически подключена касса;&lt;br /&gt;
#* для кассы LIFE PAY – на любой компьютер, потому что у LIFE PAY облачная фискализация.&lt;br /&gt;
# Создайте ярлык для файла CheckServiceExe.exe.&lt;br /&gt;
# В свойствах ярлыка на вкладке '''Ярлык''' в поле '''Объект''' после имени файла добавьте &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt;:[[Файл:Установка чековой службы.png|none]]&lt;br /&gt;
# Сохраните и запустите ярлык от имени администратора. В результате служба появится в списке служб. Для просмотра списка в контекстном меню '''Мой компьютер''' выберите  '''Управление''' &amp;gt; '''Службы'''.&lt;br /&gt;
# В папке с чековой службой создайте INI-файл или загрузите шаблоны: [https://courierexe.ru/download/checkservice/lifepay/CheckServiceExe.ini LIFE PAY], [https://courierexe.ru/download/checkservice/shtrih/CheckServiceExe.ini Штрих-М].&lt;br /&gt;
# Откройте INI-файл, укажите [[#Настройка чековой службы |параметры]] для своей базы и сохраните изменения.&lt;br /&gt;
# В контекстном меню элемента '''Мой компьютер''' выберите  '''Управление''' &amp;gt; '''Службы''', убедитесь, что режим запуска службы установлен в положение «Автоматически», и запустите чековую службу. Если установка и настройка прошли успешно, то первый чек будет сразу распечатан на кассе. &lt;br /&gt;
&lt;br /&gt;
Если чек не печатается, смотрите причины в файле логов чековой службы CheckServiceExe.log. Он находится в папке чековой службы. Подробнее см. раздел «[[Устранение неполадок]]».&lt;br /&gt;
&lt;br /&gt;
Можно установить несколько независимых экземпляров службы на одну систему, переименовав exe-файл. Название службы в Windows, файлы настроек и логов будут иметь соответствующие имена.&lt;br /&gt;
&lt;br /&gt;
= Настройка чековой службы =&lt;br /&gt;
Откройте файл CheckServiceExe.ini любым текстовым редактором, например [http://ru.wikipedia.org/wiki/Блокнот_(программа) блокнотом].&lt;br /&gt;
&lt;br /&gt;
В разделе &amp;lt;nowiki&amp;gt;[COMMON]&amp;lt;/nowiki&amp;gt; измените или добавьте следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 80%;&amp;quot; &amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 20%;&amp;quot;|Параметр&lt;br /&gt;
!style=&amp;quot;width: 40%;&amp;quot;| Штрих-М&lt;br /&gt;
!style=&amp;quot;width: 40%;&amp;quot;| LIFE PAY&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Param&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Дополнительные параметры фискального регистратора&lt;br /&gt;
|Пример: &amp;lt;code&amp;gt;Param=30, 6&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Обязательный параметр, значения указываются через запятую. &amp;lt;br&amp;gt;Первое значение — пароль пользователя ФР, по умолчанию 30. Второе значение — скорость работы ФР. Чтобы узнать скорость, используйте утилиту «Тест драйвера», которая поставляется с кассой: откройте утилиту, нажмите на кнопку '''Настройка свойств''' &amp;gt; '''Поиск оборудования'''. Отобразится подключенный ФР и его &amp;lt;spoiler text=&amp;quot;скорость работы&amp;quot;&amp;gt;Принимаемые значения параметра '''Скорость порта''':&amp;lt;br&amp;gt;1 — 4800 кбит/с,&amp;lt;br&amp;gt; 2 — 9600 кбит/с,&amp;lt;br&amp;gt; 3 — 19200 кбит/с,&amp;lt;br&amp;gt; 4 — 38400 кбит/с,&amp;lt;br&amp;gt; 5 — 57600 кбит/с,&amp;lt;br&amp;gt; 6 — 115200 кбит/с.&amp;lt;br&amp;gt;Значение параметра скорости должно совпадать с установленным режимом самого фискального регистратора. По умолчанию он настроен на скорость 115200, однако иногда этот параметр необходимо уменьшить для повышения стабильности работы регистратора. Также были случаи сброса скорости в положение 4800 пользователями, что возможно при включении ФР с зажатой кнопкой промотки чековой ленты (см. [http://courierexe.ru/download/ext_manual/Shtrih_user_manual.pdf руководство пользователя]). Таким образом, начальная настройка в этом режиме исключит вероятность отказа системы из-за ошибочного сброса настройки в ФР. Скорость работы в ФР можно задать в утилите «Тест драйвера» в окне «Настройка свойств» кнопкой '''Установить параметры'''.&amp;lt;br&amp;gt;Например, чтобы установить для модуля настройки подключения к ФР следующие параметры: пароль доступа — 30, скорость порта — 4800, укажите строку: &amp;lt;br&amp;gt; Param=30, 1&amp;lt;/spoiler&amp;gt;.&lt;br /&gt;
|Пример: &amp;lt;code&amp;gt;Param=91defdc4556fc182680982e1b2am8d6f, 79011111111,,64&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Необязательный параметр. Если значения указаны в [[Фирмы#Добавление фискального регистратора|фискальном регистраторе]], можно оставить строку в таком виде: &amp;lt;code&amp;gt;#Param=&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Первое значение — 32-значный АПИ-ключ из ЛК LIFE PAY.&amp;lt;br&amp;gt;Второе значение — номер телефона без +, на который зарегистрирован ЛК LIFE PAY. &amp;lt;br&amp;gt;Третье значение — по умолчанию пустое, но можно указать путь к АПИ лайфпей (тикет 76001). Укажите путь https://sapi.life-pay.ru/cloud-print/ - для ФФД 1.05 И 1.1 и путь https://sapi.life-pay.ru/cloud-print-ffd1_2/ для ФФД 1.2. &amp;lt;br&amp;gt;Четвертое значение — агентский признак, если есть.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Номер [http://ru.wikipedia.org/wiki/Последовательный_порт COM-порта] фискального регистратора. Если регистратор подключен через [http://ru.wikipedia.org/wiki/USB USB-порт], драйвер эмулятора порта все равно создает виртуальный COM-порт, номер которого устанавливается в его свойствах (в [http://ru.wikipedia.org/wiki/Диспетчер_устройств диспетчере устройств]), а также номер порта меняется в зависимости от разъема USB, к которому подключено устройство.&lt;br /&gt;
|Пример: &amp;lt;code&amp;gt;Port=5&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Обязательный параметр.&lt;br /&gt;
|Пример: &amp;lt;code&amp;gt;Port=1 &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Необязательный параметр, можно указывать значение 1.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;CashRegister&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;rspoiler text=&amp;quot;Код фискального регистратора&amp;quot;&amp;gt;Чтобы его узнать, выберите в главном меню системы пункт '''Справочники''' &amp;gt; '''Фирмы''', откройте карточку фирмы, на которую зарегистрирован фискальный регистратор, перейдите на закладку '''Устройства''', убедитесь, что в выпадающем списке выбрано значение '''Фискальные регистраторы'''. В списке фискальных регистраторов вы увидите код. Если запись для регистратора еще не создана или вы планируете установить дополнительную кассу, добавьте новый ФР.&amp;lt;/rspoiler&amp;gt; в базе данных.&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;CashRegister=2 &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Обязательный параметр.&amp;lt;br&amp;gt; &amp;lt;spoiler text=&amp;quot;Что еще можно указать&amp;quot;&amp;gt;Можно указывать наборы обслуживаемых ФР двумя способами:&lt;br /&gt;
* через запятую или тире или их комбинации указать несколько кодов;&lt;br /&gt;
* условие SQL-запроса. Например &amp;lt;code&amp;gt;AND cr.DeviceType=3&amp;lt;/code&amp;gt; для всех доступных ФР LIFE PAY.&lt;br /&gt;
&lt;br /&gt;
Тогда они все будут обслуживаться одним объектом подключения к ФР. Что это значит: для Штрих-М у объекта открыт COM-порт при старте, и поменяться он не может. Все чеки пойдут в один ФР. Для LIFE PAY — в созданный объект передается поле '''Серийный номер''', откуда он берет авторизацию, т.о. чеки могут отправляться в различные аккаунты. Главное, что тип кассы у всех ФР должен быть один — служба не сможет переключиться например с LIFE PAY на ApiShip.&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Имя или IP-адрес сервера, на котором находится БД MeaSoft. Сервер должен быть доступен по сети с компьютера, к которому подключена касса.&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;ServerName=srv01   &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Обязательный параметр.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DatabaseName&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Имя базы данных (по умолчанию «courier»)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;DataBaseName=courier&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;Обязательный параметр.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;UserName&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Имя пользователя базы данных&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;UserName=check&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;Обязательный параметр. Пользователя check нужно создать для определения запросов чековой службы, для этого обратитесь в техподдержку.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Password&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Пароль пользователя базы данных&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;Password=password &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;Обязательный параметр.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DBPort&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Порт базы данных&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;DBPort =3306  &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;Обязательный параметр. По умолчанию 3306. Проверить порт можно в любом ярлыке офисной программы.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Device&amp;lt;/code&amp;gt;&lt;br /&gt;
|1 — ФР Штрих-М (по умолчанию),&amp;lt;br&amp;gt; 2 — чековый принтер Штрих-М (протокол Epson ESC/P)&lt;br /&gt;
|3 — сервис фискализации LIFE PAY &amp;lt;br&amp;gt; 9 - WebKassa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;AgentFlags&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Флаги тега 1057 для передачи в кассу при агентском чеке&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | Пример:  &amp;lt;code&amp;gt;AgentFlags=4&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Обязательный параметр, если курьерская служба — платежный агент. Чтобы не передавать признаки платежного агента (если в кассе нет этого признака), укажите 0. Если параметр не указан, передается значение по умолчанию 4. &amp;lt;spoiler text=&amp;quot;Возможные значения&amp;quot;&amp;gt;&lt;br /&gt;
* 1 — банковский платежный агент,&lt;br /&gt;
* 2 — банковский платежный субагент,&lt;br /&gt;
* 4 — платежный агент,&lt;br /&gt;
* 8 — платежный субагент,&lt;br /&gt;
* 16 — поверенный,&lt;br /&gt;
* 32 — комиссионер,&lt;br /&gt;
* 64 — агент.&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PrintKurier&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |1 — печать ФИО курьера на чеке.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PrintSeller&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |1 — печать заказчика на чеке.&amp;lt;br&amp;gt; Если включено, печатается юр. наименование, ИНН и телефон клиента.&amp;lt;br&amp;gt;В [[Клиенты и партнеры#Реквизиты|карточке клиента]] на вкладке '''Реквизиты''' должно быть заполнено поле '''Полное название'''.&amp;lt;br&amp;gt; Этот параметр никак не связан с тегами фискального документа 1225 и 1226 и просто выводит текстом на бумагу дополнительный текст там, где это возможно.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PrintCashier&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Печатать имя кассира на чеке (тег 1021). По умолчанию 1.&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |1 — кассир берется из строки чека,&amp;lt;br&amp;gt;0 — не печатается,&amp;lt;br&amp;gt; другое число — код нужного сотрудника.&amp;lt;br&amp;gt;Можно писать подзапрос вида &amp;lt;code&amp;gt;if(a.cl=1, 5, 6)&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EmailPriority&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |1 — отправка чека по e-mail приоритетнее, чем SMS.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;AddStr&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | Пользовательская строка, которая печатается на всех чеках.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ShowLog&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Включить запись лога кассы в лог драйвера об ошибках (путь к логу настраивается в Тест Драйвера).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FirmsChangeSeller&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Коды фирм (через запятую), для которых нужно при печати заказчика на чеке подменять реквизиты заказчика реквизитами контрагента фирмы. Речь о блоке &amp;quot;текст&amp;quot; в самом низу чека, где указывается номер накладной и далее реквизиты заказчика (блок, включаемый параметром PrintSeller).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка ФР Штрих-М =&lt;br /&gt;
[[Файл:ShtrihTableList.png|thumb|100px|right]]&lt;br /&gt;
'''Внимание.''' Для использования программы «Тест драйвера» нужно остановить службу «CheckService».&lt;br /&gt;
&lt;br /&gt;
=== Обрезка чека ===&lt;br /&gt;
Обрезка чеков настраивается в таблице 1 фискального регистратора, параметр «Отрезка чека». Установите значение 1 чтобы ФР полностью отрезал каждый чек, или 2, чтобы он частично надрезал, чтобы чеки все-равно были лентой. Наша система не посылает на ККМ команду обрезки чека во избежание двойной обрезки.&lt;br /&gt;
&lt;br /&gt;
=== Отчет по секциям ===&lt;br /&gt;
[[Файл:ShtrihZReportSect.png|thumb|100px|right]]&lt;br /&gt;
В системе предусмотрено разнесение различных фискальных операций по секциям фискального регистратора. По-умолчанию суточные отчеты (X и Z-отчеты) отображают общие суммы по всем секциям. В ФР есть возможность сделать разбивку этих отчетов по секциям. Для этого в таблице 1 фискального регистратора, параметр «Тип суточного отчета» установите в значение 1.&lt;br /&gt;
&lt;br /&gt;
=== Проверка корректности регистрации в ОФД ===&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right&amp;quot; mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
Номер фиск документа.png&lt;br /&gt;
Читаем отчет регистрации.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Для удовлетворения большинства потребностей наших клиентов в правильной фискализации в соответствии с 54-ФЗ, необходимо иметь [[Оборудование#Фискальный регистратор|ФР]] с фискальным накопителем (ФН) поддерживающие версию фискальный документ (ФД) версии 1.05. Так же необходимо зарегистрировать ФР в ОФД с признаком агента (тег 1057), так как курьерские службы обычно выступают в качестве платежного агента. Для соблюдения всех этих требований нужно обратиться в организацию, обслуживающую ваш фискальный регистратор с соответствующей просьбой. В некоторых случаях для поддержки может понадобиться перепрошивка ФР, замена ФН, перерегистрация в ОФД.&lt;br /&gt;
После этих операций, можно убедиться, что все признаки, нас интересующие, установлены корректно. Для этого сначала нужно узнать номер документа фискализации. В программе «Тест драйвера» слева откроем раздел «11. ФН», в закладках «Фискализация ФН», нажмем кнопку «Запрос итогов фискализации» (см. скрин-шот). В результирующем отчете видим номер фискального документа о фискализации.&lt;br /&gt;
Затем идем на закладку «Данные», Вводим номер документа, ставим галку «Показ. номера тегов», и нажимаем «Прочитать документ». В результирующем тексте убеждаемся в использовании версии ФД 1.05 — теги 1209 «Версия ФФД» и 1189 «Версия ФФД ККМ» должны иметь значения 2, тег 1057 «Призн. плат. агента» — должен быть, вероятно, 4 (это регистр битов, значение «4» соответствует установленному биту 2 «Платежный агент»).&lt;br /&gt;
&lt;br /&gt;
'''Внимание'''. Данные фискального документа хранятся в фискальном накопителе 30 дней, после этого срока посмотреть документ регистрации (перерегистрации) в ФН будет невозможно.&lt;br /&gt;
&lt;br /&gt;
=== Подключение логирования драйвером Штрих-М ===&lt;br /&gt;
Чековая служба предусматривает включение логирования формирования чека средствами драйвера Штирх-М. Для этого в файле параметров конфигурации необходимо указать в секции&lt;br /&gt;
[COMMON] для переменной LogShtrih значение &amp;quot;T&amp;quot; или &amp;quot;1&amp;quot;. Отключить логирование указать &amp;quot;F&amp;quot; или &amp;quot;0&amp;quot;. Путь по которому сохраняется лог, можно посмотреть в настройках драйвера Штрих-М:  “Дополнительные параметры” -&amp;gt; Ставим галочку “Вести лог” и указываем путь к файл лога. &lt;br /&gt;
&lt;br /&gt;
=== Проверка корректности передачи тегов в ОФД ===&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right&amp;quot; mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
Shtrih LastDoc.png&lt;br /&gt;
Shtrih check tags.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Убедиться в корректности передаваемых в ОФД значений тегов можно следующим образом: Сначала узнаем номер фискального документа — его можно посмотреть в чеке (как бумажном, так и электронном), или в приложении «Тест драйвера» в разделе «11. ФН», в закладках «Состояние ФН», нажмем кнопку «Запрос статуса ФН» и посмотрим «Номер последнего ФД» (см. скрин-шот). Далее на закладке «Данные» введем этот номер в поле «№Док.», и нажмем «Прочитать документ». В результирующем тексте убеждаемся в отправке тегов 1008, 1057, 1073, 1171, 1215 и прочих (см. скрин-шот).&lt;br /&gt;
&lt;br /&gt;
Теги 1225 и 1226 (Наименование и ИНН поставщика) поддерживаются Штрих-М в прошивке от 24.10.2018 и версией чековой службы от 19.03.2019&lt;br /&gt;
&lt;br /&gt;
К сожалению, эти передаваемые данные далеко не всегда отображаются в бумажном и/или электронном чеках, это зависит от самого ФР и/или ОФД соответственно. Однако по данной инструкции мы можем убедиться, что со своей стороны передали все данные, необходимые для соответствия 54-ФЗ.&lt;br /&gt;
&lt;br /&gt;
= Удаление службы=&lt;br /&gt;
Для корректного удаления службы запустите исполняемый файл CheckServiceExe.exe с параметром командной строки &amp;lt;code&amp;gt;/uninstall&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Примечания =&lt;br /&gt;
Поскольку при запуске служба открывает подключение к фискальному регистратору, и использует его все время своей работы, другие программы (например «Тест драйвера» и т. д.) при попытке подключения выдадут ошибку «Невозможно открыть порт, он используется другим приложением». Чтобы избежать этого, остановите службу модуля на время использования других программ.&lt;br /&gt;
&lt;br /&gt;
= Устранение неполадок =&lt;br /&gt;
1. В случае сбоя работы кассы ошибку можно посмотреть в файле CheckServiceExe.log&lt;br /&gt;
&lt;br /&gt;
2. Для включения логирования от драйвера Штрих-М в чековой надо установить флаг fDriver.LogOn:= true. По умолчанию false&lt;br /&gt;
&lt;br /&gt;
3. Ошибки условно можно разделить на 3 категории:&lt;br /&gt;
{|&lt;br /&gt;
!Ошибка&lt;br /&gt;
!Симптомы&lt;br /&gt;
!Возможные причины&lt;br /&gt;
!Способы устранения&lt;br /&gt;
|-&lt;br /&gt;
|Нет связи с сервером&lt;br /&gt;
|Касса не печатает, в логе сообщения вида «Unknown MySQL server host ''» или «Can’t connect to MySQL server on…».&lt;br /&gt;
|Неверно настроено подключение к серверу, не работает сервер, сеть.&lt;br /&gt;
|Проверить настройки подключения в файле CheckServiceExe.ini, проверить доступность сервера с этого компьютера.&lt;br /&gt;
|-&lt;br /&gt;
|Нет связи с фискальным регистратором&lt;br /&gt;
|Касса не печатает, в логе сообщения вида «Нет связи код: −1, Режим: 0, Подрежим: 0»&lt;br /&gt;
|ФР Выключен, ФР подключен не к тому разъему, ФР настроен не на ту скорость&lt;br /&gt;
|Проверьте, что ФР включен, подключен к компьютеру, именно в тот порт, в котором он настраивался. Попробуйте отключить службу чеков, открыть программу «Тест драйвера», выполнить поиск оборудования. Если она находит ФР — сравнить настройки подключения, найденные тестом драйвера с тем, что прописано в CheckServiceExe.ini. В единичных случаях проблема может заключаться в драйвере переходника COM-USB, попробуйте удалить этот переходник в диспетчере устройств windows, и попросить его поискать устройства заново.&lt;br /&gt;
|-&lt;br /&gt;
|Некорректная работа фискального регистратора.&lt;br /&gt;
|Касса печатает заголовок чека, потом ошибку, потом надпись «Чек аннулирован», и так бесконечно по кругу.&lt;br /&gt;
|Аппаратная ошибка ФР, некорректный чек, сформированный системой.&lt;br /&gt;
|Если текст ошибки, который печатается на чеке (он же сохраняется и в лог-файл) содержит информацию об [http://ru.wikipedia.org/wiki/ЭКЛЗ ЭКЛЗ] (например «ЭКЛЗ: Неверные дата или время код: 168, Режим: 3, Подрежим: 0») — нужно обратиться в компанию, с которой у вас заключен договор о поддержке кассы, сообщить им текст ошибки. В остальных случаях — обратиться в службу поддержки MeaSoft для выяснения причины и ее устранения.&lt;br /&gt;
|-&lt;br /&gt;
|Ошибка при формировании отчета без гашения (X-отчет)&lt;br /&gt;
|Касса печатает X-отчет бесконечно по кругу. В протоколе работы чековой службы выдается сообщение «Команда не поддерживается в данном режиме код: 115, Режим: 6, Подрежим: 0».&lt;br /&gt;
|В кассовом аппарате не установлены дата и время.&lt;br /&gt;
|Необходимо через драйвер ФР установить текущую дату и время, затем cохранить настройку. В остальных случаях — обратиться в службу поддержки MeaSoft для выяснения причины и ее устранения.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4. [https://docs.google.com/spreadsheets/d/19Mn5syH70XwFdg6Pe2fhYM17SNHGuOJDvQEQXHxSz54/edit#gid=0 Список ошибок протокола Штрих и их решение]&lt;br /&gt;
&lt;br /&gt;
= Печать чеков =&lt;br /&gt;
&lt;br /&gt;
=== При предоплате ===&lt;br /&gt;
Если продавец передаёт предоплаченный товар курьерской службе, чек на предоплату формирует продавец. Курьерская служба должна оформить чек на передачу товара, так как ККТ обязано использовать лицо, осуществляющее расчёты с покупателем (п. 1 ст. 4.3 54-ФЗ).&lt;br /&gt;
&lt;br /&gt;
Поскольку передача заказа в зачёт предоплаты относится к расчётам и этим занимается курьер, пробить кассовый чек должен именно он.&lt;br /&gt;
&lt;br /&gt;
В таком случае покупатель получает два чека: первый чек выдаётся, когда клиент вносит предоплату, а второй чек — когда он получает товар. Подробнее см. [https://astral.ru/articles/ofd/12791 в статье].&lt;br /&gt;
&lt;br /&gt;
=== В офисном приложении ===&lt;br /&gt;
Чековая служба не запрашивает печать бумажного чека, если заказ доставлен курьером: бумажный чек тратит бумагу, и если бумага закончится, то печать чеков остановится. А эту бумагу курьер все равно получателю отдать не сможет.&lt;br /&gt;
&lt;br /&gt;
Если клиент находится перед вами, в офисе, то чек печатается — соблюдается одно из условий:&lt;br /&gt;
* вы отмечаете доставленным отправление, у которого выбрана доставка в пункт выдачи, совпадающий с текущим ответственным филиалом;&lt;br /&gt;
* вы принимаете оплату за доставку заказа от заказчика, в этом случае вы вносите платеж на вкладке '''Заказы''' в карточке заказа.&lt;br /&gt;
&lt;br /&gt;
=== LIFE PAY: отличия между чеками в офисном и мобильном приложении ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; align=&amp;quot;none&amp;quot; style=&amp;quot;width: 80%; background-color:#ffffff;&lt;br /&gt;
!style=&amp;quot;width: 20%|Отличие&lt;br /&gt;
!style=&amp;quot;width: 40%|Офисное приложение&lt;br /&gt;
!style=&amp;quot;width: 40%|Мобильное приложение&lt;br /&gt;
|-&lt;br /&gt;
|Авторизация. Тег &amp;lt;code&amp;gt;login&amp;lt;/code&amp;gt;||Общий номер телефона&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Его можно указать в ini-файле чековой службы или 2-м параметром в поле '''Cерийный номер''' в карточке ФР в программе.&amp;lt;br&amp;gt;Чекопечатающее устройство (ЧПУ) в этом случае не предполагается, а авторизация нужна.||Мобильный телефон курьера&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;По этому параметру LIFE PAY определяет, на какой чековый принтер отправлять копию чека.&lt;br /&gt;
|-&lt;br /&gt;
|Имя кассира. Тег &amp;lt;code&amp;gt;cashier_name&amp;lt;/code&amp;gt;||Параметр &amp;lt;code&amp;gt;PrintCashier&amp;lt;/code&amp;gt; в ini-файле&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Если включено, передается ФИО сотрудника, инициировавшего печать.&amp;lt;br&amp;gt;Офисные сотрудники обычно официально трудоустроены, поэтому поле заполняется.||Не указывается&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;В большинстве случаев курьеры не оформлены официально, показывать налоговой их не нужно.&lt;br /&gt;
|-&lt;br /&gt;
| Режим печати чека. Тег &amp;lt;code&amp;gt;mode&amp;lt;/code&amp;gt;.||Печать на бумаге на ФР и отправка SMS или по электронной почте&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;В офисе предполагается, что это самовывоз — покупатель стоит перед вами, и вы пробиваете чек и сразу из ФР его отдаете покупателю||Отправка SMS или по электронной почте&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Когда курьер доставляет заказ, он печатает бумажный чек на ЧПУ. Бумажные чеки в отсутствие ЧПУ в офисе [[#Печать чеков в офисном приложении|не печатаются]]. Фискализировать чек, не отправляя его ни на бумагу, ни на ФР, ни по почте/SMS, невозможно, это аппаратно не позволяет делать ФР. Можно на уровне ОФД отключить SMS, если они не нужны, и вам достаточно бумажного чека из ЧПУ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Потенциально могут быть еще небольшие различия в заполнении данных агента, поставщика. Если есть пожелания к конкретным полям, обращайтесь.&lt;br /&gt;
&lt;br /&gt;
= Отключение печати бумажных чеков =&lt;br /&gt;
&lt;br /&gt;
Чтобы отключить печать бумажных чеков на фискальном регистраторе Штрих-М:&lt;br /&gt;
# Отключите чековую службу, чтобы она не мешала работе программы «Тест драйвера ФР». Для этого в контекстном меню элемента «Этот компьютер» выберите '''Управление'''. Откроется оснастка Windows «Управление компьютером». В панели слева разверните узел «Службы и приложения», выберите элемент «Службы», выделите в списке службу '''CheckService''' и нажмите '''Остановить службу'''.[[Файл:Настройка ФР управление.png|none|900 px]]&lt;br /&gt;
# Запустите программу «Тест драйвера ФР».&lt;br /&gt;
# Нажмите на кнопку '''Настройка свойств'''. Откроется окно «Свойства».[[Файл:Настройка ФР драйвер.png|none]]&lt;br /&gt;
# Нажмите на кнопку '''Проверка связи''', чтобы проверить связь с кассой. Если в поле '''Код ошибки''' отобразился модуль кассы, все хорошо. Если отобразилась ошибка, например «Нет связи», в этом окне в поле '''Подключение''' выберите значение '''Локально''', в поле '''COM порт''' выберите порт, к которому подключена касса. Посмотреть номер порта можно через диспетчер устройств.&lt;br /&gt;
# Нажмите на кнопку '''Таблицы'''. Откроется окно «Таблицы».&lt;br /&gt;
# Найдите в списке таблицу 17 «Региональные настройки» и дважды щелкните по элементу. Откроется окно «Региональные настройки».&lt;br /&gt;
# В строке «Поле 7. Rus не печатать документ» установите значение 2 и нажмите ENTER.&lt;br /&gt;
# Закройте все окна программы «Тест драйвера ФР». &lt;br /&gt;
# Включите чековую службу.&lt;br /&gt;
&lt;br /&gt;
Печать бумажных чеков отключена, при этом чеки отправляются в ОФД. &lt;br /&gt;
&lt;br /&gt;
Чтобы отключить печать чеков на других ФР, заклейте датчик кассовой ленты скотчем, бумажную ленту достаньте.&lt;br /&gt;
&lt;br /&gt;
= Ошибки фискализации =&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/19Mn5syH70XwFdg6Pe2fhYM17SNHGuOJDvQEQXHxSz54/edit#gid=0 Список ошибок протокола Штрих и их решение]&lt;br /&gt;
&lt;br /&gt;
При вызове функций драйвера Штрих-М нельзя указывать круглые скобки, получаем исключение. Неправильно fDriver.FNSendSTLVTagOperation(); правильно fDriver.FNSendSTLVTagOperation;&lt;br /&gt;
&lt;br /&gt;
== Ошибка программирования реквизита 1226 ==&lt;br /&gt;
Ошибка тега 1226 означает, что не был передан ИНН поставщика.&lt;br /&gt;
&lt;br /&gt;
ИНН передается, если:&lt;br /&gt;
# Передан признак агента.&lt;br /&gt;
# ИНН поставщика указан в карточке клиента в Measoft или в контейнере вложения в [[API#Описание элементов для оформления заказа|API-запросе]] (параметр &amp;lt;code&amp;gt;suppINN&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Наименование поставщика указано в карточке клиента в Measoft (поле '''[[Клиенты и партнеры#Реквизиты|Полное наименование]]''') или в контейнере вложения в API-запросе (параметр &amp;lt;code&amp;gt;suppcompany&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Приоритет имеет значение, указанное в контейнере вложения.&lt;br /&gt;
&lt;br /&gt;
== Ошибка программирования реквизита 1171 ==&lt;br /&gt;
Ошибка тега 1171 означает, что не был передан номер телефона поставщика.&lt;br /&gt;
&lt;br /&gt;
Номер телефона поставщика должен быть указан в контейнере вложения [[API#Описание элементов для оформления заказа|API-запросе]] (параметр &amp;lt;code&amp;gt;suppphone&amp;lt;/code&amp;gt;), карточке отдела или карточке клиента MeaSoft, на вкладке '''Реквизиты''' в поле '''Тел'''.&lt;br /&gt;
&lt;br /&gt;
Приоритет имеет значение, указанное в контейнере вложения.&lt;br /&gt;
&lt;br /&gt;
== Ошибка программирования реквизита 1222 ==&lt;br /&gt;
Тег 1222 необходимо передавать совместно с тегом 1223 и только для версий ФФД 1.2 и выше. &lt;br /&gt;
Тег 1222 передается командой FNSendTagOperation, тег 1223 формируется командами FNBeginSTLVTag и FNSendSTLVTagOperation. &lt;br /&gt;
В тег 1223 могут быть вложены теги тег 1073 &amp;quot;телефон платежного агента&amp;quot; и тег 1026 &amp;quot;наименование оператора перевода&amp;quot;. Телефон обязан передаваться в формате +7цццццццццц без скобок, тире и пробелов&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%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%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BA%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%87%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=15031</id>
		<title>Настройка модуля печати кассовых чеков</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%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%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%D0%BA%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%87%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=15031"/>
				<updated>2024-08-02T14:32:21Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка чековой службы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Модуль интеграции с фискальным регистратором (печати кассовых чеков) предназначен для обеспечения возможности взаимодействия системы MeaSoft с фискальными регистраторами. Он представляет собой [http://ru.wikipedia.org/wiki/Службы_Windows службу Windows], которая подключается к БД системы и к фискальному регистратору.&lt;br /&gt;
&lt;br /&gt;
Одна установка службы поддерживает один регистратор.&lt;br /&gt;
&lt;br /&gt;
MeaSoft поддерживает неограниченное количество регистраторов, в том числе и зарегистрированных на одно юридическое лицо. Чтобы подключить несколько регистраторов, установите соответствующее количество модулей интеграции с ФР.&lt;br /&gt;
&lt;br /&gt;
Модуль печати кассовых чеков состоит из следующих файлов:&lt;br /&gt;
* CheckServiceExe.exe — исполняемый файл службы;&lt;br /&gt;
* CheckServiceExe.ini — конфигурационный файл;&lt;br /&gt;
* CheckServiceExe.log — файл журнала. Если его нет, создается при запуске службы.&lt;br /&gt;
&lt;br /&gt;
= Применение =&lt;br /&gt;
&lt;br /&gt;
Чековая служба нужна, если:&lt;br /&gt;
* установлена касса Штрих-М — для печати чеков в офисной системе и мобильном приложении курьера.&lt;br /&gt;
:При закрытии заказа курьером в мобильном приложении для печати чеков нужен [[Настройка модуля автоматизации|модуль автоматизации]], который будет отправлять чеки, поскольку прямой связи мобильного приложения с Штрих-М нет; &lt;br /&gt;
* установлена касса LIFE PAY — для ручной печати чека из офисного приложения.&lt;br /&gt;
&lt;br /&gt;
Для печати чека через LIFE PAY и Штрих-Нано-Ф при закрытии заказа курьером в мобильном приложении чековая служба не нужна.&lt;br /&gt;
&lt;br /&gt;
'''Примечание'''. Касса Штрих-М работает с чековой службой только при подключении через COM-порт или USB и одновременно передает данные в ОФД. При подключении через USB на компьютере настраивается виртуальный COM-порт.&lt;br /&gt;
&lt;br /&gt;
= Установка чековой службы=&lt;br /&gt;
&lt;br /&gt;
# Скопируйте файл CheckServiceExe.exe в любую папку на компьютере:&lt;br /&gt;
#* для кассы Штрих-М — на тот компьютер, к которому физически подключена касса;&lt;br /&gt;
#* для кассы LIFE PAY – на любой компьютер, потому что у LIFE PAY облачная фискализация.&lt;br /&gt;
# Создайте ярлык для файла CheckServiceExe.exe.&lt;br /&gt;
# В свойствах ярлыка на вкладке '''Ярлык''' в поле '''Объект''' после имени файла добавьте &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt;:[[Файл:Установка чековой службы.png|none]]&lt;br /&gt;
# Сохраните и запустите ярлык от имени администратора. В результате служба появится в списке служб. Для просмотра списка в контекстном меню '''Мой компьютер''' выберите  '''Управление''' &amp;gt; '''Службы'''.&lt;br /&gt;
# В папке с чековой службой создайте INI-файл или загрузите шаблоны: [https://courierexe.ru/download/checkservice/lifepay/CheckServiceExe.ini LIFE PAY], [https://courierexe.ru/download/checkservice/shtrih/CheckServiceExe.ini Штрих-М].&lt;br /&gt;
# Откройте INI-файл, укажите [[#Настройка чековой службы |параметры]] для своей базы и сохраните изменения.&lt;br /&gt;
# В контекстном меню элемента '''Мой компьютер''' выберите  '''Управление''' &amp;gt; '''Службы''', убедитесь, что режим запуска службы установлен в положение «Автоматически», и запустите чековую службу. Если установка и настройка прошли успешно, то первый чек будет сразу распечатан на кассе. &lt;br /&gt;
&lt;br /&gt;
Если чек не печатается, смотрите причины в файле логов чековой службы CheckServiceExe.log. Он находится в папке чековой службы. Подробнее см. раздел «[[Устранение неполадок]]».&lt;br /&gt;
&lt;br /&gt;
Можно установить несколько независимых экземпляров службы на одну систему, переименовав exe-файл. Название службы в Windows, файлы настроек и логов будут иметь соответствующие имена.&lt;br /&gt;
&lt;br /&gt;
= Настройка чековой службы =&lt;br /&gt;
Откройте файл CheckServiceExe.ini любым текстовым редактором, например [http://ru.wikipedia.org/wiki/Блокнот_(программа) блокнотом].&lt;br /&gt;
&lt;br /&gt;
В разделе &amp;lt;nowiki&amp;gt;[COMMON]&amp;lt;/nowiki&amp;gt; измените или добавьте следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 80%;&amp;quot; &amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 20%;&amp;quot;|Параметр&lt;br /&gt;
!style=&amp;quot;width: 40%;&amp;quot;| Штрих-М&lt;br /&gt;
!style=&amp;quot;width: 40%;&amp;quot;| LIFE PAY&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Param&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Дополнительные параметры фискального регистратора&lt;br /&gt;
|Пример: &amp;lt;code&amp;gt;Param=30, 6&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Обязательный параметр, значения указываются через запятую. &amp;lt;br&amp;gt;Первое значение — пароль пользователя ФР, по умолчанию 30. Второе значение — скорость работы ФР. Чтобы узнать скорость, используйте утилиту «Тест драйвера», которая поставляется с кассой: откройте утилиту, нажмите на кнопку '''Настройка свойств''' &amp;gt; '''Поиск оборудования'''. Отобразится подключенный ФР и его &amp;lt;spoiler text=&amp;quot;скорость работы&amp;quot;&amp;gt;Принимаемые значения параметра '''Скорость порта''':&amp;lt;br&amp;gt;1 — 4800 кбит/с,&amp;lt;br&amp;gt; 2 — 9600 кбит/с,&amp;lt;br&amp;gt; 3 — 19200 кбит/с,&amp;lt;br&amp;gt; 4 — 38400 кбит/с,&amp;lt;br&amp;gt; 5 — 57600 кбит/с,&amp;lt;br&amp;gt; 6 — 115200 кбит/с.&amp;lt;br&amp;gt;Значение параметра скорости должно совпадать с установленным режимом самого фискального регистратора. По умолчанию он настроен на скорость 115200, однако иногда этот параметр необходимо уменьшить для повышения стабильности работы регистратора. Также были случаи сброса скорости в положение 4800 пользователями, что возможно при включении ФР с зажатой кнопкой промотки чековой ленты (см. [http://courierexe.ru/download/ext_manual/Shtrih_user_manual.pdf руководство пользователя]). Таким образом, начальная настройка в этом режиме исключит вероятность отказа системы из-за ошибочного сброса настройки в ФР. Скорость работы в ФР можно задать в утилите «Тест драйвера» в окне «Настройка свойств» кнопкой '''Установить параметры'''.&amp;lt;br&amp;gt;Например, чтобы установить для модуля настройки подключения к ФР следующие параметры: пароль доступа — 30, скорость порта — 4800, укажите строку: &amp;lt;br&amp;gt; Param=30, 1&amp;lt;/spoiler&amp;gt;.&lt;br /&gt;
|Пример: &amp;lt;code&amp;gt;Param=91defdc4556fc182680982e1b2am8d6f, 79011111111,,64&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Необязательный параметр. Если значения указаны в [[Фирмы#Добавление фискального регистратора|фискальном регистраторе]], можно оставить строку в таком виде: &amp;lt;code&amp;gt;#Param=&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Первое значение — 32-значный АПИ-ключ из ЛК LIFE PAY.&amp;lt;br&amp;gt;Второе значение — номер телефона без +, на который зарегистрирован ЛК LIFE PAY. &amp;lt;br&amp;gt;Третье значение — по умолчанию пустое, но можно указать путь к АПИ лайфпей (тикет 76001). Укажите путь https://sapi.life-pay.ru/cloud-print/ - для ФФД 1.05 И 1.1 и путь https://sapi.life-pay.ru/cloud-print-ffd1_2/ для ФФД 1.2. &amp;lt;br&amp;gt;Четвертое значение — агентский признак, если есть.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Номер [http://ru.wikipedia.org/wiki/Последовательный_порт COM-порта] фискального регистратора. Если регистратор подключен через [http://ru.wikipedia.org/wiki/USB USB-порт], драйвер эмулятора порта все равно создает виртуальный COM-порт, номер которого устанавливается в его свойствах (в [http://ru.wikipedia.org/wiki/Диспетчер_устройств диспетчере устройств]), а также номер порта меняется в зависимости от разъема USB, к которому подключено устройство.&lt;br /&gt;
|Пример: &amp;lt;code&amp;gt;Port=5&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Обязательный параметр.&lt;br /&gt;
|Пример: &amp;lt;code&amp;gt;Port=1 &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Необязательный параметр, можно указывать значение 1.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;CashRegister&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;rspoiler text=&amp;quot;Код фискального регистратора&amp;quot;&amp;gt;Чтобы его узнать, выберите в главном меню системы пункт '''Справочники''' &amp;gt; '''Фирмы''', откройте карточку фирмы, на которую зарегистрирован фискальный регистратор, перейдите на закладку '''Устройства''', убедитесь, что в выпадающем списке выбрано значение '''Фискальные регистраторы'''. В списке фискальных регистраторов вы увидите код. Если запись для регистратора еще не создана или вы планируете установить дополнительную кассу, добавьте новый ФР.&amp;lt;/rspoiler&amp;gt; в базе данных.&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;CashRegister=2 &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Обязательный параметр.&amp;lt;br&amp;gt; &amp;lt;spoiler text=&amp;quot;Что еще можно указать&amp;quot;&amp;gt;Можно указывать наборы обслуживаемых ФР двумя способами:&lt;br /&gt;
* через запятую или тире или их комбинации указать несколько кодов;&lt;br /&gt;
* условие SQL-запроса. Например &amp;lt;code&amp;gt;AND cr.DeviceType=3&amp;lt;/code&amp;gt; для всех доступных ФР LIFE PAY.&lt;br /&gt;
&lt;br /&gt;
Тогда они все будут обслуживаться одним объектом подключения к ФР. Что это значит: для Штрих-М у объекта открыт COM-порт при старте, и поменяться он не может. Все чеки пойдут в один ФР. Для LIFE PAY — в созданный объект передается поле '''Серийный номер''', откуда он берет авторизацию, т.о. чеки могут отправляться в различные аккаунты. Главное, что тип кассы у всех ФР должен быть один — служба не сможет переключиться например с LIFE PAY на ApiShip.&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Имя или IP-адрес сервера, на котором находится БД MeaSoft. Сервер должен быть доступен по сети с компьютера, к которому подключена касса.&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;ServerName=srv01   &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Обязательный параметр.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DatabaseName&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Имя базы данных (по умолчанию «courier»)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;DataBaseName=courier&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;Обязательный параметр.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;UserName&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Имя пользователя базы данных&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;UserName=check&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;Обязательный параметр. Пользователя check нужно создать для определения запросов чековой службы, для этого обратитесь в техподдержку.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Password&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Пароль пользователя базы данных&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;Password=password &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;Обязательный параметр.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DBPort&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Порт базы данных&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Пример: &amp;lt;code&amp;gt;DBPort =3306  &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;Обязательный параметр. По умолчанию 3306. Проверить порт можно в любом ярлыке офисной программы.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Device&amp;lt;/code&amp;gt;&lt;br /&gt;
|1 — ФР Штрих-М (по умолчанию),&amp;lt;br&amp;gt; 2 — чековый принтер Штрих-М (протокол Epson ESC/P)&lt;br /&gt;
|3 — сервис фискализации LIFE PAY &amp;lt;br&amp;gt; 9 - WebKassa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;AgentFlags&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Флаги тега 1057 для передачи в кассу при агентском чеке&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | Пример:  &amp;lt;code&amp;gt;AgentFlags=4&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Обязательный параметр, если курьерская служба — платежный агент. Чтобы не передавать признаки платежного агента (если в кассе нет этого признака), укажите 0. Если параметр не указан, передается значение по умолчанию 4. &amp;lt;spoiler text=&amp;quot;Возможные значения&amp;quot;&amp;gt;&lt;br /&gt;
* 1 — банковский платежный агент,&lt;br /&gt;
* 2 — банковский платежный субагент,&lt;br /&gt;
* 4 — платежный агент,&lt;br /&gt;
* 8 — платежный субагент,&lt;br /&gt;
* 16 — поверенный,&lt;br /&gt;
* 32 — комиссионер,&lt;br /&gt;
* 64 — агент.&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PrintKurier&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |1 — печать ФИО курьера на чеке.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PrintSeller&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |1 — печать заказчика на чеке.&amp;lt;br&amp;gt; Если включено, печатается юр. наименование, ИНН и телефон клиента.&amp;lt;br&amp;gt;В [[Клиенты и партнеры#Реквизиты|карточке клиента]] на вкладке '''Реквизиты''' должно быть заполнено поле '''Полное название'''.&amp;lt;br&amp;gt; Этот параметр никак не связан с тегами фискального документа 1225 и 1226 и просто выводит текстом на бумагу дополнительный текст там, где это возможно.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PrintCashier&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Печатать имя кассира на чеке (тег 1021). По умолчанию 1.&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |1 — кассир берется из строки чека,&amp;lt;br&amp;gt;0 — не печатается,&amp;lt;br&amp;gt; другое число — код нужного сотрудника.&amp;lt;br&amp;gt;Можно писать подзапрос вида &amp;lt;code&amp;gt;if(a.cl=1, 5, 6)&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EmailPriority&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |1 — отправка чека по e-mail приоритетнее, чем SMS.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;AddStr&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | Пользовательская строка, которая печатается на всех чеках.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ShowLog&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Включить запись лога кассы в лог драйвера об ошибках (путь к логу настраивается в Тест Драйвера).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FirmsChangeSeller&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |Коды фирм (через запятую), для которых нужно при печати заказчика на чеке подменять реквизиты заказчика реквизитами контрагента фирмы.  &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка ФР Штрих-М =&lt;br /&gt;
[[Файл:ShtrihTableList.png|thumb|100px|right]]&lt;br /&gt;
'''Внимание.''' Для использования программы «Тест драйвера» нужно остановить службу «CheckService».&lt;br /&gt;
&lt;br /&gt;
=== Обрезка чека ===&lt;br /&gt;
Обрезка чеков настраивается в таблице 1 фискального регистратора, параметр «Отрезка чека». Установите значение 1 чтобы ФР полностью отрезал каждый чек, или 2, чтобы он частично надрезал, чтобы чеки все-равно были лентой. Наша система не посылает на ККМ команду обрезки чека во избежание двойной обрезки.&lt;br /&gt;
&lt;br /&gt;
=== Отчет по секциям ===&lt;br /&gt;
[[Файл:ShtrihZReportSect.png|thumb|100px|right]]&lt;br /&gt;
В системе предусмотрено разнесение различных фискальных операций по секциям фискального регистратора. По-умолчанию суточные отчеты (X и Z-отчеты) отображают общие суммы по всем секциям. В ФР есть возможность сделать разбивку этих отчетов по секциям. Для этого в таблице 1 фискального регистратора, параметр «Тип суточного отчета» установите в значение 1.&lt;br /&gt;
&lt;br /&gt;
=== Проверка корректности регистрации в ОФД ===&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right&amp;quot; mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
Номер фиск документа.png&lt;br /&gt;
Читаем отчет регистрации.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Для удовлетворения большинства потребностей наших клиентов в правильной фискализации в соответствии с 54-ФЗ, необходимо иметь [[Оборудование#Фискальный регистратор|ФР]] с фискальным накопителем (ФН) поддерживающие версию фискальный документ (ФД) версии 1.05. Так же необходимо зарегистрировать ФР в ОФД с признаком агента (тег 1057), так как курьерские службы обычно выступают в качестве платежного агента. Для соблюдения всех этих требований нужно обратиться в организацию, обслуживающую ваш фискальный регистратор с соответствующей просьбой. В некоторых случаях для поддержки может понадобиться перепрошивка ФР, замена ФН, перерегистрация в ОФД.&lt;br /&gt;
После этих операций, можно убедиться, что все признаки, нас интересующие, установлены корректно. Для этого сначала нужно узнать номер документа фискализации. В программе «Тест драйвера» слева откроем раздел «11. ФН», в закладках «Фискализация ФН», нажмем кнопку «Запрос итогов фискализации» (см. скрин-шот). В результирующем отчете видим номер фискального документа о фискализации.&lt;br /&gt;
Затем идем на закладку «Данные», Вводим номер документа, ставим галку «Показ. номера тегов», и нажимаем «Прочитать документ». В результирующем тексте убеждаемся в использовании версии ФД 1.05 — теги 1209 «Версия ФФД» и 1189 «Версия ФФД ККМ» должны иметь значения 2, тег 1057 «Призн. плат. агента» — должен быть, вероятно, 4 (это регистр битов, значение «4» соответствует установленному биту 2 «Платежный агент»).&lt;br /&gt;
&lt;br /&gt;
'''Внимание'''. Данные фискального документа хранятся в фискальном накопителе 30 дней, после этого срока посмотреть документ регистрации (перерегистрации) в ФН будет невозможно.&lt;br /&gt;
&lt;br /&gt;
=== Подключение логирования драйвером Штрих-М ===&lt;br /&gt;
Чековая служба предусматривает включение логирования формирования чека средствами драйвера Штирх-М. Для этого в файле параметров конфигурации необходимо указать в секции&lt;br /&gt;
[COMMON] для переменной LogShtrih значение &amp;quot;T&amp;quot; или &amp;quot;1&amp;quot;. Отключить логирование указать &amp;quot;F&amp;quot; или &amp;quot;0&amp;quot;. Путь по которому сохраняется лог, можно посмотреть в настройках драйвера Штрих-М:  “Дополнительные параметры” -&amp;gt; Ставим галочку “Вести лог” и указываем путь к файл лога. &lt;br /&gt;
&lt;br /&gt;
=== Проверка корректности передачи тегов в ОФД ===&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right&amp;quot; mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
Shtrih LastDoc.png&lt;br /&gt;
Shtrih check tags.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Убедиться в корректности передаваемых в ОФД значений тегов можно следующим образом: Сначала узнаем номер фискального документа — его можно посмотреть в чеке (как бумажном, так и электронном), или в приложении «Тест драйвера» в разделе «11. ФН», в закладках «Состояние ФН», нажмем кнопку «Запрос статуса ФН» и посмотрим «Номер последнего ФД» (см. скрин-шот). Далее на закладке «Данные» введем этот номер в поле «№Док.», и нажмем «Прочитать документ». В результирующем тексте убеждаемся в отправке тегов 1008, 1057, 1073, 1171, 1215 и прочих (см. скрин-шот).&lt;br /&gt;
&lt;br /&gt;
Теги 1225 и 1226 (Наименование и ИНН поставщика) поддерживаются Штрих-М в прошивке от 24.10.2018 и версией чековой службы от 19.03.2019&lt;br /&gt;
&lt;br /&gt;
К сожалению, эти передаваемые данные далеко не всегда отображаются в бумажном и/или электронном чеках, это зависит от самого ФР и/или ОФД соответственно. Однако по данной инструкции мы можем убедиться, что со своей стороны передали все данные, необходимые для соответствия 54-ФЗ.&lt;br /&gt;
&lt;br /&gt;
= Удаление службы=&lt;br /&gt;
Для корректного удаления службы запустите исполняемый файл CheckServiceExe.exe с параметром командной строки &amp;lt;code&amp;gt;/uninstall&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Примечания =&lt;br /&gt;
Поскольку при запуске служба открывает подключение к фискальному регистратору, и использует его все время своей работы, другие программы (например «Тест драйвера» и т. д.) при попытке подключения выдадут ошибку «Невозможно открыть порт, он используется другим приложением». Чтобы избежать этого, остановите службу модуля на время использования других программ.&lt;br /&gt;
&lt;br /&gt;
= Устранение неполадок =&lt;br /&gt;
1. В случае сбоя работы кассы ошибку можно посмотреть в файле CheckServiceExe.log&lt;br /&gt;
&lt;br /&gt;
2. Для включения логирования от драйвера Штрих-М в чековой надо установить флаг fDriver.LogOn:= true. По умолчанию false&lt;br /&gt;
&lt;br /&gt;
3. Ошибки условно можно разделить на 3 категории:&lt;br /&gt;
{|&lt;br /&gt;
!Ошибка&lt;br /&gt;
!Симптомы&lt;br /&gt;
!Возможные причины&lt;br /&gt;
!Способы устранения&lt;br /&gt;
|-&lt;br /&gt;
|Нет связи с сервером&lt;br /&gt;
|Касса не печатает, в логе сообщения вида «Unknown MySQL server host ''» или «Can’t connect to MySQL server on…».&lt;br /&gt;
|Неверно настроено подключение к серверу, не работает сервер, сеть.&lt;br /&gt;
|Проверить настройки подключения в файле CheckServiceExe.ini, проверить доступность сервера с этого компьютера.&lt;br /&gt;
|-&lt;br /&gt;
|Нет связи с фискальным регистратором&lt;br /&gt;
|Касса не печатает, в логе сообщения вида «Нет связи код: −1, Режим: 0, Подрежим: 0»&lt;br /&gt;
|ФР Выключен, ФР подключен не к тому разъему, ФР настроен не на ту скорость&lt;br /&gt;
|Проверьте, что ФР включен, подключен к компьютеру, именно в тот порт, в котором он настраивался. Попробуйте отключить службу чеков, открыть программу «Тест драйвера», выполнить поиск оборудования. Если она находит ФР — сравнить настройки подключения, найденные тестом драйвера с тем, что прописано в CheckServiceExe.ini. В единичных случаях проблема может заключаться в драйвере переходника COM-USB, попробуйте удалить этот переходник в диспетчере устройств windows, и попросить его поискать устройства заново.&lt;br /&gt;
|-&lt;br /&gt;
|Некорректная работа фискального регистратора.&lt;br /&gt;
|Касса печатает заголовок чека, потом ошибку, потом надпись «Чек аннулирован», и так бесконечно по кругу.&lt;br /&gt;
|Аппаратная ошибка ФР, некорректный чек, сформированный системой.&lt;br /&gt;
|Если текст ошибки, который печатается на чеке (он же сохраняется и в лог-файл) содержит информацию об [http://ru.wikipedia.org/wiki/ЭКЛЗ ЭКЛЗ] (например «ЭКЛЗ: Неверные дата или время код: 168, Режим: 3, Подрежим: 0») — нужно обратиться в компанию, с которой у вас заключен договор о поддержке кассы, сообщить им текст ошибки. В остальных случаях — обратиться в службу поддержки MeaSoft для выяснения причины и ее устранения.&lt;br /&gt;
|-&lt;br /&gt;
|Ошибка при формировании отчета без гашения (X-отчет)&lt;br /&gt;
|Касса печатает X-отчет бесконечно по кругу. В протоколе работы чековой службы выдается сообщение «Команда не поддерживается в данном режиме код: 115, Режим: 6, Подрежим: 0».&lt;br /&gt;
|В кассовом аппарате не установлены дата и время.&lt;br /&gt;
|Необходимо через драйвер ФР установить текущую дату и время, затем cохранить настройку. В остальных случаях — обратиться в службу поддержки MeaSoft для выяснения причины и ее устранения.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4. [https://docs.google.com/spreadsheets/d/19Mn5syH70XwFdg6Pe2fhYM17SNHGuOJDvQEQXHxSz54/edit#gid=0 Список ошибок протокола Штрих и их решение]&lt;br /&gt;
&lt;br /&gt;
= Печать чеков =&lt;br /&gt;
&lt;br /&gt;
=== При предоплате ===&lt;br /&gt;
Если продавец передаёт предоплаченный товар курьерской службе, чек на предоплату формирует продавец. Курьерская служба должна оформить чек на передачу товара, так как ККТ обязано использовать лицо, осуществляющее расчёты с покупателем (п. 1 ст. 4.3 54-ФЗ).&lt;br /&gt;
&lt;br /&gt;
Поскольку передача заказа в зачёт предоплаты относится к расчётам и этим занимается курьер, пробить кассовый чек должен именно он.&lt;br /&gt;
&lt;br /&gt;
В таком случае покупатель получает два чека: первый чек выдаётся, когда клиент вносит предоплату, а второй чек — когда он получает товар. Подробнее см. [https://astral.ru/articles/ofd/12791 в статье].&lt;br /&gt;
&lt;br /&gt;
=== В офисном приложении ===&lt;br /&gt;
Чековая служба не запрашивает печать бумажного чека, если заказ доставлен курьером: бумажный чек тратит бумагу, и если бумага закончится, то печать чеков остановится. А эту бумагу курьер все равно получателю отдать не сможет.&lt;br /&gt;
&lt;br /&gt;
Если клиент находится перед вами, в офисе, то чек печатается — соблюдается одно из условий:&lt;br /&gt;
* вы отмечаете доставленным отправление, у которого выбрана доставка в пункт выдачи, совпадающий с текущим ответственным филиалом;&lt;br /&gt;
* вы принимаете оплату за доставку заказа от заказчика, в этом случае вы вносите платеж на вкладке '''Заказы''' в карточке заказа.&lt;br /&gt;
&lt;br /&gt;
=== LIFE PAY: отличия между чеками в офисном и мобильном приложении ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; align=&amp;quot;none&amp;quot; style=&amp;quot;width: 80%; background-color:#ffffff;&lt;br /&gt;
!style=&amp;quot;width: 20%|Отличие&lt;br /&gt;
!style=&amp;quot;width: 40%|Офисное приложение&lt;br /&gt;
!style=&amp;quot;width: 40%|Мобильное приложение&lt;br /&gt;
|-&lt;br /&gt;
|Авторизация. Тег &amp;lt;code&amp;gt;login&amp;lt;/code&amp;gt;||Общий номер телефона&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Его можно указать в ini-файле чековой службы или 2-м параметром в поле '''Cерийный номер''' в карточке ФР в программе.&amp;lt;br&amp;gt;Чекопечатающее устройство (ЧПУ) в этом случае не предполагается, а авторизация нужна.||Мобильный телефон курьера&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;По этому параметру LIFE PAY определяет, на какой чековый принтер отправлять копию чека.&lt;br /&gt;
|-&lt;br /&gt;
|Имя кассира. Тег &amp;lt;code&amp;gt;cashier_name&amp;lt;/code&amp;gt;||Параметр &amp;lt;code&amp;gt;PrintCashier&amp;lt;/code&amp;gt; в ini-файле&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Если включено, передается ФИО сотрудника, инициировавшего печать.&amp;lt;br&amp;gt;Офисные сотрудники обычно официально трудоустроены, поэтому поле заполняется.||Не указывается&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;В большинстве случаев курьеры не оформлены официально, показывать налоговой их не нужно.&lt;br /&gt;
|-&lt;br /&gt;
| Режим печати чека. Тег &amp;lt;code&amp;gt;mode&amp;lt;/code&amp;gt;.||Печать на бумаге на ФР и отправка SMS или по электронной почте&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;В офисе предполагается, что это самовывоз — покупатель стоит перед вами, и вы пробиваете чек и сразу из ФР его отдаете покупателю||Отправка SMS или по электронной почте&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Когда курьер доставляет заказ, он печатает бумажный чек на ЧПУ. Бумажные чеки в отсутствие ЧПУ в офисе [[#Печать чеков в офисном приложении|не печатаются]]. Фискализировать чек, не отправляя его ни на бумагу, ни на ФР, ни по почте/SMS, невозможно, это аппаратно не позволяет делать ФР. Можно на уровне ОФД отключить SMS, если они не нужны, и вам достаточно бумажного чека из ЧПУ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Потенциально могут быть еще небольшие различия в заполнении данных агента, поставщика. Если есть пожелания к конкретным полям, обращайтесь.&lt;br /&gt;
&lt;br /&gt;
= Отключение печати бумажных чеков =&lt;br /&gt;
&lt;br /&gt;
Чтобы отключить печать бумажных чеков на фискальном регистраторе Штрих-М:&lt;br /&gt;
# Отключите чековую службу, чтобы она не мешала работе программы «Тест драйвера ФР». Для этого в контекстном меню элемента «Этот компьютер» выберите '''Управление'''. Откроется оснастка Windows «Управление компьютером». В панели слева разверните узел «Службы и приложения», выберите элемент «Службы», выделите в списке службу '''CheckService''' и нажмите '''Остановить службу'''.[[Файл:Настройка ФР управление.png|none|900 px]]&lt;br /&gt;
# Запустите программу «Тест драйвера ФР».&lt;br /&gt;
# Нажмите на кнопку '''Настройка свойств'''. Откроется окно «Свойства».[[Файл:Настройка ФР драйвер.png|none]]&lt;br /&gt;
# Нажмите на кнопку '''Проверка связи''', чтобы проверить связь с кассой. Если в поле '''Код ошибки''' отобразился модуль кассы, все хорошо. Если отобразилась ошибка, например «Нет связи», в этом окне в поле '''Подключение''' выберите значение '''Локально''', в поле '''COM порт''' выберите порт, к которому подключена касса. Посмотреть номер порта можно через диспетчер устройств.&lt;br /&gt;
# Нажмите на кнопку '''Таблицы'''. Откроется окно «Таблицы».&lt;br /&gt;
# Найдите в списке таблицу 17 «Региональные настройки» и дважды щелкните по элементу. Откроется окно «Региональные настройки».&lt;br /&gt;
# В строке «Поле 7. Rus не печатать документ» установите значение 2 и нажмите ENTER.&lt;br /&gt;
# Закройте все окна программы «Тест драйвера ФР». &lt;br /&gt;
# Включите чековую службу.&lt;br /&gt;
&lt;br /&gt;
Печать бумажных чеков отключена, при этом чеки отправляются в ОФД. &lt;br /&gt;
&lt;br /&gt;
Чтобы отключить печать чеков на других ФР, заклейте датчик кассовой ленты скотчем, бумажную ленту достаньте.&lt;br /&gt;
&lt;br /&gt;
= Ошибки фискализации =&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/19Mn5syH70XwFdg6Pe2fhYM17SNHGuOJDvQEQXHxSz54/edit#gid=0 Список ошибок протокола Штрих и их решение]&lt;br /&gt;
&lt;br /&gt;
При вызове функций драйвера Штрих-М нельзя указывать круглые скобки, получаем исключение. Неправильно fDriver.FNSendSTLVTagOperation(); правильно fDriver.FNSendSTLVTagOperation;&lt;br /&gt;
&lt;br /&gt;
== Ошибка программирования реквизита 1226 ==&lt;br /&gt;
Ошибка тега 1226 означает, что не был передан ИНН поставщика.&lt;br /&gt;
&lt;br /&gt;
ИНН передается, если:&lt;br /&gt;
# Передан признак агента.&lt;br /&gt;
# ИНН поставщика указан в карточке клиента в Measoft или в контейнере вложения в [[API#Описание элементов для оформления заказа|API-запросе]] (параметр &amp;lt;code&amp;gt;suppINN&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Наименование поставщика указано в карточке клиента в Measoft (поле '''[[Клиенты и партнеры#Реквизиты|Полное наименование]]''') или в контейнере вложения в API-запросе (параметр &amp;lt;code&amp;gt;suppcompany&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Приоритет имеет значение, указанное в контейнере вложения.&lt;br /&gt;
&lt;br /&gt;
== Ошибка программирования реквизита 1171 ==&lt;br /&gt;
Ошибка тега 1171 означает, что не был передан номер телефона поставщика.&lt;br /&gt;
&lt;br /&gt;
Номер телефона поставщика должен быть указан в контейнере вложения [[API#Описание элементов для оформления заказа|API-запросе]] (параметр &amp;lt;code&amp;gt;suppphone&amp;lt;/code&amp;gt;), карточке отдела или карточке клиента MeaSoft, на вкладке '''Реквизиты''' в поле '''Тел'''.&lt;br /&gt;
&lt;br /&gt;
Приоритет имеет значение, указанное в контейнере вложения.&lt;br /&gt;
&lt;br /&gt;
== Ошибка программирования реквизита 1222 ==&lt;br /&gt;
Тег 1222 необходимо передавать совместно с тегом 1223 и только для версий ФФД 1.2 и выше. &lt;br /&gt;
Тег 1222 передается командой FNSendTagOperation, тег 1223 формируется командами FNBeginSTLVTag и FNSendSTLVTagOperation. &lt;br /&gt;
В тег 1223 могут быть вложены теги тег 1073 &amp;quot;телефон платежного агента&amp;quot; и тег 1026 &amp;quot;наименование оператора перевода&amp;quot;. Телефон обязан передаваться в формате +7цццццццццц без скобок, тире и пробелов&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15014</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15014"/>
				<updated>2024-07-17T06:28:53Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBaseUtils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm''' - возвращает код активной формы в программе, где происходит сканирование.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад».&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15013</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=15013"/>
				<updated>2024-07-17T06:27:09Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBaseUtils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt'''(Excel, Sheet, Firm) - Вставляет подписи, печать и логотип фирмы (Firm - код фирмы) на лист (Sheet - номер листа) формы Excel по тэгам на этом листе: &amp;lt;STAMP&amp;gt; - печать, &amp;lt;DIR&amp;gt; - подпись директора, &amp;lt;BUH&amp;gt; - подпись главного бухгалтера, &amp;lt;LOGO&amp;gt; - логотип фирмы. Изображения берутся из справочника фирм.&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
'''CalcStorageCost(ClientCodes, DateFrom, DateTo, NeedReport[, Store])''' – рассчитывает стоимость хранения на складе для выбранных клиентов (ClientCodes - коды клиентов через запятую), в период дат с DateFrom до DateTo, с прикреплением к корреспонденции отчета в зависимости от выставленного параметра NeedReport. Может содержать параметр Store - код филиала, по умолчанию пустой (расчет выполняется для всех филиалов). Возвращает коды созданных корреспонденций через запятую.&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm''' - возвращает код активной формы в программе, где происходит сканирование.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад».&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15001</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=15001"/>
				<updated>2024-06-26T13:15:51Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка для печатной документации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
'''ChangeSchetDetailQuery''' - Вызывается формировании / пересчете счета. Возвращает строку разбитую через CRLF на две. Первая строка заменяет поля в запросе по детализации счета, вторая меняет строку группировки. Обязательные поля: zakazcnt - кол-во заказов, price - стоимость курьерских услуг, cnt - количество, pr - общая стоимость курьерских услуг.&lt;br /&gt;
&lt;br /&gt;
'''OnAutoPrintManSticker''' - вызывается перед автопечатью сопроводительного документа к манифесту при заполнении номера пломбы (такая возможность включается уставкой печатаемой формы в переменной AutoPrintManSticker), содержит %code% - код манифеста, %mnf_date% - дату манифеста, %transporter% - код перевозчика, %store% - код филиала-получателя манифеста. Если доп.возможность возвращает true - автопечать происходит, false - нет.&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''OnAfterPlanning'''- событие после планирования планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) фактически запланированных корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterClientSave''' - событие срабатывает после сохранения изменений в карточке клиента. Код выполняется в транзакции. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит сохранённую информацию о карточке клиента, а так же все её пользовательские поля с предыдущими значениями, которые можно получить через функцию _Former('VarCode', значение, 'VarValue')&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterCreateSpecialSMA''' - событие срабатывает после создания нового АПД для клиента. Код выполняется вне транзакции, потому есть возможность показывать диалоговые окна. В качестве единственного параметра %code% передается код созданного АПД.&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %DatePut% - дата доставки (добавлено для альтернативных видов подсчета, может быть null); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник (острым концом вниз), 2 - треугольник, 3 - увеличенный перевернутый треугольник (острым концом вниз), чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный перевернутый треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Речь диктора ==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnVoice''' - выполняется после изменения статуса выдачи. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код выдачи, &amp;lt;nowiki&amp;gt;%State%&amp;lt;/nowiki&amp;gt; содержит код устанавливаемого статуса, &amp;lt;nowiki&amp;gt;%OldState%&amp;lt;/nowiki&amp;gt; - код старого статуса (0 если не было). Позволяет отключать стандартный звук ОК, если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
'''OnDashboardManifestVoice''' - выполняется после сканирования адреса в интерфейсе приёма манифестов. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код корреспонденции. Позволяет отключать стандартную диктовку программой (код курьера, вес и т.д.), если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnFilterAddressRecalc''' - Позволяет отфильтровать коды адресов, для которых можно пересчитать стоимость. Событие происходит перед расчетом стоимости доставки из интерфейса программы для: актов, счетов, заказов, и т.д. Не работает для пересчета запускаемого из самой карточки корреспонденции. &lt;br /&gt;
%codes% - коды адресов для пересчета стоимости доставки. Формат: (1,2,3,...). %RecalcUserCode% - код пользователя запустившего пересчет (актуально для отложенных пересчетов). &lt;br /&gt;
Функция должна вернуть коды адресов, допущенных к пересчету в формате: (1,2,3,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
 rem('2023-12-04 Sergey.  Отключаем перерасчет стоимости доставки у корреспонденций в статусе - проверено,&lt;br /&gt;
  если у пользователя нет права Счета-изменять. Тикет 79954.&lt;br /&gt;
  Блокировка работает в связке с тикетом 77995.');&lt;br /&gt;
 new('TSelfADO', 'DB');&lt;br /&gt;
 DB.OPEN('SELECT a.code FROM courier.address a&lt;br /&gt;
  LEFT JOIN courier.users u ON u.code=%RecalcUserCode%&lt;br /&gt;
  LEFT JOIN courier.`userrules` ur ON ur.`GroupId`=u.grup AND ur.`RuleType`=1 AND  ur.newruleid =78  -- RSA&lt;br /&gt;
  WHERE ((a.state1&amp;lt;&amp;gt;8) OR (a.state1=8 AND ur.state=&amp;quot;T&amp;quot;)) AND a.code in %code%');&lt;br /&gt;
 DB.ParseForIn('CODE')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnRecalcBoldCntInFrame''' - срабатывает в карточке тарифа при перемещении курсора зоны. Возвращает целочисленное значение, равное количеству доставленных корреспонденций у клиента за предыдущий месяц. Срабатывает только при открытии карточки тарифа из карточки клиента. %ClientCode% - код клиента. %ZoneCode% - код зоны.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=14982</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=14982"/>
				<updated>2024-04-19T07:08:03Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBaseUtils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr [,start]) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Параметр start - это позиция старта поиска, не обязательный параметр, по умолчанию равен 1. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
SetParam(s, p, i) – заменяет на значение p i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
FirstDayOfMonth(dt) – Возвращает первый день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( FirstDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
LastDayOfMonth(dt) – Возвращает последний день месяца в формате DD.MM.YYYY для даты dt в формате DD.MM.YYYY. Пример вызова: Error( LastDayOfMonth( CurrDate() ) );&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding [, append])- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Если append = true, то производится дописывание данных в файл, а не перезаписывание (не обязательный, по умолчанию выключен).&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - Дополнительные заголовки HTTP запроса, передается в виде списка параметров через запятую и всегда образуют пару: 1 параметр - название заголовка, 2 параметр - значение. Если значение содержит запятую то его нужно экранировать в двойные кавычки. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в миллисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
LastHttpError - Выводит последний запрос выполненный с ошибкой в функции HttpPost. Содержит подробную информацию по запросу и ответу.&lt;br /&gt;
&lt;br /&gt;
LastHttpResponse - Выводит последний запрос и ответ от сервера после выполнения Http-запроса в функции HttpPost.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Если TranslateHeader истинно, то заголовки таблицы будут автоматически переведены.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1][, TranslateHeader=False]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|-&lt;br /&gt;
|OnGetText&lt;br /&gt;
|Функция подменяет текстовый вывод значения поля при выгрузке в эксель. Первый параметр это имя поля, которое надо подменить. Второй параметр это то что необходимо вывести. Работает только с текстовыми полями. &lt;br /&gt;
'''''Пример использования'''''  &lt;br /&gt;
  DB.OnGetText('Зона', IF((DB.FieldByName('-Lat') ! 0) * (DB.FieldByName('-Lon') ! 0),&lt;br /&gt;
       	GetPolygonByLatLon(DB.FieldByName('-Lat'), DB.FieldByName('-Lon'), 'TYPE = 1 AND IFNULL(zone, 0) &amp;gt; 0 AND PRICE = ' + DB.FieldByName('-price'), 'zone')&lt;br /&gt;
  ,&lt;br /&gt;
        ''&lt;br /&gt;
  ));&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Для кода DataMatrix можно установить режим для печати скрытых символов с кодами 29(GS) и 232(FCN1), которые требуются для формирования Честного Знака. Для этого необходимо в начале строки указать символ &amp;quot;[&amp;quot; и все разделители 01, 21, 91, 92 так же экранировать этими скобками. Должно получиться [01]02900002317701[21]k3LInNbH_oG0Q[91]EE06[92]YXiyKfiHjE4YE8b+YVMC1O5r8VtpplA3AwcCqrcG9Dk= . При формировании кода, включится режим формирования штрих-кода DataMatrix GS1, в начале будет добавлен символ с кодом 232 (FCN1), а потом будут добавлены разделители с кодом 29 (GS)&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator][,Correction])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1.&lt;br /&gt;
Поле Correction позволяет указать данные для корректировочного чека, используется в системе Штрих-М. По умолчанию пустая строка. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Работа функции может быть изменена системной доп. возможностью OnCreateAddressForActDelivery.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''GetRouteCode(AddressText, TownCode, LatLon[, Lon])''' - для адреса AddressText в городе с кодом TownCode (из таблицы Town) по географическим координатам lat, lon возвращает код роута (записи, хранящей координаты адреса в городе). Если роут не найден (для адреса в городе не найдено записи с указанными координатами) - создает новый роут и возвращает его код, если роут найден (был создан ранее) - обновляет у роута координаты. Если параметр Lon задан, то параметр LatLon должен содержать одну координату, иначе LatLon должен содержать строку вида 'lat, lon'.&lt;br /&gt;
В случае ошибки возвращает Null.&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode(address, townto, '55.114034, 36.592397'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Троицк, Полковника милиции Курочкина ул., 11', 1, '37.467446, 55.740537'));&amp;lt;br&amp;gt;&lt;br /&gt;
Set($res, GetRouteCode('Обнинск, Маркса пр., 20', TownByName('Обнинск'), 55.114034, 36.592397));&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''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).&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
'''Функции общего назначения''':&lt;br /&gt;
&lt;br /&gt;
'''ExecSimpleScript(Caption, Text)''' - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
'''FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns,ShowAll])''' - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено. ShowAll - показать все дополнительные услуги, по умолчанию false и показывает только услуги с начислениями. Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
'''PrintSticker(Codes, [ToBoxes=False])'''&lt;br /&gt;
&lt;br /&gt;
'''GetItemByName(Name)'''&lt;br /&gt;
&lt;br /&gt;
'''GetA4Printer''' - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
'''GetStickerPrinter''' - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
'''GetDuplexPrinter''' - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращает пустую строку&lt;br /&gt;
&lt;br /&gt;
'''PrintAttachPDFPage(Code, FileName, Page, Printer)''' - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
'''AttachPDFToText(Code, [TextFileName])''' - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''GetActiveForm''' - возвращает код активной формы в программе, где происходит сканирование.&lt;br /&gt;
 '''Список интерфейсов''': &lt;br /&gt;
 0 - неопределенный; &lt;br /&gt;
 1 - прием корреспонденции на склад; &lt;br /&gt;
 2 - АПД; &lt;br /&gt;
 3 - комплектация адресов (ShelfingForm); &lt;br /&gt;
 4 - доска приема; &lt;br /&gt;
 9 - вкладка «Манифесты»; &lt;br /&gt;
 10 - Инвентаризация корреспонденции; &lt;br /&gt;
 11 - АПК; &lt;br /&gt;
 12 - вкладка «Адреса»; &lt;br /&gt;
 13 - вкладка «Выдача»; &lt;br /&gt;
 14 - вкладка «Склад».&lt;br /&gt;
&lt;br /&gt;
'''RuleName(alias)''' - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
'''CheckRule(alias)''' - функция проверки разрешения у текущего пользователя системы, alias - псевдоним права. Возвращает 1, если право есть и 0, если права нет. &lt;br /&gt;
 Пример: if(CheckRule('RSE'), ShowMessage('У пользователя есть право изменять счета'), ShowMessage('У пользователя нет права изменять счета'));&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
ClientTown - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
== Объект TMessage ==&lt;br /&gt;
Объект используется для скриптовой обработки письма в [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, отправитель письма, тему письма, дата получения и список прикрепленных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.Text''' - возвращает очищенный от HTML-тегов текст письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.HTMLText''' - возвращает оригинальный текст письма со всеми HTML-тегами.&lt;br /&gt;
&lt;br /&gt;
'''Message.Sender''' - возвращает email-адрес отправителя письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.AttachmentsCount''' - возвращает количество вложенных файлов.&lt;br /&gt;
&lt;br /&gt;
'''Message.DateTime''' - возвращает дату и время получения письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.Subject''' - возвращает тему письма.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentDataString(Number)''' - возвращает вложенный файл под номером Number в виде строки.&lt;br /&gt;
&lt;br /&gt;
'''Message.GetAttachmentName(Number)''' - возвращает имя вложенного файла под номером Number.&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14977</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14977"/>
				<updated>2024-04-15T14:21:03Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка документов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''OnAfterPlanning'''- событие после планирования планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) фактически запланированных корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterClientSave''' - событие срабатывает после сохранения изменений в карточке клиента. Код выполняется в транзакции. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит сохранённую информацию о карточке клиента, а так же все её пользовательские поля с предыдущими значениями, которые можно получить через функцию _Former('VarCode', значение, 'VarValue')&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterCreateSpecialSMA''' - событие срабатывает после создания нового АПД для клиента. Код выполняется вне транзакции, потому есть возможность показывать диалоговые окна. В качестве единственного параметра %code% передается код созданного АПД.&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %DatePut% - дата доставки (добавлено для альтернативных видов подсчета, может быть null); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник (острым концом вниз), 2 - треугольник, 3 - увеличенный перевернутый треугольник (острым концом вниз), чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный перевернутый треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Речь диктора ==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnVoice''' - выполняется после изменения статуса выдачи. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код выдачи, &amp;lt;nowiki&amp;gt;%State%&amp;lt;/nowiki&amp;gt; содержит код устанавливаемого статуса, &amp;lt;nowiki&amp;gt;%OldState%&amp;lt;/nowiki&amp;gt; - код старого статуса (0 если не было). Позволяет отключать стандартный звук ОК, если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
'''OnDashboardManifestVoice''' - выполняется после сканирования адреса в интерфейсе приёма манифестов. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код корреспонденции. Позволяет отключать стандартную диктовку программой (код курьера, вес и т.д.), если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnFilterAddressRecalc''' - Позволяет отфильтровать коды адресов, для которых можно пересчитать стоимость. Событие происходит перед расчетом стоимости доставки из интерфейса программы для: актов, счетов, заказов, и т.д. Не работает для пересчета запускаемого из самой карточки корреспонденции. &lt;br /&gt;
%codes% - коды адресов для пересчета стоимости доставки. Формат: (1,2,3,...). %RecalcUserCode% - код пользователя запустившего пересчет (актуально для отложенных пересчетов). &lt;br /&gt;
Функция должна вернуть коды адресов, допущенных к пересчету в формате: (1,2,3,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
 rem('2023-12-04 Sergey.  Отключаем перерасчет стоимости доставки у корреспонденций в статусе - проверено,&lt;br /&gt;
  если у пользователя нет права Счета-изменять. Тикет 79954.&lt;br /&gt;
  Блокировка работает в связке с тикетом 77995.');&lt;br /&gt;
 new('TSelfADO', 'DB');&lt;br /&gt;
 DB.OPEN('SELECT a.code FROM courier.address a&lt;br /&gt;
  LEFT JOIN courier.users u ON u.code=%RecalcUserCode%&lt;br /&gt;
  LEFT JOIN courier.`userrules` ur ON ur.`GroupId`=u.grup AND ur.`RuleType`=1 AND  ur.newruleid =78  -- RSA&lt;br /&gt;
  WHERE ((a.state1&amp;lt;&amp;gt;8) OR (a.state1=8 AND ur.state=&amp;quot;T&amp;quot;)) AND a.code in %code%');&lt;br /&gt;
 DB.ParseForIn('CODE')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnRecalcBoldCntInFrame''' - срабатывает в карточке тарифа при перемещении курсора зоны. Возвращает целочисленное значение, равное количеству доставленных корреспонденций у клиента за предыдущий месяц. Срабатывает только при открытии карточки тарифа из карточки клиента. %ClientCode% - код клиента. %ZoneCode% - код зоны.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14974</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14974"/>
				<updated>2024-04-15T05:28:36Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка документов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''OnAfterPlanning'''- событие после планирования планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) фактически запланированных корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterClientSave''' - событие срабатывает после сохранения изменений в карточке клиента. Код выполняется в транзакции. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит сохранённую информацию о карточке клиента, а так же все её пользовательские поля с предыдущими значениями, которые можно получить через функцию _Former('VarCode', значение, 'VarValue')&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterCreateSpecialSMA''' - событие срабатывает после создания нового АПД для клиента. Код выполняется вне транзакции, потому есть возможность показывать диалоговые окна. В качестве единственного параметра %code% передается код созданного АПД.&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %DatePut% - дата доставки (добавлено для альтернативных видов подсчета); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник (острым концом вниз), 2 - треугольник, 3 - увеличенный перевернутый треугольник (острым концом вниз), чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный перевернутый треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Речь диктора ==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnVoice''' - выполняется после изменения статуса выдачи. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код выдачи, &amp;lt;nowiki&amp;gt;%State%&amp;lt;/nowiki&amp;gt; содержит код устанавливаемого статуса, &amp;lt;nowiki&amp;gt;%OldState%&amp;lt;/nowiki&amp;gt; - код старого статуса (0 если не было). Позволяет отключать стандартный звук ОК, если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
'''OnDashboardManifestVoice''' - выполняется после сканирования адреса в интерфейсе приёма манифестов. Параметр &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; содержит код корреспонденции. Позволяет отключать стандартную диктовку программой (код курьера, вес и т.д.), если возвращает не 0.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnFilterAddressRecalc''' - Позволяет отфильтровать коды адресов, для которых можно пересчитать стоимость. Событие происходит перед расчетом стоимости доставки из интерфейса программы для: актов, счетов, заказов, и т.д. Не работает для пересчета запускаемого из самой карточки корреспонденции. &lt;br /&gt;
%codes% - коды адресов для пересчета стоимости доставки. Формат: (1,2,3,...). %RecalcUserCode% - код пользователя запустившего пересчет (актуально для отложенных пересчетов). &lt;br /&gt;
Функция должна вернуть коды адресов, допущенных к пересчету в формате: (1,2,3,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
 rem('2023-12-04 Sergey.  Отключаем перерасчет стоимости доставки у корреспонденций в статусе - проверено,&lt;br /&gt;
  если у пользователя нет права Счета-изменять. Тикет 79954.&lt;br /&gt;
  Блокировка работает в связке с тикетом 77995.');&lt;br /&gt;
 new('TSelfADO', 'DB');&lt;br /&gt;
 DB.OPEN('SELECT a.code FROM courier.address a&lt;br /&gt;
  LEFT JOIN courier.users u ON u.code=%RecalcUserCode%&lt;br /&gt;
  LEFT JOIN courier.`userrules` ur ON ur.`GroupId`=u.grup AND ur.`RuleType`=1 AND  ur.newruleid =78  -- RSA&lt;br /&gt;
  WHERE ((a.state1&amp;lt;&amp;gt;8) OR (a.state1=8 AND ur.state=&amp;quot;T&amp;quot;)) AND a.code in %code%');&lt;br /&gt;
 DB.ParseForIn('CODE')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnRecalcBoldCntInFrame''' - срабатывает в карточке тарифа при перемещении курсора зоны. Возвращает целочисленное значение, равное количеству доставленных корреспонденций у клиента за предыдущий месяц. Срабатывает только при открытии карточки тарифа из карточки клиента. %ClientCode% - код клиента. %ZoneCode% - код зоны.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%B8%D0%B0%D0%B4%D0%BE%D0%BA&amp;diff=14923</id>
		<title>Диадок</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%B8%D0%B0%D0%B4%D0%BE%D0%BA&amp;diff=14923"/>
				<updated>2024-02-09T13:51:57Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Начальная настройка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Начальная настройка =&lt;br /&gt;
&lt;br /&gt;
# Обратитесь в [https://kontur.ru/ СКБ Контур] для выпуска [https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C электронной цифровой подписи (ЭЦП)] для использования с ЭДО Диадок. Получите Рутокен с ЭЦП. При его подключении автоматически устанавливается набор ПО для его использования.&lt;br /&gt;
# Вам становится доступен вход в систему по адресу https://diadoc.kontur.ru, без пароля, просто по ЭЦП, подключенной к компьютеру. Вы уже можете принимать документы от контрагентов.&lt;br /&gt;
# Обратитесь в СКБ Контур для выставления счета на пакет отправляемых документов. Пакет можно выбрать [https://www.diadoc.ru/price здесь]. Для работы совместно с MeaSoft нужно включить возможность использования API: сотрудники Контура выставят за это счет. После '''оплаты счета''' за API они присылают '''API-ключ''' вида «API-1b1111ae-1111-1111-b111-111111cc1fd1». API-ключ приобретается отдельно на каждое ваше юридическое лицо, поэтому его нужно вводить в справочник '''[[Фирмы]]'''.&lt;br /&gt;
# В системе Диадок откройте '''Настройки''' &amp;gt; '''Реквизиты организации'''. Перейдите на вкладку '''Сотрудники''' и выберите сотрудника, который будет отвечать за подписание документов. В карточке сотрудника перейдите на вкладку '''Данные по сертификатам''' и в группе полей '''Область полномочий''' установите полномочия для входящих и исходящих документов. Нажмите на кнопку '''Сохранить'''.&lt;br /&gt;
# Заполните данные подключения в системе:&lt;br /&gt;
## В переменной &amp;lt;mparam code=&amp;quot;EDocProvider&amp;quot;/&amp;gt; выберите '''Диадок'''.&lt;br /&gt;
## Введите API-ключ в '''Справочники''' &amp;gt; '''Фирмы''' &amp;gt; '''Карточка фирмы''' &amp;gt; '''Ключ ЭДО'''.&lt;br /&gt;
## Если в вашем токене несколько сертификатов, в поле &amp;lt;mparam code=&amp;quot;EDocLogin&amp;quot;/&amp;gt;укажите без пробелов значение отпечатка сертификата, который нужно использовать. Чтобы просмотреть отпечаток, в меню '''Пуск''' выберите '''Программы''' &amp;gt; '''Крипто-ПРО''' &amp;gt; '''Сертификаты пользователя''' &amp;gt; '''Личное''' &amp;gt; '''Сертификаты'''. Справа выберите нужный сертификат, откройте. Перейдите на вкладку '''Состав''', прокрутите список значений вниз, в самом низу выберите '''Отпечаток'''.&lt;br /&gt;
## В поле &amp;lt;mparam code=&amp;quot;EDocPass&amp;quot;/&amp;gt;введите пин-код сертификата. Если вы его не меняли, можно пропустить: по умолчанию пин-код рутокена «12345678», и программа сама будет его использовать, если вы ничего не указали. Если он окажется неправильным, Крипто-ПРО спросит у вас верный пин-код при передаче данных. Обратите внимание, что количество попыток ввода пин-кода ограничено.&lt;br /&gt;
## На компьютере могут быть установлены сертификаты, выданные физ.лицам, имеющим доступ к организации. В этом случае у пользователей, сертификаты которых предполагается использовать, в карточках сотрудников нужно прописать ИНН, соответствующие выданным сертификатам. В этом случае отпечаток сертификата в поле &amp;lt;mparam code=&amp;quot;EDocLogin&amp;quot;/&amp;gt; указывать не нужно, а какой сертификат использовать, будет определяться по пользователю программы.&lt;br /&gt;
# После ввода данных подключения выйдите из системы и запустите программу от имени администратора: в контекстном меню ярлыка MeaSoft выберите пункт '''Запуск от имени администратора'''. Чтобы запустить обмен данными, выберите '''Связь''' &amp;gt; '''Обмен с ЭДО'''. При первом использовании программа установит на компьютер специальный COM-объект Диадока. Именно для этого нужны права. В дальнейшем она будет использовать уже установленный компонент, и наличия прав не требуется.&lt;br /&gt;
&lt;br /&gt;
= Обмен данными с ЭДО =&lt;br /&gt;
# Выберите в главном меню MeaSoft '''Связь''' &amp;gt; '''Обмен с ЭДО'''. Откроется окно с выпадающим списком фирм, у которых заполнено поле '''Ключ ЭДО'''.&lt;br /&gt;
# Выберите фирму и нажмите на кнопку '''Обмен'''.&lt;br /&gt;
&lt;br /&gt;
В результате произойдет обмен данными между MeaSoft и ЭДО:&lt;br /&gt;
* синхронизация справочников контрагентов. MeaSoft получит список контрагентов, уже являющихся вашими партнерами в ЭДО, проставит им соответствующие признаки (на вкладке '''Клиенты''' отображается в столбце '''Статус ЭДО'''. Это поле нельзя менять, оно устанавливается автоматически), проверит, кто прислал вам приглашения к партнерству и примет их, разошлет приглашения всем вашим работающим контрагентам, проверит, кто принял приглашение, а кто отказался;&lt;br /&gt;
* проверит статусы ранее отправленных документов. При подписании документа вашим партнером сообщение получит статус '''Доставлено'''. Если оно отправлено из счетов или АПД, то соответствующий документ получит признак получения подписанного акта.&lt;br /&gt;
&lt;br /&gt;
Эту операцию нужно периодически повторять для получения актуальных данных.&lt;br /&gt;
&lt;br /&gt;
= Отправка документов =&lt;br /&gt;
К отправке сейчас доступны счета, АПД и АПК. Отправка работает крайне похоже на e-mail. Документы формируются точно так же, но отправляются не почтой, а в ЭДО, уже подписанными вашей ЭЦП. В системе ЭДО «адресами» отправителя и получателя являются ИНН (по возможности еще КПП, но это не обязательно) компании, поэтому, чтобы все работало, ИНН должен быть заполнен. Так же ЭДО примет документы только в адрес компании, с которой у вас отмечены партнерские отношения, то есть кто-то из вас отправил приглашение, а другой его принял. Поэтому, для удобства контроля — кому можно таким образом отправлять, а кому — нет, в списках документов добавлено поле «Есть ЭДО». Там галка ставится на основании статуса ЭДО клиента. Можете отсортировать по этому полю, выдели все, где есть галки, и разослать всем документы по ЭДО.&lt;br /&gt;
&lt;br /&gt;
= Ошибка отправки документов =&lt;br /&gt;
 &lt;br /&gt;
 Не все письма были отправлены.&lt;br /&gt;
 Описание ошибок:&lt;br /&gt;
 Счёт № N от [дата], [SchetSend][TMessageSupport.Send] Диадок: ##100[Ошибка сервера Диадок]code:400, HTTP error: Invalid data UserContractData:&lt;br /&gt;
 /UniversalTransferDocument/Signers/SignerReference: @Inn is required&lt;br /&gt;
 /UniversalTransferDocument/Signers/SignerReference: SignerDetails not found for boxId, documentTitleType=0&lt;br /&gt;
&lt;br /&gt;
Ошибка возникает, если не настроен подписант УПД в личном кабинете Диадок.&lt;br /&gt;
&lt;br /&gt;
Чтобы исправить ошибку, в системе Диадок откройте '''Настройки''' &amp;gt; '''Реквизиты организации'''. Перейдите на вкладку '''Сотрудники''' и выберите сотрудника, который будет отвечать за подписание документов. В карточке сотрудника перейдите на вкладку '''Данные по сертификатам''' и в группе полей '''Область полномочий''' установите полномочия для входящих и исходящих документов. Нажмите на кнопку '''Сохранить'''.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%B8%D0%B0%D0%B4%D0%BE%D0%BA&amp;diff=14922</id>
		<title>Диадок</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%B8%D0%B0%D0%B4%D0%BE%D0%BA&amp;diff=14922"/>
				<updated>2024-02-09T13:51:39Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Начальная настройка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Начальная настройка =&lt;br /&gt;
&lt;br /&gt;
# Обратитесь в [https://kontur.ru/ СКБ Контур] для выпуска [https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C электронной цифровой подписи (ЭЦП)] для использования с ЭДО Диадок. Получите Рутокен с ЭЦП. При его подключении автоматически устанавливается набор ПО для его использования.&lt;br /&gt;
# Вам становится доступен вход в систему по адресу https://diadoc.kontur.ru, без пароля, просто по ЭЦП, подключенной к компьютеру. Вы уже можете принимать документы от контрагентов.&lt;br /&gt;
# Обратитесь в СКБ Контур для выставления счета на пакет отправляемых документов. Пакет можно выбрать [https://www.diadoc.ru/price здесь]. Для работы совместно с MeaSoft нужно включить возможность использования API: сотрудники Контура выставят за это счет. После '''оплаты счета''' за API они присылают '''API-ключ''' вида «API-1b1111ae-1111-1111-b111-111111cc1fd1». API-ключ приобретается отдельно на каждое ваше юридическое лицо, поэтому его нужно вводить в справочник '''[[Фирмы]]'''.&lt;br /&gt;
# В системе Диадок откройте '''Настройки''' &amp;gt; '''Реквизиты организации'''. Перейдите на вкладку '''Сотрудники''' и выберите сотрудника, который будет отвечать за подписание документов. В карточке сотрудника перейдите на вкладку '''Данные по сертификатам''' и в группе полей '''Область полномочий''' установите полномочия для входящих и исходящих документов. Нажмите на кнопку '''Сохранить'''.&lt;br /&gt;
# Заполните данные подключения в системе:&lt;br /&gt;
## В переменной &amp;lt;mparam code=&amp;quot;EDocProvider&amp;quot;/&amp;gt; выберите '''Диадок'''.&lt;br /&gt;
## Введите API-ключ в '''Справочники''' &amp;gt; '''Фирмы''' &amp;gt; '''Карточка фирмы''' &amp;gt; '''Ключ ЭДО'''.&lt;br /&gt;
## Если в вашем токене несколько сертификатов, в поле &amp;lt;mparam code=&amp;quot;EDocLogin&amp;quot;/&amp;gt;укажите без пробелов значение отпечатка сертификата, который нужно использовать. Чтобы просмотреть отпечаток, в меню '''Пуск''' выберите '''Программы''' &amp;gt; '''Крипто-ПРО''' &amp;gt; '''Сертификаты пользователя''' &amp;gt; '''Личное''' &amp;gt; '''Сертификаты'''. Справа выберите нужный сертификат, откройте. Перейдите на вкладку '''Состав''', прокрутите список значений вниз, в самом низу выберите '''Отпечаток'''.&lt;br /&gt;
## В поле &amp;lt;mparam code=&amp;quot;EDocPass&amp;quot;/&amp;gt;введите пин-код сертификата. Если вы его не меняли, можно пропустить: по умолчанию пин-код рутокена «12345678», и программа сама будет его использовать, если вы ничего не указали. Если он окажется неправильным, Крипто-ПРО спросит у вас верный пин-код при передаче данных. Обратите внимание, что количество попыток ввода пин-кода ограничено.&lt;br /&gt;
## На компьютере могут быть установлены сертификаты, выданные физюлицам, имеющим доступ к организации. В этом случае у пользователей, сертификаты которых предполагается использовать, в карточках сотрудников нужно прописать ИНН, соответствующие выданным сертификатам. В этом случае отпечаток сертификата в поле &amp;lt;mparam code=&amp;quot;EDocLogin&amp;quot;/&amp;gt; указывать не нужно, а какой сертификат использовать, будет определяться по пользователю программы.&lt;br /&gt;
# После ввода данных подключения выйдите из системы и запустите программу от имени администратора: в контекстном меню ярлыка MeaSoft выберите пункт '''Запуск от имени администратора'''. Чтобы запустить обмен данными, выберите '''Связь''' &amp;gt; '''Обмен с ЭДО'''. При первом использовании программа установит на компьютер специальный COM-объект Диадока. Именно для этого нужны права. В дальнейшем она будет использовать уже установленный компонент, и наличия прав не требуется.&lt;br /&gt;
&lt;br /&gt;
= Обмен данными с ЭДО =&lt;br /&gt;
# Выберите в главном меню MeaSoft '''Связь''' &amp;gt; '''Обмен с ЭДО'''. Откроется окно с выпадающим списком фирм, у которых заполнено поле '''Ключ ЭДО'''.&lt;br /&gt;
# Выберите фирму и нажмите на кнопку '''Обмен'''.&lt;br /&gt;
&lt;br /&gt;
В результате произойдет обмен данными между MeaSoft и ЭДО:&lt;br /&gt;
* синхронизация справочников контрагентов. MeaSoft получит список контрагентов, уже являющихся вашими партнерами в ЭДО, проставит им соответствующие признаки (на вкладке '''Клиенты''' отображается в столбце '''Статус ЭДО'''. Это поле нельзя менять, оно устанавливается автоматически), проверит, кто прислал вам приглашения к партнерству и примет их, разошлет приглашения всем вашим работающим контрагентам, проверит, кто принял приглашение, а кто отказался;&lt;br /&gt;
* проверит статусы ранее отправленных документов. При подписании документа вашим партнером сообщение получит статус '''Доставлено'''. Если оно отправлено из счетов или АПД, то соответствующий документ получит признак получения подписанного акта.&lt;br /&gt;
&lt;br /&gt;
Эту операцию нужно периодически повторять для получения актуальных данных.&lt;br /&gt;
&lt;br /&gt;
= Отправка документов =&lt;br /&gt;
К отправке сейчас доступны счета, АПД и АПК. Отправка работает крайне похоже на e-mail. Документы формируются точно так же, но отправляются не почтой, а в ЭДО, уже подписанными вашей ЭЦП. В системе ЭДО «адресами» отправителя и получателя являются ИНН (по возможности еще КПП, но это не обязательно) компании, поэтому, чтобы все работало, ИНН должен быть заполнен. Так же ЭДО примет документы только в адрес компании, с которой у вас отмечены партнерские отношения, то есть кто-то из вас отправил приглашение, а другой его принял. Поэтому, для удобства контроля — кому можно таким образом отправлять, а кому — нет, в списках документов добавлено поле «Есть ЭДО». Там галка ставится на основании статуса ЭДО клиента. Можете отсортировать по этому полю, выдели все, где есть галки, и разослать всем документы по ЭДО.&lt;br /&gt;
&lt;br /&gt;
= Ошибка отправки документов =&lt;br /&gt;
 &lt;br /&gt;
 Не все письма были отправлены.&lt;br /&gt;
 Описание ошибок:&lt;br /&gt;
 Счёт № N от [дата], [SchetSend][TMessageSupport.Send] Диадок: ##100[Ошибка сервера Диадок]code:400, HTTP error: Invalid data UserContractData:&lt;br /&gt;
 /UniversalTransferDocument/Signers/SignerReference: @Inn is required&lt;br /&gt;
 /UniversalTransferDocument/Signers/SignerReference: SignerDetails not found for boxId, documentTitleType=0&lt;br /&gt;
&lt;br /&gt;
Ошибка возникает, если не настроен подписант УПД в личном кабинете Диадок.&lt;br /&gt;
&lt;br /&gt;
Чтобы исправить ошибку, в системе Диадок откройте '''Настройки''' &amp;gt; '''Реквизиты организации'''. Перейдите на вкладку '''Сотрудники''' и выберите сотрудника, который будет отвечать за подписание документов. В карточке сотрудника перейдите на вкладку '''Данные по сертификатам''' и в группе полей '''Область полномочий''' установите полномочия для входящих и исходящих документов. Нажмите на кнопку '''Сохранить'''.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14858</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14858"/>
				<updated>2023-10-06T04:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка документов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
'''CustomGivnAct''' - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintNakls''' - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintNakls''' - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintOneNakl''' - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPrintOneNakl''' - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePrintSticker''' - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterItemPrint''' - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
'''PrintCustomSticker''' - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
'''PrintItemSticker''' - Вызывается перед печатью наклейки из карточки номенклатуры, для возможности распечатать уникальную наклейку для номенклатуры по заложенным в допвозможности условиям. Содержит %clientbar% - ШК наклейки. Если наклейка распечатана из допвозможности возвращает true, в противном случае false и будет распечатана стандартная наклейка, заложенная в системе&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
'''OnGivnStateChanged''' - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
'''OnAfterGivnStateChanged''' - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeAddressSave''' - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). . Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBaseSave''' - Вызывается перед сохранением изменений в карточке срочного заказа. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог таблицы base). Теги %date_put%, %time_put%, %message% - содержат дату вручения, время вручения и инфо о доставке соответственно. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
'''OnAfterAddressSave''' - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
'''AfterAddressAcceptance''' - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
'''BeforeAddressAcceptance''' - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''OnAddToShippingPlace''' - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace''' - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanToManifest''' - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeScanToManifest''' - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforePlanning''' - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
'''DAILY''' - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
'''OnGivnKurierStateChanged''' - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeGivnStatus''' - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeClientSave''' - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
'''OnBeforeBasePutCheck''' - событие срабатывает при проставлении галки на вкладке срочных заказов. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В параметре &amp;lt;nowiki&amp;gt;%code%&amp;lt;/nowiki&amp;gt; указан код срочного заказа, а в параметре &amp;lt;nowiki&amp;gt;%BasePutCheckType%&amp;lt;/nowiki&amp;gt; указан тип проставления: 0 - если галка, 1 - если плюс. Если результат функции -1, то отмена выполняемой функции (abort).&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
'''CustomAddressPrnForm2''' - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''GetTypeShippingPlace'''  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
'''OnShelvingBarScan''' - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
'''AdditionalStringForSMA''' - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
'''CustomBillDetaling''' - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
'''OnSchetChanged'''  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
'''ExceptionsForAPK'''  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnOrderCountCalc''' -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
'''OnGetZakazCount''' - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
'''OnSMABarcodeScan''' - событие вызывается при сканировании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
'''OnPaintSMAColumns''' - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется)&lt;br /&gt;
&lt;br /&gt;
'''CustomZPDetail''' - кастомное дополнение к детализации зарплаты (Специальная надбавка). Вызывается из скриптовой детализации зарплаты. Предназначено для расчета и вывода в детализацию значения какой-либо специальной надбавки, определенной пользователем. Входящие параметры: %code% - код платежа в таблице kurier_pays, %kurier% - код курьера. Возвращает строку, где через запятую указаны Название надбавки и ее значение. Если эта строка не содержит двух параметров - ничего не выводится.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник, 2 - треугольник, 3 - увеличенный треугольник, чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
'''OnEveryStartApp''' - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
'''OnEveryCloseApp''' - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
'''OnBarScan''' - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
'''OnMapBeforeGeolocation''' - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OnSyncInsert''' - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
'''OnSyncUpdate''' - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
'''OnCalcSalary''' - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
'''OnTicketSetCusr''' - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;br /&gt;
&lt;br /&gt;
'''OnCreateAddressForActDelivery''' - Пользовательский скрипт вызывающийся в момент формирования корреспонденции на доставку АПД/АПК. Позволяет существенно доработать формируемую корреспонденцию. %code% - код акта sendmoneyact.code, %Client%  - код клиента; %delivery% - флаг определяющий корр. на доставку акта (1, значение по умолчанию) или забор акта. fieldlist - объект с полями адреса (повторяет структуру таблицы address), dataset - объект дополнительными полями функции. Объект fieldlist является классом TMyFieldList и позволяет менять значения полей.  Также измененный адрес можно сохранить прямо в событии, или он будет сохранен автоматически после выполнения скрипта. Для сохранения адреса используйте метод _save. &lt;br /&gt;
&lt;br /&gt;
 Пример, для клиента с кодом 3360, в корреспонденцию на доставку АПК, добавляем список корреспонденций попавших в него во вложения.&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 if((client=3360)*(ActType=2),&lt;br /&gt;
  rem('Ticket 70827, 2022-09-07 Anatoly and Sergey');&lt;br /&gt;
  set($addresscode, fieldlist._save);&lt;br /&gt;
  query('insert boxes (address, pos, name) &lt;br /&gt;
   select '+$addresscode+' AS address,  @q := @q + 1 AS pos,  &lt;br /&gt;
        CASE WHEN a.client_id &amp;lt;&amp;gt; '' THEN a.client_id WHEN a.strbarcode&amp;lt;&amp;gt;'' THEN a.strbarcode ELSE CONCAT(a.zakaz,&amp;quot;-&amp;quot;, a.number) END AS `name`&lt;br /&gt;
   FROM addressfld af&lt;br /&gt;
   JOIN address a ON a.code=af.`address` ,(SELECT @q := 0 ) p&lt;br /&gt;
   WHERE &lt;br /&gt;
    af.`AddrTransferCode` = %code% AND af.`ReceivedInTransfer` &amp;gt; 0');&lt;br /&gt;
 ,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OnAfterPreassemblyScan''' - событие происходит после сканирования складского товара в корреспонденцию на вкладке «Склад». %code% - код корреспонденции, %ItemCode% - код товара, %ItemCnt% - количество отсканированного товара.&lt;br /&gt;
&lt;br /&gt;
'''OnGeocodeScript''' - скрипт подключения к геокодеру клиента. Используется при включенной переменной &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Подключения&amp;quot; -&amp;gt; &amp;quot;Карты&amp;quot; -&amp;gt; &amp;quot;Геокодирование&amp;quot; -&amp;gt; &amp;quot;Протокол геокодирования: Клиентский (скрипт OnGeocodeScript)&amp;quot;. Имеет встроенные переменные:&lt;br /&gt;
*$address - адрес для геокодирования;&lt;br /&gt;
*$town - код города;&lt;br /&gt;
*$street и $home  - упрощенный адрес;&lt;br /&gt;
&lt;br /&gt;
Скрипт должен вернуть следующие переменные : &lt;br /&gt;
*$lon и $lat - координаты ;&lt;br /&gt;
*$goodaddress - нормализованный адрес (не обязательно);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&amp;gt;  &lt;br /&gt;
  set($response,  HTTPPOST('http://XXXXXXXX',&lt;br /&gt;
    '{&amp;quot;query&amp;quot;:'+ FormatTextJSON($address)+ '}', &lt;br /&gt;
    '','','','',&lt;br /&gt;
    'post', 'application/json', 10000));&lt;br /&gt;
  &lt;br /&gt;
  if($response!'',&lt;br /&gt;
    new('TJSON', 'json');&lt;br /&gt;
    set($e, try(&lt;br /&gt;
      json.SetText($response);&lt;br /&gt;
      json.OpenChild('geo_data');&lt;br /&gt;
      json.OpenChild('mid');&lt;br /&gt;
      set($lat, sqlfloat(json.ChildNodeValue('lat')));&lt;br /&gt;
      set($lon, sqlfloat(json.ChildNodeValue('lon')));&lt;br /&gt;
    ));&lt;br /&gt;
    if($e, error('Ошибка в разборе ответа: '+$e), '');&lt;br /&gt;
  , error('Пришел пустой ответ от геокодера')&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F&amp;diff=14715</id>
		<title>Пользовательские поля</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F&amp;diff=14715"/>
				<updated>2023-05-31T14:27:27Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пользовательские поля отображаются на вкладке '''Пользовательская''' в карточках следующих объектов системы:&lt;br /&gt;
* заказ;&lt;br /&gt;
* корреспонденция;&lt;br /&gt;
* сотрудник;&lt;br /&gt;
* клиент;&lt;br /&gt;
* тариф;&lt;br /&gt;
* зарплата сотрудников.&lt;br /&gt;
&lt;br /&gt;
По умолчанию вкладки скрыты. Чтобы они отобразились, укажите поля и их типы в '''Справочники''' &amp;gt; '''Статусы''' &amp;gt; '''42 Пользовательские поля'''.&lt;br /&gt;
&lt;br /&gt;
Одно пользовательское поле соответствует одному статусу, название статуса используется как название пользовательского поля. Тип поля определяется в дополнительной информации статуса.&lt;br /&gt;
&lt;br /&gt;
Формат записи: &amp;lt;code&amp;gt;Видимость, тип поля, [параметры в зависимости от типа]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример записи:&lt;br /&gt;
 1, DATE, 01.01.2020&lt;br /&gt;
&lt;br /&gt;
Первый параметр указывает, отображается поле или нет:&lt;br /&gt;
* '''1''' — отображается;&lt;br /&gt;
* '''0''' — скрыто.&lt;br /&gt;
Этот параметр устарел, хоть и поддерживается. Рекомендуется управлять видимостью поля с помощью пункта контекстного меню '''Выключить/Включить'''.&lt;br /&gt;
&lt;br /&gt;
Второй параметр определяет тип поля:&lt;br /&gt;
* INT — вводит целое число (как UPDOWN, с границами диапазона от −1000000 до 1000000);&lt;br /&gt;
* STR — вводит строку;&lt;br /&gt;
* CUSTSTR — вводит строку, но не экранирует ее при подстановке в запрос;&lt;br /&gt;
* FLOAT — вводит число с плавающей точкой;&lt;br /&gt;
* CHECK — вводит булево значение, отображается на форме в виде флажка;&lt;br /&gt;
* DATE — вводит дату;&lt;br /&gt;
* COMBO — вводит текст с возможностью выбора из выпадающего списка;&lt;br /&gt;
* COMBOLIST — вводит текст из выпадающего списка;&lt;br /&gt;
* UPDOWN — вводит целое число со стрелками уменьшения/увеличения, с возможностью определения диапазона (пример: UPDOWN, 0-100, 1);&lt;br /&gt;
* (типы FILESTR и SAVEFILESTR не поддерживаются);&lt;br /&gt;
* GROUPBOX — создает панель и помещает на нее последующие поля. Можно добавлять все поля или только указанное количество в третьем параметре. Пример: GROUPBOX, название группы;&lt;br /&gt;
* CHECKLISTBOX - выводит список с галочками.&lt;br /&gt;
&lt;br /&gt;
Третий параметр — значение по умолчанию.&lt;br /&gt;
&lt;br /&gt;
Все три параметра обязательные.&lt;br /&gt;
&lt;br /&gt;
'''Особенности:'''&lt;br /&gt;
* для поля типа COMBOBOX третий параметр — это SQL-запрос для заполнения, а четвёртый — номер записи из списка;&lt;br /&gt;
* для поля типа CHECKLISTBOX третий параметр — это SQL-запрос для заполнения, в котором поля name и code соответственно наименование и внутренний код для сохранения, если пункт отмечен. Коды сохраняются через запятую. Если не отмечено ничего, сохраняется 0. &lt;br /&gt;
* для поля типа UPDOWN третий параметр — это границы диапазона изменения значений (указываются через тире), а четвертый — значение по умолчанию. Пример использования: 1,UPDOWN,0-100,1 — поле с возможностью выбора значения с помощью стрелок уменьшения/увеличения, возможные значения поля лежат в диапазоне от 0 до 100, значение по умолчанию равно 1.&lt;br /&gt;
&lt;br /&gt;
Примеры объявления &lt;br /&gt;
  1, COMBOLIST, 'Нет, Вечерний менеджер 1, Вечерний менеджер 2', 'Нет'&lt;br /&gt;
  1, COMBOLIST, 'Нет, Вечерний менеджер 1, Вечерний менеджер 2', 0&lt;br /&gt;
  1, COMBOLIST, 'select &amp;quot;Нет SMS&amp;quot; as name union select &amp;quot;SMS Обычные&amp;quot; union select &amp;quot;SMS Китай&amp;quot;', 0&lt;br /&gt;
  1, STR, '''''''&lt;br /&gt;
&lt;br /&gt;
При наличии хотя бы одного видимого поля вкладка будет отображена.&lt;br /&gt;
&lt;br /&gt;
== Пример использования ==&lt;br /&gt;
&lt;br /&gt;
Чтобы только для конкретных клиентов работала отправка электронного сообщения с отчетом о доставленных заказах:&lt;br /&gt;
# Перейдите в '''Справочники''' &amp;gt; '''Статусы''' &amp;gt; '''42 Пользовательские поля''' &amp;gt; '''Пользовательские поля для клиентов''' и нажмите на кнопку F3.&lt;br /&gt;
# В окне «Создание статуса» введите название поля.&lt;br /&gt;
# В контекстном меню созданного статуса выберите пункт '''Дополнительная информация''', укажите строкой параметры &amp;lt;code&amp;gt;1, CHECK, F&amp;lt;/code&amp;gt; и нажмите на кнопку '''ОК'''.&lt;br /&gt;
&lt;br /&gt;
В результате в карточке клиента появится вкладка '''Пользовательская''', и будет создан флажок:&lt;br /&gt;
&lt;br /&gt;
[[Файл:UserField_1.png|500 px|none]]&lt;br /&gt;
&lt;br /&gt;
Если установить флажок в карточке клиента, будет работать отправка электронного сообщения (при наличии задания в модуле автоматизации).&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A1%D1%87%D0%B5%D1%82%D0%B0&amp;diff=14642</id>
		<title>Счета</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A1%D1%87%D0%B5%D1%82%D0%B0&amp;diff=14642"/>
				<updated>2023-03-23T11:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Печатная форма счета */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Управление счетами ==&lt;br /&gt;
&lt;br /&gt;
Для управления счетами выберите в меню '''Документы''' пункт '''Счета'''. Необходимо наличие прав на просмотр счетов. Откроется окно «Счета»:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Список счетов.png|900px]]&lt;br /&gt;
&lt;br /&gt;
В верхней части окна расположены фильтры списка счетов. Фильтры можно комбинировать, чтобы вывести в таблице счетов необходимую информацию. Чтобы снять установленные фильтры, нажмите на кнопку '''Отменить'''.&lt;br /&gt;
&lt;br /&gt;
Выставленные счета и информация по ним представлены в виде таблицы. Оплаченные счета отображаются на сером фоне.&lt;br /&gt;
&lt;br /&gt;
Если ведется учет подписанных актов, в табличной части можно отобразить столбец '''Подписан акт'''. Чтобы установить флажок '''Подписан акт''', отсканируйте штрихкод с распечатанного акта по счету.&lt;br /&gt;
&lt;br /&gt;
В этом окне доступны следующие действия со счетами:&lt;br /&gt;
* открыть карточку счета. Чтобы просмотреть информацию по счету, выделите его в таблице и нажмите Enter;&lt;br /&gt;
* отметить [[Счета#Ручной ввод|оплату счета]]. Для этого выделите счет и нажмите F5. Откроется окно оплаты счета, в котором необходимо ввести даты отчета и оплаты. При нажатии на кнопку '''ОК''' заказы клиента за период счета и сам счет станут оплаченными. Эта операция выполняется автоматически при [[#Импорт из банк-клиента|импорте из банк-клиента]];&lt;br /&gt;
* просмотреть детализацию счета — F9;&lt;br /&gt;
* выгрузить счета в Microsoft Excel — Ctrl+F9;&lt;br /&gt;
* указать дату &amp;lt;rspoiler text=&amp;quot;обещанного платежа&amp;quot;&amp;gt;После ввода даты обещанного платежа снимается блокировка на создание заказов.&amp;lt;/rspoiler&amp;gt; по счету — пункт контекстного меню '''Дата обещанного платежа''';&lt;br /&gt;
* [[#Экспорт счетов в 1C|экспортировать]] выбранные счета в 1С;&lt;br /&gt;
* [[#Массовое выставление счетов|массово выставить счета]];&lt;br /&gt;
* сформировать заказ на доставку выделенных счетов — Ctrl+F12.&lt;br /&gt;
&lt;br /&gt;
== Карточка счета ==&lt;br /&gt;
&lt;br /&gt;
Карточка счета имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Карточка счета.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Вид табличной части счета зависит от используемой печатной формы.&lt;br /&gt;
 &lt;br /&gt;
'''Заказчик'''. Имя или название клиента курьерской службы.&lt;br /&gt;
&lt;br /&gt;
'''Отдел'''. Название отдела компании, создавшего заказ.&lt;br /&gt;
&lt;br /&gt;
'''Основание'''. Определяет порядок оплаты услуг курьерской службы. Возможные значения:&lt;br /&gt;
* '''Заказы''' — клиент оплачивает все доставки по заказам. В этом случае правее выпадающего списка появляется кнопка [[Файл:More.png]], при нажатии на которую можно увидеть номера заказов, на которые выставлен этот счет;&lt;br /&gt;
* '''Акт передачи денег/ТМЦ''' — клиент оплачивает услуги по заказам, вошедшим в АПД.&lt;br /&gt;
&lt;br /&gt;
'''Период счета'''. Интервал дат заказов, за которые выставляется счет.&lt;br /&gt;
&lt;br /&gt;
'''Дата документа'''. Заполняется автоматически датой выставления счета.&lt;br /&gt;
&lt;br /&gt;
'''Предоплата'''. Если флажок установлен, значит клиент оплачивает услуги до их выполнения, деньги списываются с баланса клиента в системе.&lt;br /&gt;
&lt;br /&gt;
'''Нал.''' Если флажок установлен, клиент оплачивает услуги наличными деньгами.&lt;br /&gt;
&lt;br /&gt;
'''Курс валюты'''. Отношение валюты, в которой производится расчет, к рублю. Укажите значение или нажмите на кнопку [[Файл:More.png]] рядом с полем для подстановки значения из справочника '''[[Курсы валют]]'''.&lt;br /&gt;
&lt;br /&gt;
'''Скидка'''. Скидка клиента в процентах. Вы можете указать скидку вручную или по кнопке [[Файл:More.png]] заполнить значением, указанным в [[Клиенты и партнеры#Финансы|карточке клиента]].&lt;br /&gt;
&lt;br /&gt;
'''Тип формы'''. Тип [[Печатные формы|печатной формы]] счета. Выберите значение из выпадающего списка или скопируйте тип из [[Клиенты и партнеры#Реквизиты|карточки клиента]] с помощью кнопки [[Файл:More.png]].&lt;br /&gt;
&lt;br /&gt;
Печатные формы счетов хранятся в разделе '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Счета'''. Их можно сохранять, загружать, редактировать в Microsoft Excel.&lt;br /&gt;
&lt;br /&gt;
Вы можете загрузить последнюю версию стандартной печатной формы [[Файлы для загрузки#Популярные документы|здесь]].&lt;br /&gt;
&lt;br /&gt;
'''Огранич.''' Если флажок установлен, то включено ограничение по минимальной сумме счета, установленной в [[Клиенты и партнеры#Финансы|карточке клиента]]. Кнопка [[Файл:More.png]] рядом с полем позволяет скопировать значение из поля '''Мин. сумма счета''' карточки клиента.&lt;br /&gt;
&lt;br /&gt;
'''Счет'''. Если флажок установлен, будет сформирован счет, и вы можете ввести номер счета вручную или по кнопке [[Файл:More.png]] подставить значение автоматической нумерации. Если флажок снят, счет не формируется. Эта возможность используется, чтобы создать акт выполненных работ для клиентов, работающих по предоплате.&lt;br /&gt;
&lt;br /&gt;
Счета автоматически нумеруются сквозной нумерацией в течение года. Пользователь может изменять номера счетов, но при этом контролируется правильность последовательности дат и номеров счетов: невозможно создать счет с номером большим, а датой меньшей, чем у уже имеющегося счета за данный год, и наоборот. Эта возможность включена переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Финансы''' &amp;gt; '''Счета''' &amp;gt; '''Контролировать последовательность дат и номеров счетов'''.&lt;br /&gt;
&lt;br /&gt;
'''Фактура'''. Вы можете ввести номер фактуры вручную или по кнопке [[Файл:More.png]] подставить значение автоматической нумерации.&lt;br /&gt;
&lt;br /&gt;
'''Показывать нули'''. Если флажок установлен, в таблице отображаются строки с нулевыми ценами.&lt;br /&gt;
&lt;br /&gt;
'''Кол-во счетов''', '''Актов''', '''Фактур'''. Укажите количество экземпляров документов для печати.&lt;br /&gt;
&lt;br /&gt;
'''Уполн. лицо'''. Укажите сотрудника, который выставил счет.&lt;br /&gt;
&lt;br /&gt;
'''Примечания'''. Поле для примечаний.&lt;br /&gt;
&lt;br /&gt;
В таблице '''Подробно''' перечислены услуги доставки, за которые выставлен счет. Данные сгруппированы по стоимости. Кнопки для работы с таблицей:&lt;br /&gt;
&lt;br /&gt;
* '''Подробнее''' — дополнительная информация о позициях в таблице;&lt;br /&gt;
* '''Адреса''' — отображает список адресов, по которым выставлен счет;&lt;br /&gt;
* '''Функции''' — открывает меню дополнительных функций. Доступна только для созданных счетов;&lt;br /&gt;
* '''Пересчитать''' — используется при изменении дат счета. Система объединит данные из корреспонденции и добавит в таблицу. При необходимости данные можно изменить. Если количество цен доставки больше, чем строк в таблице, то система объединит позиции. Будет создана позиция с количеством 1 и стоимостью, равной сумме всех доставок.&lt;br /&gt;
&lt;br /&gt;
Кнопка '''Печать''' сохраняет счет и выводит комплект документов на печать на принтер, установленный по умолчанию. &lt;br /&gt;
&lt;br /&gt;
Кнопка '''Просмотр''' сохраняет счет, формирует комплект документов и открывает его в Microsoft Excel.&lt;br /&gt;
&lt;br /&gt;
Чтобы просмотреть форму счета с выгруженными [[#Печатная форма счета|подписями и печатью]], в форме счета нажмите на кнопку '''Просмотр''' или '''Печать''', удерживая нажатой клавишу CTRL. В результате сформируется документ XSL или PDF соответственно.&lt;br /&gt;
&lt;br /&gt;
После выставления счета запрещены действия, приводящие к изменению стоимости доставки корреспонденции.&lt;br /&gt;
&lt;br /&gt;
'''Примечание.''' Если сначала создать и распечатать комплект документов, а потом изменить печатную форму, реквизиты контрагентов и т.п., при повторной печати документов сформируются документы с новыми реквизитами и формой счета.&lt;br /&gt;
&lt;br /&gt;
== Выставление счета ==&lt;br /&gt;
&lt;br /&gt;
Счета можно выставить:&lt;br /&gt;
* вручную:&lt;br /&gt;
** на вкладке '''Заказы''' выберите в списке заказ в контекстном меню нажмите '''Выставить счет''';&lt;br /&gt;
** на вкладке  '''Клиенты''' выберите клиента и нажмите F2 или в контекстном меню нажмите '''Выставить счет''';&lt;br /&gt;
** в основном меню откройте '''Документы''' &amp;gt; '''Акты передачи денег/корреспонденции''', в списке выделите АПД и в контекстном меню нажмите '''Выставить счет''';&lt;br /&gt;
* массово. Подробнее см. раздел [[#Массовое выставление счетов|«Массовое выставление счетов»]].&lt;br /&gt;
&lt;br /&gt;
Чтобы разделять счета компании по отделам, в карточке клиента заполните вкладку '''[[Клиенты и партнеры#Отделы|Отделы]]''' и в карточке заказа указывайте отдел заказчика.&lt;br /&gt;
&lt;br /&gt;
Настройки выставления счета хранятся в карточке клиента на вкладках '''[[Клиенты и партнеры#Реквизиты |Реквизиты]]''' и '''[[Клиенты и партнеры#Финансы|Финансы]]'''.&lt;br /&gt;
&lt;br /&gt;
В зависимости от принятой системы взаиморасчетов с клиентом можно выставить [[#Счет на предоплату|счет на предоплату]] или на оплату фактически оказанных услуг.&lt;br /&gt;
&lt;br /&gt;
Если счет, выставленный на заказ, не оплачен, то изменить дату создания этого заказа можно при отключенной переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Финансы''' &amp;gt; '''Счета''' &amp;gt; '''Контроль целостности счета''' или если в этой переменной указан пользователь, которому разрешено менять дату. В этом случае пользователь увидит напоминание о необходимости пересчета суммы счета.&lt;br /&gt;
&lt;br /&gt;
Выставленные счета можно посмотреть в пункте основного меню '''Документы''' &amp;gt; '''Счета'''.&lt;br /&gt;
&lt;br /&gt;
Если предыдущий счет был выставлен ранее, чем за последние 3 месяца, то счет формируется за '''ПОСЛЕДНИЙ''' календарный месяц. &lt;br /&gt;
&lt;br /&gt;
=== Массовое выставление счетов ===&lt;br /&gt;
&lt;br /&gt;
Функция предназначена для упрощения и ускорения процесса выставления счетов клиентам.&lt;br /&gt;
&lt;br /&gt;
Откройте '''Функции''' &amp;gt; '''Массовое выставление счетов''' или '''Документы''' &amp;gt; '''Счета''' и нажмите на кнопку '''Масcовое выставление счетов'''. Откроется окно «Массовое выставление счетов»:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Массовоее выставление.png|none]]&lt;br /&gt;
&lt;br /&gt;
В верхней части окна расположены настройки списка клиентов, которым нужно выставить счета. В таблице ниже отображается название клиента и стоимость доставки по заказам, созданным за последние три месяца.&lt;br /&gt;
&lt;br /&gt;
Помимо настроек фильтра, заказы должны отвечать следующим условиям:&lt;br /&gt;
* не закрыты счетами;&lt;br /&gt;
* не оплачены наличными;&lt;br /&gt;
* корреспонденции в заказе не входят в закрытые счетами АПД;&lt;br /&gt;
* в карточке корреспонденции, входящей в заказ, не установлен флажок '''Оплата получателем'''.&lt;br /&gt;
&lt;br /&gt;
Настройки списка:&lt;br /&gt;
&lt;br /&gt;
'''Дата до'''. Дата, до которой сделаны заказы, попадающие в счет. Начальная дата формируется на основании предыдущего счета. Если счета нет, то отображаются заказы за 3 последних месяца.&lt;br /&gt;
&lt;br /&gt;
'''Дата счета'''. Дата выставления счета.&lt;br /&gt;
&lt;br /&gt;
'''№ счета'''. По умолчанию указывается номер, который будет присвоен следующему счету, выставленному от выбранной фирмы. Счета автоматически нумеруются сквозной нумерацией в течение года. Пользователь может указать номер счета, с которого будут начинаться выставляемые счета, но при этом контролируется правильность последовательности дат и номеров счетов: невозможно создать счет с номером большим, а датой меньшей, чем у уже имеющегося счета за данный год, и наоборот. Эта возможность включена переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Финансы''' &amp;gt; '''Счета''' &amp;gt; '''Контролировать последовательность дат и номеров счетов'''.&lt;br /&gt;
&lt;br /&gt;
'''№ фактуры совпадает с № счета'''. Если флажок установлен, номер счет-фактуры устанавливается таким же, как номер счета.&lt;br /&gt;
&lt;br /&gt;
'''Выставлять по'''. Выберите основание для выставления счетов. Возможные значения: '''заказам''', '''актам (АПД)'''.&lt;br /&gt;
&lt;br /&gt;
'''Фирма'''. Юридическое лицо, от имени которого выставляется счет.&lt;br /&gt;
&lt;br /&gt;
'''Режим'''. Периодичность выставления счета. Возможные значения: '''Ручное выставление''', '''1 раз в месяц''', '''2 раза в месяц'''. По указанному значению фильтруются клиенты, которым нужно выставить счет. Этот признак указывается в карточке клиента, на вкладке '''Финансы''', в поле '''Режим выставления'''. Таким образом, для каждого клиента можно указать &amp;lt;rspoiler text=&amp;quot;собственный режим выставления счетов&amp;quot;&amp;gt;Значения режима выставления счетов устанавливаются в справочнике '''Справочники''' &amp;gt; '''Статусы''' &amp;gt; '''76 Режим массового выставления счетов по заказам'''. Можно изменить существующие режимы или добавить пользовательские.&amp;lt;/rspoiler&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Кнопка '''Выставить счета всем''' запускает формирование счетов клиентам, отображаемым в табличной части. Если нужно выставить счета только для части клиентов, указанных в списке, выделите названия клиентов в списке и в контекстном меню выберите '''Выставить счет'''.&lt;br /&gt;
&lt;br /&gt;
Результат выставления счетов отображается в окне лога.&lt;br /&gt;
&lt;br /&gt;
Выставленные счета находятся в разделе '''Документы''' &amp;gt; '''Счета'''. Проверьте их корректность перед отправкой клиенту.&lt;br /&gt;
&lt;br /&gt;
=== Счет на предоплату ===&lt;br /&gt;
&lt;br /&gt;
Работа по предоплате предполагает, что клиент вносит на свой баланс установленную сумму предоплаты, и стоимость услуг постепенно списывается с баланса.&lt;br /&gt;
&lt;br /&gt;
Чтобы установить предоплатный режим работы, в карточке клиента перейдите на вкладку '''Финансы''' и установите флажок '''Предоплата'''.&lt;br /&gt;
&lt;br /&gt;
При этом флажок '''Исключить стоимость курьерских услуг из акта передачи денег''' должна быть снят, иначе стоимость доставки будет взиматься с клиента дважды: первый раз — при оформлении заказа, второй раз — при создании акта передачи денег.&lt;br /&gt;
&lt;br /&gt;
Чтобы клиент пополнил баланс, выставьте ему счет с установленным флажком '''Предоплата''':&lt;br /&gt;
&lt;br /&gt;
[[Файл:schet_1.png|400px|none]]&lt;br /&gt;
&lt;br /&gt;
Текущий баланс можно проверить в [[Клиенты и партнеры#Финансы|карточке клиента]], на вкладке '''Финансы'''.&lt;br /&gt;
&lt;br /&gt;
При создании карточки заказа, корреспонденции или срочного заказа от этого клиента будет появляться всплывающее сообщение с информацией о текущем балансе.&lt;br /&gt;
&lt;br /&gt;
Если сумма баланса ниже значения, которое указано в переменной '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Финансы''' &amp;gt; '''Минимальный баланс для напоминания''', то во всплывающем сообщении будет значок ошибки.&lt;br /&gt;
&lt;br /&gt;
Чтобы сформировать акт и счет-фактуру по заказу при предоплатной системе расчетов, выставьте счет без флажка '''Счет''' с указанным периодом счета. В акте и счет-фактуре вместо номера указывается «б/н», потому что номера счета как такового нет. Сделано это для того, чтобы номера счетов, актов, счет-фактур совпадали.&lt;br /&gt;
&lt;br /&gt;
=== Печатная форма счета === &lt;br /&gt;
&lt;br /&gt;
В стандартных печатных формах счетов можно размещать сканы логотипа и печати предприятия, подписей руководителя и бухгалтера.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Positionofpic1.png|500px|none]]&lt;br /&gt;
&lt;br /&gt;
Скан-копии изображений в формате PNG, который поддерживает прозрачность фона, должны быть загружены в справочник '''[[Фирмы]]''' на вкладку '''Сканы'''.&lt;br /&gt;
&lt;br /&gt;
Существуют следующие способы размещения печати, логотипа и подписей в печатной форме счета:&lt;br /&gt;
* [[#Теги|с помощью тегов]];&lt;br /&gt;
* [[#Координаты|по координатам]].&lt;br /&gt;
&lt;br /&gt;
Скан-копии изображений выгружаются в печатную форму счета только при отправке счета клиенту по электронной почте (функция контекстного меню '''Разослать по e-mail''').&lt;br /&gt;
&lt;br /&gt;
Чтобы просмотреть форму счета с выгруженными скан-копиями, в форме счета нажмите на кнопку '''Просмотр''' или '''Печать''', удерживая нажатой клавишу CTRL. В результате сформируется документ XSL или PDF соответственно.&lt;br /&gt;
&lt;br /&gt;
В форму акта можно добавить штрихкод, чтобы в списке счетов ('''Документы''' &amp;gt; '''Счета''') по нему находить счет и устанавливать флажок '''Подписано'''.&lt;br /&gt;
&lt;br /&gt;
Штрихкод всегда расположен на втором листе печатной формы. Размещение штрихкода на листе задается тегом &amp;lt;BARCODE&amp;gt;:&lt;br /&gt;
* если тег не указан, штрихкод размещается в ячейке BM23;&lt;br /&gt;
* чтобы скрыть штрихкод, укажите тег &amp;lt;BARCODE&amp;gt;&amp;lt;HIDE&amp;gt; в любой ячейке листа;&lt;br /&gt;
* чтобы указать расположение штрихкода, укажите тег &amp;lt;BARCODE&amp;gt; в нужной ячейке.&lt;br /&gt;
&lt;br /&gt;
==== Теги ====&lt;br /&gt;
&lt;br /&gt;
Вы можете задать расположение печати, логотипа и подписей в печатной форме с помощью следующих тегов:&lt;br /&gt;
* &amp;lt;LOGO&amp;gt; — определяет расположение логотипа организации. Если логотип не загружен в справочнике '''Фирмы''', используется изображение из справочника '''Двоичные данные''' &amp;gt; '''Большой логотип с полутонами (для печати)''';&lt;br /&gt;
* &amp;lt;STAMP&amp;gt; — определяет расположение печати компании;&lt;br /&gt;
* &amp;lt;DIR&amp;gt; — определяет расположение подписи директора;&lt;br /&gt;
* &amp;lt;BUH&amp;gt; — определяет расположение подписи главного бухгалтера.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Штамп и печать.png|1100 px|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После тега можно указать высоту и ширину скан-копии изображения в &amp;lt;rspoiler text=&amp;quot;символах Microsoft Excel&amp;quot;&amp;gt;Символ — это ширина одного знака текста, записанного шрифтом по умолчанию, определенным для обычного стиля книги. Например, стандартная ширина столбца в Microsoft Excel — 8,43 символа. Подробнее см. [https://docs.microsoft.com/ru-ru/office/troubleshoot/excel/determine-column-widths документацию Microsoft].&amp;lt;/rspoiler&amp;gt;. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16. &lt;br /&gt;
&lt;br /&gt;
Количество тегов на листе не ограничено.&lt;br /&gt;
&lt;br /&gt;
==== Координаты ====&lt;br /&gt;
&lt;br /&gt;
В форму счета для вкладки '''Счет''' и '''Акт''' из системы автоматически выгружаются изображения: '''Печать предприятия''' и '''Подпись директора''', для вкладки '''Фактура''' выгружаются '''Подпись директора''' и '''Подпись бухгалтера'''. Система автоматически подбирает координаты местоположения изображений путем поиска по словосочетаниям '''Руководитель организации''' и '''Главный бухгалтер''' в форме.&lt;br /&gt;
&lt;br /&gt;
Если требуется точная калибровка расположения элемента, задайте координаты ячеек для вставки изображения вручную на вкладке '''Данные'''. Координаты указываются в цифровом выражении. Буквенные значения не предусмотрены, например ячейке D соответствует цифра 4.&lt;br /&gt;
&lt;br /&gt;
Координата указывается для верхнего левого угла изображения (top-left), состоит из двух значений и записывается строго в следующие ячейки на вкладке '''Данные''':&lt;br /&gt;
* [O6, P6] – печать предприятия на вкладке '''Счет''';&lt;br /&gt;
* [Q6, R6] – печать предприятия на вкладке '''Акт'''; &lt;br /&gt;
* [O7, P7] – подпись директора на вкладке '''Счет'''; &lt;br /&gt;
* [Q7, R7] – подпись директора на вкладке '''Акт'''.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Positionofpic2.png|1000 px|none]]&lt;br /&gt;
&lt;br /&gt;
Подпись бухгалтера выгружается только для формы '''Счета-фактуры''' (вкладка '''Фактура'''), изменение координат для которой не предусмотрено. Вкладка '''Фактура''' появляется в печатной форме документа '''Счет''' только для фирм, у которых задана ставка НДС.&lt;br /&gt;
&lt;br /&gt;
Чтобы добавить логотип компании в счет, разместите его на первом листе печатной формы.&lt;br /&gt;
&lt;br /&gt;
Если в документе найден хоть один тег &amp;lt;LOGO&amp;gt;, &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt; или &amp;lt;BUH&amp;gt;, координаты в документе игнорируются, изображения вставляются тегами.&lt;br /&gt;
&lt;br /&gt;
==== Кастомная детализация ====&lt;br /&gt;
&lt;br /&gt;
Имеется возможность вкладывать скрипт кастомной детализации счета в саму форму счета - для случаев, когда нужно сделать форму детализации для какого-нибудь клиента или разновидности счета отличной от стандартной или общей кастомной. Скрипт помещается на вкладку '''Данные''' в ячейку H3. Правила составления скрипта аналогичны системной доп.возможности CustomBillDetaling см. [https://wiki.courierexe.ru/index.php/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8]&lt;br /&gt;
&lt;br /&gt;
== Рассылка по e-mail ==&lt;br /&gt;
&lt;br /&gt;
Чтобы отправить счет по электронной почте, в списке счетов в контекстном меню выберите '''Разослать по e-mail'''. &lt;br /&gt;
&lt;br /&gt;
Если кнопка недоступна, убедитесь, что выполнены следующие условия:&lt;br /&gt;
* в [[Пользователи#Создание пользователя|карточке пользователя]], который выполняет рассылку, указан адрес электронной почты;&lt;br /&gt;
* указаны общие или локальные настройки почтового сервиса:&lt;br /&gt;
** [[Настройка глобальных параметров#Настройка параметров подключения к почтовому серверу|общие]] — '''Справочники''' &amp;gt; '''Переменные''' &amp;gt; '''Подключения''' &amp;gt; '''Почтовый сервер''';&lt;br /&gt;
** [[Устранение неполадок#Устранение неполадок при отправке электронной почты|локальные]] — '''Настройка''' &amp;gt; '''Параметры''' &amp;gt; '''Подключения''';&lt;br /&gt;
* в [[Клиенты и партнеры#Финансы|карточке клиента]], которому выставлен счет, на вкладке '''Финансы''' указан адрес электронной почты.&lt;br /&gt;
&lt;br /&gt;
Чтобы отправить выставленные счета сразу нескольким клиентам, выделите их в списке и в контекстном меню выберите '''Разослать по e-mail''' .&lt;br /&gt;
&lt;br /&gt;
== Экспорт счетов в 1С ==&lt;br /&gt;
&lt;br /&gt;
Использование этой функциональности предполагает наличие подключенного модуля [https://courierexe.ru/integration.htm  1С:Бухгалтерия].&lt;br /&gt;
&lt;br /&gt;
Чтобы экспортировать счет в 1С:&lt;br /&gt;
&lt;br /&gt;
# Откройте пункт основного меню '''Связь''' &amp;gt; '''Экспорт счетов в 1С'''. Откроется окно следующего вида:[[Файл:Экспорт счетов в 1C.png|none]]&lt;br /&gt;
# Укажите интервал дат выставления счетов, файл, в который нужно выгружать информацию о счетах. В поле '''Фирма''' выберите из списка название юридического лица, которое выставляет счет.&lt;br /&gt;
# Нажмите на кнопку '''ОК'''. Информация о выставленных счетах сохраняется в указанный файл, подробнее см. [[описание формата экспорта счетов в 1С]]. &lt;br /&gt;
&lt;br /&gt;
Сформированный файл с помощью внешней обработки 1C в формате EPF можно загрузить в модуль 1С:Бухгалтерия.&lt;br /&gt;
&lt;br /&gt;
== Проведение платежа ==&lt;br /&gt;
Чтобы просмотреть внесенные платежи, выберите в меню '''Документы''' &amp;gt; '''Платежи'''. Откроется окно «Платежи»:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Платежи.png|none|650 px]]&lt;br /&gt;
&lt;br /&gt;
В верхней части окна расположены фильтры списка платежей. Фильтры можно комбинировать, выводя в таблице платежей необходимую информацию.&lt;br /&gt;
&lt;br /&gt;
Введенные платежи и информация по ним представлены в виде таблицы. Сумма платежа со знаком минуса означает платеж партнеру.&lt;br /&gt;
&lt;br /&gt;
В этом окне доступны следующие действия со платежами:&lt;br /&gt;
* открыть карточку платежа. Чтобы просмотреть информацию по платежу, выделите его в таблице и нажмите Enter;&lt;br /&gt;
* [[#Ручной ввод|ввести платеж вручную]];&lt;br /&gt;
* просмотреть привязки платежа к счетам — CTRL+F3;&lt;br /&gt;
* удалить платеж — CTRL+F8;&lt;br /&gt;
* сформировать [[Клиенты и партнеры#Акт сверки|акт сверки]] взаимных расчетов. Для этого выделите в списке платеж клиента, по которому нужно сформировать акт, и в контекстном меню выберите пункт '''Акт сверки'''.&lt;br /&gt;
&lt;br /&gt;
=== Платежи от клиентов ===&lt;br /&gt;
&lt;br /&gt;
Платежи от клиентов можно:&lt;br /&gt;
* [[#Ручной ввод|вводить вручную]];&lt;br /&gt;
* [[#Импорт из банк-клиента|импортировать из клиент-банка]]. &lt;br /&gt;
&lt;br /&gt;
==== Ручной ввод ====&lt;br /&gt;
&lt;br /&gt;
Ввести платеж вручную можно следующими способами:&lt;br /&gt;
* на вкладке '''Клиенты''' выберите клиента в списке и нажмите F5 или в контекстном меню выберите пункт '''Ввести платеж''';&lt;br /&gt;
* откройте пункт основного меню '''Документы''' &amp;gt; '''Счета''', выберите счет и нажмите F5 или в контекстном меню выберите пункт '''Ввести оплату''';&lt;br /&gt;
* при оплате заказа наличными в карточке заказа установите флажок '''Оплата наличными''' и справа нажмите на кнопку [[Файл:Плюс2.png]].&lt;br /&gt;
&lt;br /&gt;
В результате откроется карточка платежа:&lt;br /&gt;
&lt;br /&gt;
[[Файл:platezh.png|none|400px]]&lt;br /&gt;
&lt;br /&gt;
# Укажите сумму, дату и тип оплаты: наличная или безналичная.&lt;br /&gt;
#: При оплате наличными можно изменить заказ, по которому курьер привез деньги, а также данные курьера. &lt;br /&gt;
#: При безналичной оплате введите номер платежного поручения и дату документа. Банковские реквизиты автоматически заполнятся данными со вкладки '''Реквизиты''' карточки клиента.&lt;br /&gt;
# Нажмите на кнопку '''ОК'''.&lt;br /&gt;
&lt;br /&gt;
Платеж появится в разделе '''Документы''' &amp;gt; '''Платежи'''.&lt;br /&gt;
&lt;br /&gt;
Не рекомендуется вводить вручную безналичные платежи, это увеличивает вероятность неверного ввода информации. Используйте загрузку из банк-клиента.&lt;br /&gt;
&lt;br /&gt;
==== Импорт из банк-клиента ====&lt;br /&gt;
&lt;br /&gt;
Импорт платежей из банк-клиента позволяет загружать в MeaSoft документы об оплате и автоматически привязывать их к счетам.&lt;br /&gt;
&lt;br /&gt;
Чтобы импортировать платежи:&lt;br /&gt;
# Выгрузите выписки по платежам из банк-клиента в текстовый файл. В большинстве случаев такая выгрузка в банк-клиенте называется «Экспорт в 1С».&lt;br /&gt;
# В MeaSoft выберите в меню '''Связь''' &amp;gt; '''Импорт из банк-клиента'''. Откроется окно «Импорт платежей»:[[Файл:Import-iz-bank-klienta.png|500px|none]]&lt;br /&gt;
# Укажите путь к выгруженному файлу в поле '''Путь к файлу обмена'''.&amp;lt;br&amp;gt;'''Удалить файл после загрузки'''. Если флажок установлен, текстовый файл выписки по платежам будет удален c вашего компьютера после загрузки в MeaSoft.&amp;lt;br&amp;gt;'''Загружать исходящие платежи'''. Если флажок установлен, проводятся платежи от нас к нашим контрагентам.&lt;br /&gt;
# Чтобы загрузить платеж, нажмите на кнопку '''ОК'''.&lt;br /&gt;
&lt;br /&gt;
Платежи появятся в разделе '''Документы''' &amp;gt; '''Платежи'''.&lt;br /&gt;
&lt;br /&gt;
При внесении платежей выполняется поиск и привязка входящих платежей к выставленным счетам с безналичным типом оплаты. Подробнее см. раздел [[#Привязка платежей|«Привязка платежей»]].&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить привязки платежей к счетам, нажмите на кнопку '''Платежи'''. Откроется окно проведенных в системе платежей.&lt;br /&gt;
&lt;br /&gt;
===Платежи партнерам===&lt;br /&gt;
&lt;br /&gt;
Чтобы провести платеж партнеру:&lt;br /&gt;
# На вкладке '''Клиенты''' выберите партнера из списка и в контекстном меню выберите '''Передача средств клиенту'''. Откроется окно «Передача средств клиенту»:[[Файл:Платеж клиенту.png|none|400 px]]&lt;br /&gt;
# Укажите сумму, дату и тип оплаты: наличная или безналичная.&lt;br /&gt;
#:При оплате наличными можно изменить заказ, по которому курьер привез деньги, а также данные курьера.&lt;br /&gt;
#:При безналичной оплате введите номер платежного поручения и дату документа. Банковские реквизиты автоматически заполнятся данными со вкладки '''Реквизиты''' карточки клиента.&lt;br /&gt;
#Нажмите на кнопку '''ОК'''.&lt;br /&gt;
&lt;br /&gt;
Платеж появится в разделе '''Документы''' &amp;gt; '''Платежи'''.&lt;br /&gt;
&lt;br /&gt;
=== Привязка платежей ===&lt;br /&gt;
&lt;br /&gt;
При внесении платежей выполняется поиск и привязка входящих платежей к выставленным счетам с безналичным типом оплаты. Платеж привязывается к счету, если суммы счета и платежа совпадают. Если счет на сумму платежа не найден, то система рассчитывает, есть ли два счета, сумма которых закрывается по платежу. Если такие счета есть, оба счета закрываются этим платежом.&lt;br /&gt;
&lt;br /&gt;
Пример: загружен платеж на 10250 руб., найдены два счета на сумму 4150 руб. и 6100 руб. Сумма платежа распределяется на оба счета, платеж привязывается к обоим счетам, счета закрываются.&lt;br /&gt;
&lt;br /&gt;
Если платеж не привязался по сумме или одним платежом оплачивали более двух счетов, такой платеж попадает в неразнесенные, и его можно будет распределить вручную.&lt;br /&gt;
&lt;br /&gt;
Ранее загруженные платежи повторно не загружаются.&lt;br /&gt;
&lt;br /&gt;
Чтобы привязать платеж вручную:&lt;br /&gt;
&lt;br /&gt;
# Откройте '''Документы'''&amp;gt; '''Платежи''' и установите флажок '''Только непривязанные''' и/или '''Только неразнесенные'''.&lt;br /&gt;
# Выделите в списке платеж, который нужно привязать  к счету, и нажмите CTRL+F3 или в контекстном меню выберите '''Посмотреть привязки к счетам'''. &lt;br /&gt;
#:Откроется окно «Привязка счетов и платежей». Если платеж не привязан ни к одному счету, записей в таблице нет. Если платеж не полностью разнесен по счетам, отображается информация по уже привязанным счетам и нераспределенный остаток платежа.&lt;br /&gt;
# Нажмите F3 или в контекстном меню выберите '''Добавить'''. Откроется окно «Счета», в котором содержатся счета, выставленные клиенту в указанный период. Выберите счет, к которому нужно привязать платеж. &lt;br /&gt;
В окне «Привязка счетов и платежей» появится новая строчка с информацией о платеже и привязанном к нему счете.&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8&amp;diff=14432</id>
		<title>Файлы для загрузки</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8&amp;diff=14432"/>
				<updated>2022-11-21T13:00:20Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Отчет для организаций с почтовой лицензией */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;На этой странице собраны документы, которые можно загрузить и использовать при настройке системы.&lt;br /&gt;
&lt;br /&gt;
== Популярные документы ==&lt;br /&gt;
* [https://www.courierexe.ru/download/Univer_disc_UPD5_new.xls Стандартный] счет для России со скидкой, УПД и поддержкой валют для версий системы от 2008.0.0.1152. [https://www.courierexe.ru/download/UPD_2021_back_compatible.xls Для старых версий]&lt;br /&gt;
&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/std_ms_171001.xls Многострочный (поддерживает вывод поля «Наименование» из карточки счета)]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/nakl.pdf Расширенная накладная в формате PDF]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/BNKSEEK.DBF Справочник банков]. Вы можете скачать и обновить справочник банков в системе.&lt;br /&gt;
&lt;br /&gt;
== Примеры составления документов ==&lt;br /&gt;
&lt;br /&gt;
=== Документы для клиентов ===&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для клиентов». После добавления, выйдите из программы и зайдите снова, документ появится в меню по кнопке «Печать» в карточке клиента.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor.doc Пример договора (Word)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor2.doc Пример договора 2 (Word)] Такой же, как предыдущий, плюс загружает реквизиты курьерской службы из фирмы клиента.&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor3.doc Пример договора 3 (Word)] Склоняет должности (сам) и ФИО руководителей — через сервис morpher.ru — бесплатно до 100 склонений (50 договоров) в день.&lt;br /&gt;
&lt;br /&gt;
=== Документы для курьеров ===&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для курьеров». После добавления, выйдите из программы и зайдите снова, документ появится в меню по кнопке «Печать» в карточке курьера.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/dogovor_courier.doc Пример договора (Word)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
* [https://courierexe.ru/download/samples/doveren_courier.xls Пример доверенности (Excel)] Данный документ показывает, как нужно оформить договор для автоматического заполнения программой.&lt;br /&gt;
&lt;br /&gt;
=== Примеры шаблонов загрузки ===&lt;br /&gt;
* [https://courierexe.ru/download/samples/load_report.xml Пример шаблона] для загрузки отчетов о доставке от контрагентов. Загружает информацию о доставке из Excel-отчетов. Добавлять в шаблоны импорта БД из эксель. В окне «Условие загрузки» можно настраивать, из каких полей какие значения брать.&lt;br /&gt;
&lt;br /&gt;
=== Примеры скриптов для доп. возможностей ===&lt;br /&gt;
Добавлять в меню «Отчеты» — «Дополнительные возможности»&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/XML_Load.xml Пример обработки] для загрузки xml-файла. Загружает заказы с товарными вложениями из xml. Добавлять в «Дополнительные возможности».&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/toy_load.xml Загрузка XML в формате Той.ру]&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/sms_analit.xml Отчет «Аналитика SMS»] Отчет для анализа эффективности составления SMS, контроля расходов на SMS-рассылки.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/changed_rur_report.xml Отчет «Изменения суммы в отправлениях»] Отчет для анализа изменений сумм заказов.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/profit_per_city.xml Отчет «Рентабельность отправок по городам»] Отчет для анализа рентабельности междугородных перевозок.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/old_given_report.xml Отчет «Задержка на руках курьеров»] Отчет для анализа отправлений, не сданных курьерами. В версии 818 от 07.11.2017 было убрано поле «Неотч.» на вкладке «Сотрудники», служившее этой цели. Вместо него предлагается использовать данный отчет.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/store_remains_w_reserv.xml Отчет «Остаток с учетом резерва»] Отчет в виде списка складской номенклатуры в формате Excel с полями «Кол-во товара в резерве» и «Кол-во на складе».&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/zone_price_load.xml Загрузка тарифов по зонам] позволяет загрузить междугородные тарифы из файла [https://courierexe.ru/download/userfunc/zone_price_load_example.xls такого формата].&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/courier_late_report.xml Отчет по опозданиям курьеров] Выводит доставки, по которым курьер установил статус позже срока окончания доставки, с дополнительной аналитикой.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/clients_weekly.xml Отчет «Оборот по клиентам помесячно и понедельно»] Аналогичный стандартному «Отчеты» — «Клиенты» — «Оборот по клиентам помесячно», но позволяющий вывести оборот за каждую неделю. При формировании отчета по неделям, анализируется динамика роста оборота.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/prin_sozd_39246.xml Отчет «Принятые не набитые накладные»]. При приемке у курьера отправлений забранных, но еще не внесенных в систему (через Доску приема) создаются накладные, которых нигде не видно до их ввода оператором. Этот отчет позволяет их посмотреть и не потерять.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/tickettimereport.xml Отчет «Анализ трудозатрат»]. Позволяет анализировать время, затраченное на решение тикетов в различных разрезах.&lt;br /&gt;
&lt;br /&gt;
==== Импорт входящих отчетов партнеров ====&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/load_incom_act.xml Универсальная загрузка отчета подрядчика] Создает входящий АПД по отчету. Обязательно требуется настройка под конкретный формат входящего документа. Попробуйте посмотреть в тексте, если не получается — обратитесь в тех. поддержку.&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/PickPoint_report_load.xml Загрузка отчета PickPoint] Создает входящий АПД по отчету PickPoint [https://courierexe.ru/download/userfunc/PickPoint_report_demo.xls такого формата]. Работает только при передаче заказов в PickPoint с помощью [[Интеграция с другими системами|штатной интеграции]].&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/SDEK_report_load.xml Загрузка отчета СДЭК] Создает входящий АПД по отчету СДЭК [https://courierexe.ru/download/userfunc/SDEK_report_demo.xls такого формата]. Работает начиная с версии 626 от 29.01.2016 и только при передаче заказов в СДЭК с помощью [[Интеграция с другими системами|штатной интеграции]].&lt;br /&gt;
&lt;br /&gt;
==== Импорт выписок по эквайрингу ====&lt;br /&gt;
* [https://courierexe.ru/download/userfunc/bank_load/Sber_import.xml Загрузка реестра Сбербанк] Загружает реестр платежей по эквайрингу Сбербанка [https://courierexe.ru/download/userfunc/bank_load/sber_sample.xlsx такого формата]. Устанавливает галку «Оплачено», записывает код транзакции. Выводит результирующий файл с отметками — что загружено, что — нет, и почему.&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для корреспонденции ==&lt;br /&gt;
Чтобы добавить печатную форму:&lt;br /&gt;
# Откройте '''Справочники''' &amp;gt; '''Печатные формы''' и в левой части окна выберите '''Бланки для корреспонденции'''.&lt;br /&gt;
# В правой части окна в контекстном меню выберите '''Добавить''' и введите название формы.&lt;br /&gt;
# Выделите новую форму в списке и в контекстном меню выберите '''Загрузить из файла'''.&lt;br /&gt;
&lt;br /&gt;
'''Формы для скачивания'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 30%;&amp;quot;|Бланк&lt;br /&gt;
!style=&amp;quot;width: 70%;&amp;quot;|Пояснение&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/post-sticker.doc Шаблон наклейки] для «Почты России»&lt;br /&gt;
|Предназначен для наклеечного термопринтера. Выводит «Кому», «Куда» и индекс «правильным» шрифтом. Для правильного отображения индекса нужно установить шрифт [https://courierexe.ru/download/PECHKIN.TTF «Печкин»].&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/from-sticker.doc Шаблон наклейки] «От кого»&lt;br /&gt;
|Предназначен для наклеечного термопринтера. Выводит «От кого» и «Откуда» по данным отправителя.&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/samples/PD4.xls Форма '''ПД-4'''] для оплаты через Сбербанк&lt;br /&gt;
|Может составляться как на полную стоимость — товар+доставка, так и только на доставку. Может сразу отправляться по e-mail.&lt;br /&gt;
|-&lt;br /&gt;
|[https://courierexe.ru/download/MarketPlace_v1.txt Форма] для маркетплейсов (например Wildberries, OZON, AliExpress)&lt;br /&gt;
|Для каждого маркетплейса создайте отдельного клиента. В карточке номенклатуры товара в поле '''Поставщик''' укажите маркетплейс, в поле '''Артикул''' — штрихкод маркетплейса (запросите у маркетплейса). При печати бланка нужно выбрать, штрихкод какого маркетплейса использовать.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Шаблоны рассылки из адресов ==&lt;br /&gt;
* [https://courierexe.ru/download/samples/OFD.txt Отправка ссылки на электронный чек]. Работает при фискализации через LIFEPAY. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Шаблоны SMS получателю в адресах''' (или e-mail получателю).&lt;br /&gt;
*: '''Примечание'''. В шаблон «зашиты» форматы ссылок на популярные ОФД. Они могут изменяться. Поэтому если ссылка не работает, попробуйте обновить, если не помогает — обратитесь в поддержку.&lt;br /&gt;
* [https://courierexe.ru/download/samples/OFD_Send.txt Отправка ссылки на электронный чек 2.0]. Работает при любой фискализации, для систем начиная с версии 1058 от 20.01.2020. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Шаблоны SMS получателю в адресах''' (или e-mail получателю).&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для манифестов ==&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для манифестов». После добавления закройте программу, откройте заново, и документ появится на закладке «Манифесты», в контекстном меню «Сопр. документы» к манифесту.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/IMlogisticsManifest.xls '''IM Logistics''' реестр] Префикс штрих-кода должен находиться в поле «Источник информации» карточки клиента. Порядковый номер заказа в поле «Штрих-код клиента».&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/IMSticker.xls '''IM Logistics''' печать наклеек ] Для добавления логотипа загрузите файл с расширением bmp, jpg или gif, и с названием «logo» в прикрепленные файлы к клиенту «IM Logistics». Префикс штрих-кода должен находиться в поле «Источник информации» карточки клиента. Порядковый номер заказа в поле «Штрих-код клиента». Печать наклеек производится на наклеечном термо-принтере.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/RPS.xls '''РПС (Русская почтовая служба)''' реестр]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/flippost.xls '''Флиппост''' реестр]&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/topdelivery_sticker.xls '''TopDelivery''' печать наклеек] Данная обработка печатает наклейки по правилам TopDelivery ТОЛЬКО после передачи заказов через [[Интеграция с другими системами|штатную интеграцию с TopDelivery]]. Обязательно впишите в файле префикс штрих-кодов, назначенный вам в TopDelivery. Работает ТОЛЬКО начиная с версии программы 2008.0.0.570 от 05.08.2015. [https://courierexe.ru/download/manifest/TopDelSticker.txt '''Версия 2'''] (работает начиная с версии 2008.0.0.744 от 03.02.2017).&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/CSE.xls '''КСЭ (Курьер сервис экспресс)''' реестр ] Данная обработка формирует реестр по правилам «Курьер сервис экспресс». Обязательно заполните форму на листе «Данные»! Работает ТОЛЬКО начиная с версии программы 2008.0.0.550 от 21.05.2015. Обратите внимание на наличие [[Интеграция с другими системами|интеграции]].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/torg_12_manifest_1.xls '''ТОРГ-12''' вариант 1] Формируется один документ с одной строкой на манифест.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/torg_12_manifest_2.xls '''ТОРГ-12''' вариант 2] Формируется один документ с одной строкой на каждый заказ в манифесте.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Glavpunkt_CSV.xls '''Главпункт''' экспорт реестра в CSV] Можно выделить много манифестов и выгрузить все.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Glavpunkt.xls '''Главпункт''' реестра в XLS].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/Maxipost_reestr.xls '''Максипост''' реестр], [https://courierexe.ru/download/manifest/Maxipost_act.xls Акт приема-передачи]. Обратите внимание на возможность автоматического присвоения системой нумерации отправлений по диапазону подрядчика.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/SamZaberu_reestr.xls '''Сам Заберу''' реестр]. В качестве акта приема-передачи использовать [https://courierexe.ru/download/manifest/torg_12_manifest_2.xls ТОРГ-12 вариант 2]&lt;br /&gt;
&lt;br /&gt;
* [http://courierexe.ru/download/manifest/Logsys_reestr.xls '''Logsis''' реестр] Формируется один документ с одной строкой на каждый заказ в манифесте. Перед загрузкой в систему необходима настройка.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/professionel.xls '''Профессионал''' реестр]. Для компании &amp;lt;nowiki&amp;gt;https://www.pro-cour.ru/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/dost_guru.xls '''Доставка-гуру''' реестр]. Для компании Доставка-гуру.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/sdek.txt '''Наклейка СДЭК'''] с кодом подрядчика.&lt;br /&gt;
&lt;br /&gt;
=== Печатные формы этикеток при комплектации в манифесты ===&lt;br /&gt;
Текст нужно вставить в поле «Скрипт для выполнения в манифестах» на закладке «Дополнительно» карточки филиала. Позволяет формировать этикетки для маркировки отправлений в процессе комплектации манифеста.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/SDEK.txt '''Наклейка СДЭК'''].&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/5Post.txt '''Наклейка 5Пост''']. Во второй строке текста нужно внести номер, присвоенный вашей компании.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/TopDelivery.txt '''Наклейка TopDelivery''']. Во второй строке текста нужно внести номер, присвоенный вашей компании.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/manifest/onscan/RusPost.txt '''Наклейка Почта России'''].&lt;br /&gt;
&lt;br /&gt;
== Печатные формы для актов передачи корреспонденции ==&lt;br /&gt;
Добавлять в «Справочники» — «Печатные формы» — «Документы для актов передачи корреспонденции». После добавления закройте программу, откройте заново, и документ появится в контекстном меню «Сопроводительные документы» к акту передачи корреспонденции.&lt;br /&gt;
&lt;br /&gt;
* [https://courierexe.ru/download/samples/torg_12_apk.xls ТОРГ-12]&lt;br /&gt;
&lt;br /&gt;
== Получение списка названий полей для использования в печатных формах ==&lt;br /&gt;
Система позволяет производить выгрузку необходимой информации из определенных полей (например, из карточки клиента или из карточки сотрудника) в печатную форму документа в формате MS Word или MS Excel. Делается это при помощи названия поля, заключенного в теги '''&amp;lt;Name&amp;gt;'''. Например, при составлении документа «Договор клиента» требуется подстановка названия фирмы из карточки клиента в исходный документ. C полным списком доступных полей можно ознакомиться путем создания новой записи в определенном разделе печатных форм (например, «Документы для клиентов») и загрузке в него [https://courierexe.ru/download/samples/echo.doc файла в формате MS Office с содержимым — командой '''%echo%''']. Система при построении этой печатной формы выдаст полный список доступных полей и их названий. Полученные названия полей можно использовать при построении различных пользовательских печатных форм.&lt;br /&gt;
&lt;br /&gt;
== Отчеты для контролирующих органов == &lt;br /&gt;
&lt;br /&gt;
=== Отчет для организаций с почтовой лицензией ===&lt;br /&gt;
 &lt;br /&gt;
* [https://courierexe.ru/download/userfunc/ACLreport.txt  Формирование отчета в модуле автоматизации.]  Задание должно запускаться после полуночи - отчет формируется за предыдущий день. Последняя строка в скрипте - сохранение файла, нужно прописать актуальную директорию, куда сохранять.&lt;br /&gt;
&lt;br /&gt;
== Локализация для разных стран ==&lt;br /&gt;
&lt;br /&gt;
=== Казахстан ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/kazah_VAT.xls Счет для Казахстана с НДС]. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Счета'''.&lt;br /&gt;
&lt;br /&gt;
=== Украина ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/ukraine.xls Счет для Украины] ОДНОСТРОЧНЫЙ. Добавлять в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Счета'''.&lt;br /&gt;
&lt;br /&gt;
=== Белоруссия ===&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/bel_std.xls Белорусский счет], [https://www.courierexe.ru/download/prnforms/bel_std_sk.xls Белорусский счет со скидкой], [https://www.courierexe.ru/download/prnforms/bel_std_ms.xls Белорусский многострочный счет (поддерживает вывод поля «Наименование» из карточки счета)]&lt;br /&gt;
* [https://www.courierexe.ru/download/prnforms/belpack/zakaz-poruch.xls Бланк заказ-поручение]. Нужно добавить в '''Справочники''' &amp;gt; '''Печатные формы''' &amp;gt; '''Документы при выдаче курьеру''' (4-й пункт снизу). Он появится (возможно, нужно перевойти в программу) на вкладке '''Выдача''', кнопка '''Печать''' &amp;gt; '''Сопроводительные документы'''. Формирует для всех заказов, выданных курьеру «Заказ-Поручение». Адрес вашей компании берется из карточки в '''Справочники''' &amp;gt; '''Филиалы'''. Номер путевого листа формируется при формировании [[Путевые листы|путевого листа]], поэтому запускать этот бланк правильно после путевого листа.&lt;br /&gt;
*[https://www.courierexe.ru/download/prnforms/TTNBEL.xlsx ТТН + приложение]&lt;br /&gt;
*[https://www.courierexe.ru/download/prnforms/PUTBEL.xlsx Путевой лист]&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=14209</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=14209"/>
				<updated>2022-07-12T06:05:55Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Прайс лист клиента */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
GetDefaultPrinter - Возвращает имя текущего активного принтера.&lt;br /&gt;
&lt;br /&gt;
SetDefaultPrinter(Printer) – Запоминает предыдущий активный принтер и устанавливает новый текущий принтер. Printer - имя принтера. При необходимости нескольких последовательных вызовов SetDefaultPrinter рекомендуется между вызовами использовать RestoreDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
RestoreDefaultPrinter - Устанавливает активным принтер, который был текущим перед последним вызовом SetDefaultPrinter.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''VoiceReadStr(str)''' – Озвучивает фразу str голосовым уведомлением доступными словами из базы. Может содержать тег &amp;quot;{break_off}&amp;quot; для того, чтобы сделать эту фразу не пропускаемой в очереди воспроизведения.&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
GetDuplexPrinter - возвращает имя принтера выбранного для двусторонней печати, если принтер не выбран, возвращиет пустую строку&lt;br /&gt;
&lt;br /&gt;
PrintAttachPDFPage(Code, FileName, Page, Printer) - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
AttachPDFToText(Code, [TextFileName]) - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с уровнем (pricelevel) меньше текущего.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14205</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14205"/>
				<updated>2022-07-07T10:52:55Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка документов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
CustomGivnAct - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintNakls - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
OnAfterPrintNakls - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintOneNakl - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnAfterPrintOneNakl - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintSticker - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
OnAfterItemPrint - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
PrintCustomSticker - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
OnGivnStateChanged - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
OnAfterGivnStateChanged - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
OnBeforeAddressSave - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). Тег %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
OnAfterAddressSave - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
OnBarScan - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
AfterAddressAcceptance - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
BeforeAddressAcceptance - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
OnAddToShippingPlace - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
GetTypeShippingPlace - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnBeforePlanToManifest - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
OnBeforeScanToManifest - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
OnBeforePlanning - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
DAILY - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
OnGivnKurierStateChanged - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
OnBeforeGivnStatus - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
OnBeforeClientSave - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
CustomAddressPrnForm2 - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
GetTypeShippingPlace  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
OnShelvingBarScan - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
AdditionalStringForSMA - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
CustomBillDetaling - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
OnSchetChanged  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
ExceptionsForAPK  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OnOrderCountCalc -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
OnGetZakazCount - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
OnSMABarcodeScan - событие вызывается при сканирвании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
OnPaintSMAColumns - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients, а так же пользовательские поля клиентов, называющиеся ufX, где X - номер поля (в статусах).  Функция должна возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется).&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник, 2 - треугольник, 3 - увеличенный треугольник, чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
OnEveryStartApp - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
OnEveryCloseApp - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
OnBarScan - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
OnMapBeforeGeolocation - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OnSyncInsert - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
OnSyncUpdate - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
OnCalcSalary - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
OnTicketSetCusr - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14191</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=14191"/>
				<updated>2022-06-15T10:27:20Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка документов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
CustomGivnAct - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintNakls - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
OnAfterPrintNakls - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintOneNakl - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnAfterPrintOneNakl - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintSticker - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
OnAfterItemPrint - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
PrintCustomSticker - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
OnGivnStateChanged - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
OnAfterGivnStateChanged - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
OnBeforeAddressSave - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). Тег %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
OnAfterAddressSave - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
OnBarScan - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
AfterAddressAcceptance - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
BeforeAddressAcceptance - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
OnAddToShippingPlace - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
GetTypeShippingPlace - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnBeforePlanToManifest - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую. Объявление события отменяет системную проверку на возможность доставки адреса филиалом получателя, ее нужно реализовывать в этом событии.&lt;br /&gt;
&lt;br /&gt;
OnBeforeScanToManifest - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
OnBeforePlanning - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
DAILY - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
OnGivnKurierStateChanged - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера. В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
OnBeforeGivnStatus - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
OnBeforeClientSave - событие срабатывает перед сохранением изменений в карточке клиента. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметров переданы %code% (содержит код клиента) и объект fieldlist (полный аналог addressrecord в доп. услугах), который содержит ещё не сохранённую информацию о карточке клиента, а так же все её пользовательские поля. Если результат функции -1, то происходит отмена сохранения без ошибки (abort).&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
CustomAddressPrnForm2 - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
GetTypeShippingPlace  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
OnShelvingBarScan - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
AdditionalStringForSMA - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
CustomBillDetaling - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
OnSchetChanged  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
ExceptionsForAPK  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OnOrderCountCalc -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
OnGetZakazCount - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
OnSMABarcodeScan - событие вызывается при сканирвании штрихкода АПК в списке актов. %code% - код АПК (sendmoneyact.code)&lt;br /&gt;
&lt;br /&gt;
OnPaintSMAColumns - вызывается при прорисовке таблицы в форме списка АПД/АПК. В функцию передается DataSet, содержащий поля таблиц SendMoneyAct и Clients. Должно возвращать строку следующей структуры:&lt;br /&gt;
Поле1_таблицы, Цвет_фона, Поле2_таблицы, Цвет_фона и т.п. Возврат нечетного числа параметров эквивалентен возврату пустой строки (цвет не меняется).&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник, 2 - треугольник, 3 - увеличенный треугольник, чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
OnEveryStartApp - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
OnEveryCloseApp - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
OnBarScan - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
OnMapBeforeGeolocation - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OnSyncInsert - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
OnSyncUpdate - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
OnCalcSalary - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
OnTicketSetCusr - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=14075</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=14075"/>
				<updated>2022-05-06T11:41:19Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Функции работы с датой и временем */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней(по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1],[DefaultHolidayVarNum=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней (по умолчанию); 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
PrintAttachPDFPage(Code, FileName, Page, Printer) - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
AttachPDFToText(Code, [TextFileName]) - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=14074</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=14074"/>
				<updated>2022-05-06T11:38:42Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Функции работы с датой и временем */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
FormatTextBlob(s) - строка s содержит файл, функция перекодирует переданную строку в байты, используется для заполнения полей формата blob.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0], [DefaultHolidayVarNum=1]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000. Параметр DefaultHolidayVarNum - использовать для расчета справочник: 1 - выходных дней; 2 - выходных дней для доставки по городу; 3 - выходных дней для доставки&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel. Для работы без установленного MS Excel предусмотрен объект TDirectExcel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ввод данных'''''&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Ячейки'''''&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Строки'''''&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Столбцы'''''&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Листы'''''&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа. Если лист с таким номером не существует - он будет создан (и все листы до него). Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Форматирование'''''&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Цвета'''''&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Копи-паст'''''&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Изображения'''''&lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Вывод'''''&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования'''''&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|-&lt;br /&gt;
|GetSQL&lt;br /&gt;
|Для отладки. Возвращает последний SQL запрос переданный в методы Open, Query, GetSQLValue&lt;br /&gt;
|-&lt;br /&gt;
|ExportExcel&lt;br /&gt;
|Для отладки. Выгружает в эксель содержимое датасета. Можно использовать в незнакомом окружении для понимания передаваемых полей в : шаблонах, печатных формах и т.д. Аналог команды %echo% в шаблонах, на случай если она не сработает.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
PrintAttachPDFPage(Code, FileName, Page, Printer) - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
AttachPDFToText(Code, [TextFileName]) - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13865</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13865"/>
				<updated>2022-03-31T11:47:01Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
PrintAttachPDFPage(Code, FileName, Page, Printer) - печатает страницу из вложенного файла PDF. Code - код вложения (attachment), Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
AttachPDFToText(Code, [TextFileName]) - преобразует файл PDF из вложений в текст. Code - код вложения (attachment), TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13703</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13703"/>
				<updated>2022-03-11T11:14:46Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
PrintAttachPDFPage(Code, FileName, Page, Printer) - печатает страницу из прикрепленного к корреспонденции файла PDF. Code - код адреса, FileName - имя прикрепленного файла, Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
AttachPDFToText(Code, FileName, [TextFileName]) - преобразует прикрепленный к корреспонденции  файл PDF в текст. Code - код адреса, FileName - имя прикрепленного файла, TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13701</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13701"/>
				<updated>2022-03-11T11:07:29Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
PrintAttachPDFPage(Code, FileName, Page, Printer) - печатает страницу из прикрепленного к корреспонденции файла PDF. Code - код адреса, FileName - имя прикрепленного файла, Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
AttachPDFToText(Code, FileName, [TextFileName]) - преобразует к корреспонденции прикрепленный файл PDF в текст. Code - код адреса, FileName - имя прикрепленного файла, TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13700</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13700"/>
				<updated>2022-03-11T11:06:59Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
PrintAttachePDFPage(Code, FileName, Page, Printer) - печатает страницу из прикрепленного к корреспонденции файла PDF. Code - код адреса, FileName - имя прикрепленного файла, Page - номер страницы, Printer - 0 = принтер A4, 1 = принтер этикеток. &lt;br /&gt;
&lt;br /&gt;
AttachPDFToText(Code, FileName, [TextFileName]) - преобразует к корреспонденции прикрепленный файл PDF в текст. Code - код адреса, FileName - имя прикрепленного файла, TextFileName - имя текстового файла, в который записывается результат (если не указан, используется временный файл). Возвращает текст в виде строки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13547</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13547"/>
				<updated>2022-02-04T09:41:20Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TExcel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться c обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13546</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13546"/>
				<updated>2022-02-04T09:40:22Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TExcel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
NumberFormat(x1, y1, x2, y2, Format) - Устанавливает формат вывода чисел в указанном диапазоне ячеек. Например, если Format='0.00' - числа будут выводиться обязательными 2 знаками после десятичного разделителя.&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
RuleName(alias) - Выдает полный путь в дерева прав по псевдониму права.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13201</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13201"/>
				<updated>2021-12-10T07:56:03Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TSMS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID (для провайдера iVoice - идентификатор сценария (кампании)). Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдеров BitCall и iVoice. Для BitCall по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием). Для iVoice по умолчанию подразумевается параметр 'response', при этом будет возвращен JSON  с ответами абонента на заданные вопросы (в зависимости от сценария)&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13051</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=13051"/>
				<updated>2021-11-11T09:00:04Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TExcel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0, width=0, height=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки, width, height (не работает для DirectExcel) - ширина и высота области рисунка в пойнтах-единицах Excel &lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
'''SelDistAddr(s)''' – Возвращает строку для вставки в select запрос, для вывода поля с упрощенным адресом. Принимает один необязательный строковый параметр - алиас таблицы из которой будет упрощаться поле address, по умолчанию &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID. Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдера BitCall, по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием).&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл SrcPath в архив и располагает его по пути ZipPath. - ZipPath содержит имя файла в архиве, при необходимости можно указать каталог; &lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, /*ZipPath*/) - '''параметр ZipPath временно не работает'''. Добавляет файл из строки Data в архив и располагает его по пути ZipPath.  -ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=12864</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=12864"/>
				<updated>2021-10-11T13:44:13Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBaseUtils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [DeliveryDateMode=0, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; DeliveryDateMode: 0 - установить план. дату доставки текущим рабочим днем, 1 - установить план. дату доставки следующим рабочим днем, 2 - установить план. дату доставки равной планируемой дате оплаты АПД; Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). &lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID. Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдера BitCall, по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием).&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, ZipPath) - Добавляет файл из строки Data в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=12861</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=12861"/>
				<updated>2021-10-08T11:51:49Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Объект TBaseUtils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName][, PriorityCountry])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [Delivery_Tomorrow=False, Delivery=True, Delivery_PlanPay=False])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; Delivery_Tomorrow - установить план. дату доставки следующим рабочим днем или сегодня (по умолчанию , сегодня); Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Delivery_PlanPay - установить план. дату доставки равной планируемой дате оплаты АПД, если она установлена (если false или дата оплаты АПД план. не установлена - дата устанавливается в соответствии c Delivery_Tomorrow). Возвращает код созданного адреса.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID. Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдера BitCall, по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием).&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, ZipPath) - Добавляет файл из строки Data в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=12855</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=12855"/>
				<updated>2021-10-07T07:40:54Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: /* Настройка всплывающих окон */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
CustomGivnAct - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintNakls - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
OnAfterPrintNakls - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintOneNakl - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnAfterPrintOneNakl - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintSticker - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
OnAfterItemPrint - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
PrintCustomSticker - Функция позволяет установить пользовательскую печатную форму для наклеек (из интерфейса &amp;quot;Печать ведомостей/наклеек&amp;quot;). Вызывается если выбран тип наклейки 15 (переменная StickerForm). Содержит %RectLeft%, %RectTop%, %RectRight%, %RectBottom% - границы прямоугольника на холсте принтера, в которые надо печатать (для поддержки табличной печати на A4), %RecNumber% - номер текущей записи датасета, %CurrentBarCode% - ШК, рассчитанный в зависимости от параметров в интерфейсе &amp;quot;Печать ведомостей/наклеек&amp;quot;. Также содержит весь датасет, использующийся в других типах наклеек. В момент вызова функции, принтер уже запущен и начат документ, объект TPrinter в функции создавать не нужно, необходимо только создать объект TCanvas, он создастся как ссылка на текущий холст принтера.&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
OnGivnStateChanged - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратнные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
OnAfterGivnStateChanged - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
OnBeforeAddressSave - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). Тег %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
OnAfterAddressSave - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
OnBarScan - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
AfterAddressAcceptance - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
BeforeAddressAcceptance - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
OnAddToShippingPlace - событие после добавления корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
GetTypeShippingPlace - событие перед добавлением корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnBeforePlanToManifest - событие перед планированием корреспонденции в манифест. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %AddrList% - список кодов адресов через запятую&lt;br /&gt;
&lt;br /&gt;
OnBeforeScanToManifest - событие перед добавлением корреспонденции в мешок манифеста. Предназначено для дополнительных проверок. Выполняется до транзакции. Содержит %code% - код манифеста, %Address% - код помещаемого адреса&lt;br /&gt;
&lt;br /&gt;
OnBeforePlanning - событие перед планированием одного или нескольких отправлений на курьера. Содержит %сode% - код курьера, %AddressCodes% - код(ы) планируемых корреспонденций.  &lt;br /&gt;
&lt;br /&gt;
DAILY - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
OnGivnKurierStateChanged - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера.В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
OnBeforeGivnStatus - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
CustomAddressPrnForm2 - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
GetTypeShippingPlace  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
OnShelvingBarScan - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
AdditionalStringForSMA - задает дополнительные условия для формирования АПД (наиболее часто: разделения актов на нал. и безнал, помимо этого практически неограниченные возможности по изменению условий для отбора корреспонденций в акт, учета их доставленности и т.п.) Содержит %code% - код клиента, переменную %ActPayType% со значениями типов оплаты входящих в акт отправлений: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный,&amp;quot;all&amp;quot; - все, а ткаже %ActDateTo% - с датой, до которой создается акт. Может возвращать строку, разделенную символами переноса строки. (На 17.09.2021 в возвращаемой строке предусмотрен 1 символ переноса, т.е. строка состоит из двух частей.) В этом случае часть строки до первого переноса будет использоваться в запросе как доп. условие отбора, часть строки после первого символа пеерноса - в качестве дополнительного условия для определения &amp;quot;выполненности&amp;quot; доставки (поле specialsma.Made). С помощью второго модификатора можно сделать например так, чтобы корреспонденции с незаполненными датой/временем вручения считались доставленными. &lt;br /&gt;
&lt;br /&gt;
CustomBillDetaling - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
OnSchetChanged  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
ExceptionsForAPK  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OnOrderCountCalc -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
OnGetZakazCount - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник, 2 - треугольник, 3 - увеличенный треугольник, чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
OnEveryStartApp - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
OnEveryCloseApp - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
OnBarScan - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
OnMapBeforeGeolocation - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OnSyncInsert - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
OnSyncUpdate - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
OnCalcSalary - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
OnTicketSetCusr - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=12778</id>
		<title>Руководство программиста</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0&amp;diff=12778"/>
				<updated>2021-09-17T07:48:22Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Основные положения ==&lt;br /&gt;
&lt;br /&gt;
В систему «Курьерская служба 2008» встроен внутренний интерпретируемый язык программирования. Среда состоит из базовой функциональности, и дополнительно создаваемых объектов. Некоторые объекты автоматически создаются средой перед запуском интерпретатора для предоставления доступа к контексту, в котором работает скрипт. Все типы данных приводятся друг к другу автоматически, иногда при необходимости можно использовать функции приведения типов. &lt;br /&gt;
&lt;br /&gt;
Как интерпретатор приводит типы:&lt;br /&gt;
&lt;br /&gt;
1.	При использовании значения как параметр функции интерпретатор автоматически приводит значение к типу, необходимому функции.&lt;br /&gt;
&lt;br /&gt;
2.	При операциях сложения, а также логических операциях, операнды приводятся к строке если хотя бы один из них имеет тип «строка». Например:&lt;br /&gt;
3.3+5		-&amp;gt;  8.3&lt;br /&gt;
‘3.3’+5		-&amp;gt;  ‘3.35’&lt;br /&gt;
подобную проблему можно решить принудительно преобразовав тип:&lt;br /&gt;
float(‘3.3’)+5	-&amp;gt;  8.3&lt;br /&gt;
&lt;br /&gt;
3.	При операциях умножения, деления и вычитания операнды приводятся к числу с плавающей точкой, однако если результат выполнения операции получается целым числом, то он приводится к целочисленному типу.&lt;br /&gt;
&lt;br /&gt;
Как работают функции приведения типов:&lt;br /&gt;
&lt;br /&gt;
1.	При преобразовании строки к числу: функция «читает» строку до первого символа, не позволяющего создать число с плавающей точкой, при этом разделителем целой и дробной частей может быть как точка так и запятая. Если приведение производится к целочисленному типу, то после этого происходит округление. Например:&lt;br /&gt;
float('3.6qwerty735')	-&amp;gt;  3.6&lt;br /&gt;
int('3.6qwerty735')	-&amp;gt;  4&lt;br /&gt;
&lt;br /&gt;
2.	При преобразовании к булевому типу ложью считается пустая строка либо число 0, все остальное - истина&lt;br /&gt;
&lt;br /&gt;
3.	При преобразовании булевого типа к числу истина преобразуется в 1, ложь – в 0. Такое преобразование позволяет использовать сложение и умножение в качестве логических «ИЛИ» и «И» соответственно:&lt;br /&gt;
if((5=5)+(6=7), &amp;lt;a&amp;gt;, [b]) – условие истинно, выполнится код «a».&lt;br /&gt;
&lt;br /&gt;
4.	При преобразовании булевого типа к строке сначала происходит преобразование к числу:&lt;br /&gt;
(5=5)+'qwerty'	-&amp;gt;  ‘1qwerty’&lt;br /&gt;
&lt;br /&gt;
== Описание синтаксиса ==&lt;br /&gt;
&lt;br /&gt;
Команды разделяются точкой с запятой. Параметры функций разделяются запятыми. Каждая команда (даже цикл while) является функцией, возвращающей некоторое значение. Результатом выполнения составной команды (последовательности функций, разделенных точкой с запятой), является результат выполнения последней функции. Имена переменных, функций, объектов, а также их свойств и методов не чувствительны к регистру.&lt;br /&gt;
Константы: константы бывают целочисленными, дробными и строковыми. Значения целочисленных и дробных констант указываются «как есть» (в этом случае разделитель целой и дробной частей – точка), шестнадцатеричные значения начинаются с символа «$» и, если первая цифра – буква, она упреждается цифрой 0, а строковые – в одинарных кавычках. При этом, если внутри строковой константы встречается символ одинарной кавычки он должен быть задвоен, для указания интерпретатору того, что он не является признаком конца константы.&lt;br /&gt;
Операции сравнения: &amp;gt;, &amp;lt;, =, !  - Больше, меньше, равно, не равно соответственно.&lt;br /&gt;
Логические операции: + (ИЛИ), *  (И).&lt;br /&gt;
Арифметические операции: +, -, *, /&lt;br /&gt;
Операция конкатенации строк: +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Функциональность базового объекта ===&lt;br /&gt;
&lt;br /&gt;
SET($a, a) – присваивает переменной (1-й параметр) значение второго параметра. При отсутствии переменной – создает ее. Имена переменных должны начинаться с символа «$», а следующий символ не должен быть цифрой. Возвращает новое значение переменной. Функция используется только для задания значений переменных. Не допускается использования для задания значений свойств объектов. Для этого используются соответствующие методы этих объектов.&lt;br /&gt;
&lt;br /&gt;
IF(a,b,c) или IF(a,b)  – Условный оператор. В первом случае возвращает b, если a истинно (не равно нулю или пустой строке), иначе – c. Во втором случае – возвращает a, если оно истинно, иначе – b.&lt;br /&gt;
&lt;br /&gt;
WHILE(a, b) – Оператор цикла. Выполняет b пока a истинно:&lt;br /&gt;
set($i, 10);&lt;br /&gt;
set($sum, 0);&lt;br /&gt;
while($i&amp;gt;0, set($sum, $sum+$i); set($i, $i-1));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
FOR($a, b, c, d) – Оператор цикла. Выполняет d пока $a последовательно присваиваются значения от b до с включительно:&lt;br /&gt;
	set($sum, 0);&lt;br /&gt;
for($i, 1, 10, set($sum, $sum+$i));&lt;br /&gt;
$sum&lt;br /&gt;
Результат – 55&lt;br /&gt;
&lt;br /&gt;
NEW(ClassName, InstanceName) – Создает экземпляр класса ClassName, назначает ему имя InstanceName. Возвращает порядковый номер созданного объекта. Доступ к свойствам и методам объектов осуществляется по имени объекта и имени свойства/метода, разделенным точкой. Именем объекта может быть и пустая строка, тогда доступ к его свойствам и методам будет осуществляться без указания имени, и, в случае совпадения имен свойств и/или методов со стандартными или свойствами/методами других объектов, использоваться будут соответствующие свойства/методы объекта, созданного ранее, а также такой объект невозможно уничтожить до окончания выполнения скрипта. Все объекты созданные во время выполнения скрипта уничтожаются автоматически после окончания его выполнения.&lt;br /&gt;
&lt;br /&gt;
FREE(InstanceName) – Уничтожает объект с именем InstanceName. Возвращает 0. В случае отсутствия объекта с заданным именем вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
ShowObjects – Возвращает список созданных объектов – названия классов и имена.&lt;br /&gt;
&lt;br /&gt;
ERROR(message) – Вызывает ошибку с текстом message.&lt;br /&gt;
&lt;br /&gt;
SHOWMESSAGE(message) – Отображает диалоговое окно с текстом message, останавливает выполнение скрипта до закрытия окна пользователем.&lt;br /&gt;
&lt;br /&gt;
SimpleAskUser(Message) – Выводит диалоговое окно с текстом Message и кнопками «Да» и «Нет». Возвращает 1, если  пользователь нажал кнопку «Да», иначе – 0.&lt;br /&gt;
&lt;br /&gt;
TRY(a) – Выполняет a в «защищенном от ошибки» режиме. Если в процессе выполнения a возникает ошибка, возвращает текст ошибки, иначе – 0 (ложь).&lt;br /&gt;
&lt;br /&gt;
REM(….) – Код в скобках игнорируется (комментарий).&lt;br /&gt;
&lt;br /&gt;
EXEC(FileName, Params, Wait, WindowState) – Запускает внешнее приложение FileName с параметрами Params. Если Wait истинно – ожидает завершение процесса. Для WindowState доступны следующие числовые значения:&lt;br /&gt;
	0 - SW_HIDE&lt;br /&gt;
	1 - SW_SHOWNORMAL (по-умолчанию)&lt;br /&gt;
	3 - SW_MAXIMIZE&lt;br /&gt;
	6 - SW_MINIMIZE&lt;br /&gt;
Функция возвращает истину если приложение запущено успешно. Иначе – Ложь.&lt;br /&gt;
В случае успеха, при параметре Wait – истина кладет в переменную $LastResult код завершения приложения.&lt;br /&gt;
&lt;br /&gt;
=== Строковые функции ===&lt;br /&gt;
&lt;br /&gt;
UpCase(s) – возвращает строку s в верхнем регистре.&lt;br /&gt;
&lt;br /&gt;
LCase(s) – возвращает строку s в нижнем регистре.&lt;br /&gt;
&lt;br /&gt;
Len(s) – возвращает количество символов в строке s.&lt;br /&gt;
&lt;br /&gt;
Pos(s, substr) – возвращает номер первого символа первого включения подстроки substr в строку s, возвращает 0, если включения подстроки отсутствуют. Поиск не чувствителен к регистру.&lt;br /&gt;
&lt;br /&gt;
Param(s, i) – возвращает i-й элемент строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
ParamsCount(s) - возвращает количество элементов строки s, разделенной запятыми на элементы.&lt;br /&gt;
&lt;br /&gt;
Left(s, i [,full] ) – возвращает i первых символов строки s. Параметр i, может быть строкой, тогда он считается разделителем и функция, возвращает строку слева от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Mid(s, i, j) - возвращает подстроку из s начиная с i символа и длиной j символов&lt;br /&gt;
&lt;br /&gt;
Right(s, i [,full]) – возвращает i последних символов строки s. Параметр i, может быть строкой, тогда он считается разделителем, функция ищет разделитель с конца строки, и возвращает строку справа от разделителя. Параметр full разрешает функции вернуть всю строку s, если по параметру i ничего не нашли, параметр не обязательный, по умолчанию выключен.&lt;br /&gt;
&lt;br /&gt;
Reverse(s) - возвращает строку s задом-наперед. Полезно например для поиска с конца функций Pos().&lt;br /&gt;
&lt;br /&gt;
Char(i) – возвращает символ с кодом i.&lt;br /&gt;
&lt;br /&gt;
Ord(s) – возвращает код первого символа строки s.&lt;br /&gt;
&lt;br /&gt;
Replace(s, strFind1, strReplace1, [ strFind2, strReplace2, ... ], [caseInsensetive]) - возвращает строку s, в которой все включения строк strFind заменены строкой strReplace. Параметры поиска и замены всегда должны быть в паре и их может быть несколько. caseInsensetive - неучитывать регистр, не обязательный параметр, по умолчанию включен.&lt;br /&gt;
&lt;br /&gt;
RemSpace(s) – возвращает сроку s без начальных и конечных запятых и пробелов, а также начальных точек.&lt;br /&gt;
&lt;br /&gt;
SumStr(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''с добавлением валюты'''. Необязательные параметры captions - позволяет изменить название валюты, формат строки может зависеть от текущего языка(посмотреть формат можно в &amp;quot;Справочники&amp;quot;-&amp;quot;Статусы&amp;quot;-&amp;quot;32 Валюты&amp;quot;, в разделе &amp;quot;Дополнительная информация&amp;quot;). Language - код языка на котором необходимо вывести сумму прописью. По умолчанию если не обязательные параметры опущены, используются региональные настройки в переменных.&lt;br /&gt;
&lt;br /&gt;
NumToStrSimple(f [, captions, language]) – Возвращает сумму f, написанную прописью, по умолчанию '''без валюты'''. Параметры идентичны функции SUMSTR.&lt;br /&gt;
&lt;br /&gt;
FullNameToShort(Name) – Возвращает фамилию и инициалы по полному ФИО Name.&lt;br /&gt;
&lt;br /&gt;
MonthName1(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в именительном падеже.&lt;br /&gt;
&lt;br /&gt;
MonthName2(m) – Возвращает имя месяца с номером m с большой буквы на русском языке в родительном падеже.&lt;br /&gt;
&lt;br /&gt;
StrForXML(s) - Подготавливает строку к парсингу как xml: Если находит в строке подстроку &amp;quot;UTF-8&amp;quot; - перекодирует ее из utf-8 в win-1251, убирает начальный знак вопроса, если такой встречается.&lt;br /&gt;
&lt;br /&gt;
FixedIntToStr(i, len[, char]) - Возвращает целое число i дополненное слева символами char (по-умолчанию - &amp;quot;0&amp;quot;) до длины len.&lt;br /&gt;
&lt;br /&gt;
Translate(format, [param1, param2, ...]) - Функция перевода строки format в язык пользователя. Строка format может содержать параметры %s, %d - строка и число соответственно. &lt;br /&gt;
&lt;br /&gt;
====Функции перекодировки====&lt;br /&gt;
DecodeStr(s, charset) - Производит перекодировку строки s в кодировку CP1251. Кодировка строки s должна быть заранее известна и может быть :&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866, UNICODE. Имя кодировки следует передавать в точности без лишних символов.&lt;br /&gt;
&lt;br /&gt;
EncodeStr(s, charset) - Производит перекодировку строки s в кодировку charset. Кодировка строки s должна быть CP1251, возможны следующие варианты перекодировки:&lt;br /&gt;
KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866. Имя кодировки следует передавать в точности без лишних символов. UNICODE не работает с версии 2021, в ней строки по умолчанию в кодировке unicode.&lt;br /&gt;
&lt;br /&gt;
Функции EncodeBase64(s), DecodeBase64(s), UrlEncode(s), UTF8Encode(s), UTF8Decode(s), Str2UTF(s) - устарели, используйте EncodeStr, DecodeStr.&lt;br /&gt;
&lt;br /&gt;
====Транслитерация====&lt;br /&gt;
&lt;br /&gt;
Translit(s) - транслитерация строки русского текста s латиницей&lt;br /&gt;
&lt;br /&gt;
UnTranslit(s) - транслитерация строки s с латиницы на русский.&lt;br /&gt;
&lt;br /&gt;
==== Экранирование ====&lt;br /&gt;
&lt;br /&gt;
QUOTEDSTR(s) – квотирует строку s символом «\» (обратный слеш). Возвращает строку s, помещенную между символами одинарной кавычки, при этом все вхождения в строку s символов: «\», «&amp;quot;» и «'» экранируются квотирующим символом, а символы  #0, #10 и #13 заменяются на \0, \n и \r соответственно.&lt;br /&gt;
&lt;br /&gt;
FormatTextXML(s) - квотирует строку s для использования в XML. Производит замены спец. символов для корректности XML-синтаксиса.&lt;br /&gt;
&lt;br /&gt;
FormatTextJSON(s) - переводит строку в формат JSON, экранирует служебные символы.&lt;br /&gt;
&lt;br /&gt;
====Хеширование ====&lt;br /&gt;
&lt;br /&gt;
HMACHash256(key, text) - создаёт хэш по алгоритму SHA256 для проверки целостности сообщения, key - секретный ключ, text - хэшируемое сообщение&lt;br /&gt;
&lt;br /&gt;
MD5Hash(text) - создаёт хеш по алгоритму MD5&lt;br /&gt;
&lt;br /&gt;
SignatureUrl(url) -  Подписывает переданный URL. Функция возвратит переданный URL с добавленным в конце параметром, в котором будет записана подпись.&lt;br /&gt;
&lt;br /&gt;
=== Функции работы с датой и временем ===&lt;br /&gt;
&lt;br /&gt;
CurrTime – возвращает текущее время&lt;br /&gt;
&lt;br /&gt;
CurrDate – возвращает текущую дату&lt;br /&gt;
&lt;br /&gt;
CurrMillisecond - Возвращает количество миллисекунд прошедших с начала текущего года. Используется для точного расчета временных интервалов.&lt;br /&gt;
&lt;br /&gt;
Today - возвращает текущую дату в числовом формате.&lt;br /&gt;
&lt;br /&gt;
Day(dt) – возвращает день месяца даты dt.&lt;br /&gt;
&lt;br /&gt;
Month(dt) – возвращает месяц года даты dt.&lt;br /&gt;
&lt;br /&gt;
Year(dt) – возвращает год даты dt.&lt;br /&gt;
&lt;br /&gt;
DaysInMonth(month, year) – Возвращает количество дней в указанном месяце.&lt;br /&gt;
&lt;br /&gt;
IncDay(dt, [count=1]) – Возвращает дату, увеличенную на count дней.&lt;br /&gt;
&lt;br /&gt;
SQLDate(dt) – Пытается конвертировать dt в дату, вернуть в формате «'YYYY-MM-DD'» (с апострофами), если не удается – возвращает «NULL».&lt;br /&gt;
&lt;br /&gt;
SQLDateToDate(dt) – Переводит дату из SQL-формата в обычный.&lt;br /&gt;
&lt;br /&gt;
DAYSBETWEEN(dt1, dt2) – Возвращает количество дней между датами dt1 и dt2. В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimeBetween(t1, t2) - Возвращает количество минут между временем t1 и t2. Если t1 &amp;gt; t2 то будет показано количество минут между t2 и t1. Параметр t может быть как в формате &amp;quot;HH:MM&amp;quot;, так и в числовом. Если один из параметров не удалось привести к числовому типу возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
WorkDaysBetween(dt1, dt2, [DecreaseFirstDay=0]) - Возвращает количество рабочих дней между датами dt1 и dt2. Параметр DecreaseFirstDay уменьшает dt1 на указанное количество дней (по умолчанию 0).  В случае ошибки приведения dt1 или dt2 к дате возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
TimePeriod(time1, time2) - Оформляет временной период. Возвращаемое значение зависит от наличия значения в параметрах. Возможные варианты: &amp;quot;time1 - time2&amp;quot; , &amp;quot;С time1&amp;quot; , &amp;quot;ДО time2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
StrDateToFloat(s, [time=false]) - Переводит строку с датой s в числовой тип. Если параметр time включен, то в строке s должно быть указано время. Дата должна быть в формате &amp;quot;DD.MM.YYYY&amp;quot;, а время &amp;quot;HH:NN&amp;quot;. Если строку перевести не удалось возвращает 0&lt;br /&gt;
&lt;br /&gt;
IsAWorkDay(dt) - Когда день dt является рабочим, возвращает true. Если произошла ошибка приведения даты возвращает -1000.&lt;br /&gt;
&lt;br /&gt;
IncWorkDay(dt, [count=1]) - Прибавляет count рабочих дней к дате dt. Возвращает дату в числовом формате, если произошла ошибка приведения даты возвращает -1000. По умолчанию параметр count равен 1 и не является обязательным.&lt;br /&gt;
&lt;br /&gt;
Sleep(n) - Задержка выполнения на n миллисекунд.&lt;br /&gt;
&lt;br /&gt;
=== Функции приведения типов ===&lt;br /&gt;
&lt;br /&gt;
INT(v) – возвращает значение типа “целое”, приводя вариантное значение v к числовому типу, а затем округляя его. В том числе используется как функция округления.&lt;br /&gt;
&lt;br /&gt;
FLOAT(v) – возвращает значение типа “число”, приводя вариантное значение v к числовому типу, переводя в число цепочку символов до первого нецифрового символа (либо точки или запятой).&lt;br /&gt;
&lt;br /&gt;
STR(v) – возвращает значение типа “строка”, приводя вариантное значение v к строковому типу.&lt;br /&gt;
&lt;br /&gt;
Date(v) – возвращает дату, либо пустую строку, если не удается конвертировать v в дату&lt;br /&gt;
&lt;br /&gt;
Time(v) – возвращает время, либо пустую строку, если не удается конвертировать v во время. Понимает числовое представление времени.&lt;br /&gt;
&lt;br /&gt;
=== Математические функции ===&lt;br /&gt;
&lt;br /&gt;
ROUNDUP(f) – округляет число f до ближайшего большего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
ROUNDDN(f) – округляет число f до ближайшего меньшего по модулю целого числа.&lt;br /&gt;
&lt;br /&gt;
Money(f, CouldBeEmpty, ZeroFill, MakeSpace) - Округляет число f, до двух знаков после запятой. CouldBeEmpty - заменить число меньше 0,0001  на пустую строку. ZeroFill  - Следить чтобы после запятой было два знака, если будет один, то добавить ноль. MakeSpace - Разделить разряды пробелом.&lt;br /&gt;
&lt;br /&gt;
''Подсказка: для простого округления используется функция int()''&lt;br /&gt;
&lt;br /&gt;
=== Константы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Null – Возвращает пустое значение.&lt;br /&gt;
&lt;br /&gt;
Да, True, Нет, False – константы, соответствующие булевым значениям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прочие функции ===&lt;br /&gt;
&lt;br /&gt;
SQLFloat(f) – Приводит число с плавающей точкой к виду, пригодному для SQL-запроса, т.е. к тексту с разделителем дробной части – точка.&lt;br /&gt;
&lt;br /&gt;
SetPhoneParams(CountryCode, TownCode) – Устанавливает глобальные настройки кода телефонных кодов страны и города соответственно. По-умолчанию код страны – 7, код города – 495.&lt;br /&gt;
&lt;br /&gt;
PhonesCount(s) – Возвращает количество корректных телефонных номеров, найденных в строке s.&lt;br /&gt;
&lt;br /&gt;
GetPhone(s[, n]) – Возвращает n-й корректный телефонный номер, найденный в строке s. Нумерация начинается с 1.&lt;br /&gt;
&lt;br /&gt;
GetEmail(s) – Возвращает все корректные адреса email, найденный в строке s, разделенные запятыми (т.е. готовыми к передаче в функцию SendEmail).&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY).&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject[, FileName]) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера (также к имени сервера можно добавить протокол ssl:// или tls://), порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
GenEan(ID, Code) – Формирует штрих-код EAN 13 Состоящий из идентификатора типа сущности ID и кода сущности Code, Выравнивает до 13-ти символов, первый – «2», последний – контрольная сума.&lt;br /&gt;
&lt;br /&gt;
CheckEan(s) - Проверяет строку s, что она является кодом EAN13.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(FileName,s, encoding = '')- Создает текстовый файл по пути, указанному в FileName (если по указанному пути существует файл с указанным именем, он удаляется и создается новый) и производит запись строки s в созданный текстовый файл. encoding - название кодировки, по умолчанию сохраняет в кодировке ANSI. Доступные названия кодировок: KOI8-R, ISO-8859-5, UTF-8, URL, BASE64, QUOTED-PRINTABLE, CP866.&lt;br /&gt;
&lt;br /&gt;
StrFromFile(FileName) - Читает файл FileName, возвращает в виде строки. При ошибке чтения вызывает ошибку.&lt;br /&gt;
&lt;br /&gt;
DownloadAttachment(code, [savefilepath, tablename='attachment', fieldBlob='file', fieldLDtime='ldtime', fieldUID='uid']) - Функция выкачивает аттачмент из базы, по внутреннему коду - Code, всегда возвращает содержимое файла в виде строки, а также может сохранить файл по указанному пути в параметре savefilepath. По умолчанию, функция настроена на таблицу attachment. Code - внутренний код вложения, tablename - название таблицы, fieldBlob - название поля с содержимым файла, fieldLDtime - название поля с временем последнего изменения строки (для работы кэша). Функция использует кэш и умеет выкачивать файлы зауженные на внешние серверы (http, ftp,sftp, measoft). Для выкачивания с сервера measoft обязательно необходимо указывать параметр fieldUID.&lt;br /&gt;
&lt;br /&gt;
DeleteFile(FileName) - Удаляет файл FileName с диска, возвращает истину, если операция прошла успешно и ложь - в противном случае.&lt;br /&gt;
&lt;br /&gt;
HTTPPOST(host, PostParams, Proxy, ContentType, HTTPUser, HTTPPass, Method, CustomHeader, Reconnects) - Отправляет HTTP запрос по адресу host с данными PostParams. Proxy - объект Proxy, задающий прокси-сервер (по-умолчанию - пусто - не использовать прокси). ContentType - Заголовок ContentType. По-умолчанию - &amp;quot;application/x-www-form-urlencoded; Charset=UTF-8&amp;quot;. HTTPUser и HTTPPass - данные для http-авторизации на сервере. Method - метод отправки запроса, по-умолчанию - &amp;quot;POST&amp;quot;. CustomHeader - дополнение к заголовку, передается  в виде списка параметров через запятую: 1 параметр - добавляет в заголовок SOAPAction, 2 параметр - Authorization. Reconnects - Количество попыток подключения (по-умолчанию - 2), если больше 100 - это таймаут единственной попытки подключения в милисекундах.&lt;br /&gt;
Функция возвращает ответ сервера. &amp;lt;br&amp;gt;&lt;br /&gt;
''Обратите внимание:'' Для имитации отправки данных html-формы методом POST может понадобиться перед передаваемыми параметрами добавить &amp;quot;Data=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FTPPUT(host, User, Pass, FileName[, Active]) - Отправляет файл на FTP/SFTP-сервер. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
FTPGET(host, User, Pass, SourceFileName, DestFileName[, Active]) - Загружает файл SourceFileName с FTP/SFTP-сервера, сохраняет его в файл DestFileName. Параметр Host может иметь в себе путь к папке. По-умолчанию работает в пассивном режиме.&lt;br /&gt;
&lt;br /&gt;
GetTempDir - Возвращает путь к временной папке.&lt;br /&gt;
&lt;br /&gt;
ApplicationDir - Возвращает путь к файлу программы.&lt;br /&gt;
&lt;br /&gt;
Interpretate(script) - Интерпретирует скрипт указанный в script. Выполнение происходит в текущем инстансе.&lt;br /&gt;
&lt;br /&gt;
== Объект TExcel ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к данным документов MS Excel. Требует установленного приложения MS Excel.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
SetFileName(aFileName) – Задает значение свойства FileName.&lt;br /&gt;
&lt;br /&gt;
Open - Открывает файл с именем, заданным свойством FileName. Если имя файла не задано - создает чистую книгу.&lt;br /&gt;
&lt;br /&gt;
OpenFile(aFileName) – Выполняет функции SetFileName и Open. &lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=true][, Col=1][, Row=1]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Если Headered истинно (по-умолчанию), таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются.&lt;br /&gt;
 &lt;br /&gt;
 MyDB.Open('select * from kurier');&lt;br /&gt;
 xl.LoadFromDB(MyDB.Self);&lt;br /&gt;
 xl.DoNotDestroy(true);&lt;br /&gt;
 xl.SetVisible(true);&lt;br /&gt;
&lt;br /&gt;
Post2Sheet(DB[, Headered=true][, Col=1][, Row=1]) -  Почти полный аналог LoadFromDB. В отличии от LoadFromDB если есть открытый файл, выгрузка данных будет выполнена прямо в него.&lt;br /&gt;
&lt;br /&gt;
Align(x1, y1, x2, y2 [,HAlign, VAlign]) - Устанавливает выравнивание данных в указанном диапазоне. HAlign - горизонтальное выравнивание (0 – прижато влево , 1 – по центру , 2 – прижато вправо), VAlign - Вертикальное выравнивание (0 – прижато к верху , 1 – по центру , 2 – прижато к низу).&lt;br /&gt;
&lt;br /&gt;
SetBorders(x1, y1, x2, y2) – Устанавливает границы прямоугольника. Если координаты опущены, или 0 – устанавливает границы всей используемой области.&lt;br /&gt;
&lt;br /&gt;
DoNotDestroy(b) – При уничтожении объекта TExcel (а он уничтожается, как и все остальные объекты автоматически при завершении выполнения скрипта), приложение Excel уничтожается вместе с ним. DoNotDestroy(true) отключает уничтожение приложения.&lt;br /&gt;
&lt;br /&gt;
SetVisible(b) – Устанавливает видимость приложения Excel для пользователя. По-умолчанию – false (не видимо).&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
Cell(x, y, text) – Возвращает значение ячейки, заданной координатами x, y. Необязательный булевый параметр text, в случае истинности, указывает на необходимость возврата данных с учетом формата ячейки, т.е. то, что пользователь видит на экране. Обратите внимание, что если в ячейке число, и ширина столбца не достаточна для отображения, Excel выводит &amp;quot;#####&amp;quot;, что и будет возвращено программе, если text=ИСТИНА. Поэтому перед таким использованием рекомендуется выполнить функцию AutoFit.&lt;br /&gt;
&lt;br /&gt;
SetCell(x, y, v[, x2, y2]) – Устанавливает значение ячейки, заданной координатами x и y, в значение v. Если заданы параметры x2, y2 - объединяет (merge) диапазон ячеек заданных координатами, устанавливает значение объединенной ячейки.&lt;br /&gt;
&lt;br /&gt;
SetSheet(No) – Устанавливает номер текущего листа.&lt;br /&gt;
&lt;br /&gt;
SetSheetName(Name) - Устанавливает название текущего листа.&lt;br /&gt;
&lt;br /&gt;
Close – Закрывает текущий файл.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
ColCount - Возвращает количество столбцов в листе.&lt;br /&gt;
&lt;br /&gt;
SheetsCount – Возвращает количество листов в книге.&lt;br /&gt;
&lt;br /&gt;
AutoFit – Устанавливает автоматическую ширину столбцов.&lt;br /&gt;
&lt;br /&gt;
RowAutoFit - Устанавливает автоматическую высоту строк.&lt;br /&gt;
&lt;br /&gt;
RowInsert(i[, count]) - Вставляет count (по-умолчанию - 1) строк НАД строкой с номером i.&lt;br /&gt;
&lt;br /&gt;
RowDelete(i[, count]) - Удаляет count (по-умолчанию - 1) строк начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
ColumnDelete(i[, count]) - Удаляет count (по-умолчанию - 1) столбцов начиная с номера i.&lt;br /&gt;
&lt;br /&gt;
SheetDelete(i) - Удаляет лист с номером i.&lt;br /&gt;
&lt;br /&gt;
SetRowHeight(r, h[, cnt]) – Устанавливает высоту cnt строк (по-умолчанию 1) начиная со строки r в h пикселей.&lt;br /&gt;
&lt;br /&gt;
SetColWidth (c, w) – Устанавливает ширину столбца c в w символов.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки. Функция закрывает текущий файл, и не может использоваться для файлов, закрытие которых запрещено.&lt;br /&gt;
&lt;br /&gt;
SetRowFontColor(Row,Color) - Устанавливает цвет шрифта в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetRowColor(Row,Color) - Устанавливает цвет фона в строке Row. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetColumnFontColor(Col,Color) - Устанавливает цвет шрифта в столбце Col. Color -  целое значение (RGB) &lt;br /&gt;
&lt;br /&gt;
SetColumnColor(Col,Color) - Устанавливает цвет фона в столбце Col. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellFontColor(Row,Col,Color) -  Устанавливает цвет шрифта в ячейке с координатами [Row,Col]. Color -  целое значение, равное номеру цвета в палитре (ColorIndex,не RGB)&lt;br /&gt;
&lt;br /&gt;
SetCellColor(Row,Col,Color) -  Устанавливает цвет фона в ячейке с координатами [Row,Col]. Color -  целое значение (RGB)&lt;br /&gt;
&lt;br /&gt;
GetRowFontColor(Row)- Возвращает RGB значение цвета шрифта строки Row&lt;br /&gt;
&lt;br /&gt;
GetRowColor(Row)- Возвращает RGB значение цвета фона строки Row&lt;br /&gt;
&lt;br /&gt;
GetColumnFontColor(Col)- Возвращает RGB значение цвета шрифта столбца Col&lt;br /&gt;
&lt;br /&gt;
GetColumnColor(Col)- Возвращает RGB значение цвета фона столбца Col &lt;br /&gt;
&lt;br /&gt;
GetCellFontColor(Row,Col) - Возвращает номер цвета шрифта в палитре (ColorIndex) в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
GetCellColor(Row,Col) - Возвращает RGB значение цвета фона в ячейке  с координатами [Row,Col]&lt;br /&gt;
&lt;br /&gt;
WrapText(x1, y1, x2, y2, value) – Устанавливает перенос текста прямоугольника в значение value. Если координаты опущены, или 0 – устанавливает границы всей используемой области. Для Value значение по-умолчанию - true.&lt;br /&gt;
&lt;br /&gt;
SetOrientation(value) - Устанавливает ориентацию страницы. True (по-умолчанию) - альбомная (ландшафтная), Ложь - портретная.&lt;br /&gt;
&lt;br /&gt;
Copy(x1, y1, x2, y2) - Копирует в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Cut(x1, y1, x2, y2) - Вырезает в буфер экселя&lt;br /&gt;
&lt;br /&gt;
Paste(x1, y1) - Вставляет из буфера экселя. Команды copy-paste неразрывны, если что нибудь сделать в промежутке между ними, например вставить значение в ячейку, то копирование сброситься. (Последовательность использования: copy - paste, cut - paste)&lt;br /&gt;
&lt;br /&gt;
PasteStyle(x1, x2, y1, y2) - Вставляет только оформление из буфера экселя (Последовательность использования:  Copy - PasteStyle)&lt;br /&gt;
&lt;br /&gt;
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 будет поменяется только начертание курсив и будет отменено подчеркивание (если оно было). &lt;br /&gt;
&lt;br /&gt;
InsertPicture(TPicture, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет рисунок на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
InsertFirmLogo(FirmCode, [x=1, y=1, DispX=0, DispY=0]) - Функция вставляет логотип фирмы с кодом FirmCode на текущий активный лист. x, y - координаты ячейки, относительно которых размещается рисунок, DispX, DispY - смещение рисунка относительно верхнего левого угла этой ячейки.&lt;br /&gt;
&lt;br /&gt;
SheetFitPageWidth - устанавливает режим масштабирования печати, чтобы печатная форма помещалась в ширину на один лист.&lt;br /&gt;
&lt;br /&gt;
PrintOut([copies]) - Печатает текущий лист на принтере по умолчанию. Параметр, copies - количество копий, по умолчанию равен 1.&lt;br /&gt;
&lt;br /&gt;
CopySheetAfter([SheetFrom[, SheetAfter]]) - Копирует лист SheetFrom (по-умолчанию - текущий), создавая новый лист после листа SheetAfter (по-умолчанию - совпадает с копируемым).&lt;br /&gt;
&lt;br /&gt;
Save(filename) - Сохраняет в файл filename. Если файл существует, в - основной системе он будет перезаписан, в других проектах - вызовет ошибку &amp;quot;Файл уже существует&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'myxl');&lt;br /&gt;
 myxl.OpenFile('c:\asdf.xlsx');&lt;br /&gt;
 set($sum, 0);&lt;br /&gt;
 while (myxl.EOF=0, &lt;br /&gt;
      set($sum, $sum+int(myxl.c));&lt;br /&gt;
      myxl.next );&lt;br /&gt;
 $sum&lt;br /&gt;
 &lt;br /&gt;
 ''Возвращает сумму всех числовых данных столбца C файла 'c:\asdf.xlsx'''&lt;br /&gt;
&lt;br /&gt;
== Объект TDirectExcel ==&lt;br /&gt;
Объект позволяет работать с файлами Excel напрямую, без установленного пакета MsOffice. Применяется в сервисах и при отсутствии экселя. Он максимально совместим с объектом TExcel, однако некоторые методы могут быть не реализованы. &lt;br /&gt;
&lt;br /&gt;
== Объект TCSVFile ==&lt;br /&gt;
Предназначен для доступа к данным документов CSV. Разделителем столбцов является символ точка с запятой ;&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
FileName – Возвращает имя текущего файла.&lt;br /&gt;
&lt;br /&gt;
OpenFile(FileName) – Открывает файл FileName.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB[, Headered=false]) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO.&lt;br /&gt;
&lt;br /&gt;
LoadFromText(s) - Загружает таблицу из строки s.&lt;br /&gt;
&lt;br /&gt;
RecNo – Возвращает номер текущей строки. Нумерация строк начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetRecNo(aRecNo) – Устанавливает значение свойства RecNo.&lt;br /&gt;
&lt;br /&gt;
A..ZZ – Возвращает значение соответствующего поля текущей строки. Может вызываться с целочисленным аргументом, указывающим на сдвиг относительно текущей строки. Например: AC(-1) – вернет значение столбца AC предыдущей строки. Если номер строки окажется вне допустимых значений вернет пустую строку.&lt;br /&gt;
&lt;br /&gt;
First – Делает первую запись листа текущей.&lt;br /&gt;
&lt;br /&gt;
Next – Увеличивает значение свойства RecNo на единицу в случае, если конец файла не достигнут. Иначе – выставляет свойство EOF в истину.&lt;br /&gt;
&lt;br /&gt;
EOF – Возвращает признак достижения конца файла.&lt;br /&gt;
&lt;br /&gt;
RecordCount – Возвращает количество строк в листе.&lt;br /&gt;
&lt;br /&gt;
SendEmail(Server, Port, User, Pass, AddressFrom, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). &lt;br /&gt;
&lt;br /&gt;
SendEmail(EmailFromStr, AddressTo, MsgText, Subject) – Отправляет письмо по e-mail с указанными параметрами. В случае ошибки отправки вызывает ошибку (рекомендуется использовать совместно с TRY). EmailFromStr – строка, содержащая данные для отправки письма – адрес SMTP-сервера, порт, логин, пароль и email отправителя, разделенные символом переноса строки.&lt;br /&gt;
&lt;br /&gt;
SaveToFile(Filename) - Сохраняет в файл с именем filename.&lt;br /&gt;
&lt;br /&gt;
== Объект TADO ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к базам данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
{|&lt;br /&gt;
!Функция&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Connect(ConnectionString)&lt;br /&gt;
|Подключает к источнику данных. ConnectionString – Строка подключения ADO.&lt;br /&gt;
|-&lt;br /&gt;
|ConnectMySQL(DBServer, DBPort, DBUser, DBPass, DBName)&lt;br /&gt;
|Подключает к базе данных MySQL.&lt;br /&gt;
|-&lt;br /&gt;
|Open(Query)&lt;br /&gt;
|Открывает набор данных выполнив запрос Query.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByNo(i)&lt;br /&gt;
|Возвращает значение поля с номером i. Нумерация полей – с нуля.&lt;br /&gt;
|-&lt;br /&gt;
|FieldName(i)&lt;br /&gt;
|Возвращает имя поля с номером i.&lt;br /&gt;
|-&lt;br /&gt;
|FieldCount&lt;br /&gt;
|Возвращает количество  полей.&lt;br /&gt;
|-&lt;br /&gt;
|RecordCount&lt;br /&gt;
|Возвращает количество записей.&lt;br /&gt;
|-&lt;br /&gt;
|RecNo&lt;br /&gt;
|Возвращает номер текущей записи. ''ВНИМАНИЕ! В зависимости от способа подключения к БД нумерация может начинаться как с 0 так и с 1!''&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|Возвращает признак достижения конца набора данных. Становится истиной когда выполняется команда Next на последней записи.&lt;br /&gt;
|-&lt;br /&gt;
|Next&lt;br /&gt;
|Переход на следующую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|First&lt;br /&gt;
|Переход на первую запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|Last&lt;br /&gt;
|Переход на последнюю запись набора.&lt;br /&gt;
|-&lt;br /&gt;
|FieldByName(FieldName)&lt;br /&gt;
|Возвращает значение поля по имени. Также возможно указание имени поля как свойства объекта.&lt;br /&gt;
|-&lt;br /&gt;
|Field(Table, ID, FieldName)&lt;br /&gt;
|Возвращает значение поля FieldName записи с кодом ID таблицы Table. Набор данных, если он открыт, при этом не закрывается. Первичный ключ таблицы должен называться «code». Гарантированно работает только с MYSQL!!!&lt;br /&gt;
|-&lt;br /&gt;
|GetSQLValue(Query)&lt;br /&gt;
|Выполняет SQL-запрос. Текст запроса должен начинаться с первого символа строки (перед запросом не должно быть пробелов, переносов строк, комментариев и т.д.). Если запрос Insert – возвращает ID вставленной записи. Если запрос – Update, Delete, Replace, Set, Start, Commit, Rollback – возвращает количество измененных записей (RowsAffected), иначе – Select – значение первого поля первой строки результата как текст.&lt;br /&gt;
|-&lt;br /&gt;
|FillText(s)&lt;br /&gt;
|Возвращает строку s с замененными названиями полей между знаками процента на соответствующие значения текущей записи. Так же в строке возможно использование интерпретируемого кода, заключенного между тегами &amp;quot;&amp;lt;?&amp;gt;&amp;quot; и &amp;quot;&amp;gt;&amp;quot;. При интерпретации система сначала производит замену полей с процентами на значения, потом интерпретирует код. ''Внимание! Функция не создает отельный контекст интерпретатора, а использует существующий, в нем доступны все объекты и переменные, вызывающего скрипта.'' Дополнительно автоматически создается объект TSelfADO, подключенный к той же БД, что и контекст, вызвавший функцию, с пустым именем, а так же с именем &amp;quot;dataset&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|Query(Query)&lt;br /&gt;
|Синоним GetSQLValue.&lt;br /&gt;
|-&lt;br /&gt;
|Close&lt;br /&gt;
|Закрывает набор данных.&lt;br /&gt;
|-&lt;br /&gt;
|Self&lt;br /&gt;
|Возвращает указатель на подключение к БД для использования в других объектах.&lt;br /&gt;
|-&lt;br /&gt;
|ParseForIn([FieldName='code']) &lt;br /&gt;
|Возвращает через запятую значения всех строк в указанном столбце. По умолчанию, используется столбец с именем code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пример использования – см. TSelfADO&lt;br /&gt;
&lt;br /&gt;
== Объект TSelfADO ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наследник объекта TADO. Служит для подключения к «родной» для программы, в которой выполняется скрипт, базе данных. Обладает всеми свойствами и методами объекта TADO, кроме Connect. Иногда автоматически создается системой для обеспечения простого доступа к базе данных, а также иногда создается системой с уже открытым набором данных для передачи обрабатываемого системой набора данных в скрипт. В этом случае для скрипта недоступны функции Open и Close.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;br /&gt;
 rem('Копируем данные из &amp;quot;родной&amp;quot; базы данных в базу MSSQL.');&lt;br /&gt;
 new('TSelfADO', 'MyDB');&lt;br /&gt;
 new('TADO', 'MSSQL');&lt;br /&gt;
 MSSQL.Connect('Provider=SQLOLEDB.1;Password=myPassword;Persist Security Info=True;User ID=myUsername;Initial Catalog=myDataBase;Data Source=myServerAddress');&lt;br /&gt;
 MyDB.Open('select code, name, passport from kurier where code&amp;gt;'+Int(MSSQL.Query('select max(code) from kurier'))+' order by code');&lt;br /&gt;
 While(MyDB.EOF=0,&lt;br /&gt;
      MSSQL.Query('insert kurier (code, name, passport) VALUES ('+MyDB.Code+', '+QuotedStr(MyDB.Name)+', '+QuotedStr(MyDB.Passport)+')');&lt;br /&gt;
      MyDB.Next;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Объект TPrinter ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предназначен для доступа к принтерам.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
BeginDoc – Начинает новый документ.&lt;br /&gt;
&lt;br /&gt;
EndDoc – Закрывает документ&lt;br /&gt;
&lt;br /&gt;
PageHeight – Возвращает высоту страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageWidth – Возвращает ширину страницы в пикселях&lt;br /&gt;
&lt;br /&gt;
PageNumber – Возвращает номер текущей страницы документа&lt;br /&gt;
&lt;br /&gt;
Orientation – Возвращает текущую ориентацию страницы (0 – портретная, 1 – ландшафтная)&lt;br /&gt;
&lt;br /&gt;
Printing – Возвращает истину если документ открыт&lt;br /&gt;
&lt;br /&gt;
SetOrientation(Orientation) – Устанавливает ориентацию страницы. При необходимости начинает новый документ, новую страницу.&lt;br /&gt;
&lt;br /&gt;
ShowDialog – Показывает пользовательский диалог печати. Возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NewPage – Начинает новую страницу&lt;br /&gt;
&lt;br /&gt;
Canvas – Предоставляет доступ к объекту TCanvas, связанному с принтером.&lt;br /&gt;
&lt;br /&gt;
PrinterNames – Возвращает список принтеров, установленных в системе, разделенный переносами строк&lt;br /&gt;
&lt;br /&gt;
PrintersCount – Возвращает количество установленных в системе принтеров&lt;br /&gt;
&lt;br /&gt;
SetPrinter(Printer) – Устанавливает текущий принтер. Если передана строка – ищет принтер по названию, иначе – по номеру. Нумерация начинается с 0.&lt;br /&gt;
&lt;br /&gt;
PrintTable(Y, Table) – Выводит на печать таблицу Table типа TTable, начиная с координаты Y. При необходимости таблица печатается на нескольких страницах. Возвращает координату Y конца таблицы.&lt;br /&gt;
&lt;br /&gt;
== Объект TCanvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Предоставляет доступ к холсту объекта для прорисовки изображения.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
DPIX – Возвращает разрешение холста по горизонтали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
DPIY – Возвращает разрешение холста по вертикали в точках на дюйм&lt;br /&gt;
&lt;br /&gt;
TextOut(x, y, s[, x1, y1, x2, y2]) – Выводит строку s начиная с точки с координатами x и y. Если указаны параметры x1, y1, x2, y2 – то выводимый текст ограничивается заданным прямоугольником.&lt;br /&gt;
&lt;br /&gt;
TextOutEx(x1, y1, x2, y2, Alignment, Font, s, Indent) – Выводит строку s в прямоугольнике с координатами x1, y1, x2, y2. По горизонтали строка выравнивается в соответствии с Alignment (0 – прижато влево, 1 – вправо, 2 – по центру), по вертикали выравнивается по центру. Используя шрифт Font (см описание ниже). Indent – отступ по горизонтали, расстояние в пикселях между границей прямоугольника и текстом. Функция возвращает координату X фактического окончания текста (правой стороны – если строка прижата влево, и левой – в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
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 фактического окончания текста (нижней границы последней строки текста. ''ВНИМАНИЕ! Функция использует координаты прямоугольника для позиционирования текста, однако она не ограничивает его верхней и нижней границами этого прямоугольника!''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
FillRect(x1, y1, x2, y2) – Рисует прямоугольник '''без границ''' и закрашивает цветом BrashColor&lt;br /&gt;
&lt;br /&gt;
Rect(x1, y1, x2, y2) – Рисует прямоугольник '''c границами''', задаваемыми текущим пером, и закрашивает цветом BrashColor &lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Устанавливает шрифт по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
SetPen(Width, Color) - Устанавливает параметры &amp;quot;ручки&amp;quot; - толщину и цвет. Если любой параметр опустить, соответствующее значение не будет изменено.&lt;br /&gt;
&lt;br /&gt;
SetBrush(Color, Style) - Устанавливает параметры заливки - цвет и стиль. Если любой параметр опустить, соответствующее значение не будет изменено. Стили заливки: 0 - сплошная, 1 - отсутствует (прозрачная), 2-7 - различные виды штриховки (горизонтальные, вертикальные, в клеточку и т.д.).&lt;br /&gt;
&lt;br /&gt;
TextHeight(s) – Возвращает высоту текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
TextWidth(s) – Возвращает ширину текста s в пикселях без учета многострочности, с учетом текущего шрифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование шрифта (Font): У объекта TCanvas есть «глобальные» установки шрифта. Однако для некоторых функций возможно указание шрифта, отличающегося от глобального. Параметры шрифта – это текстовая строка, состоящая из 6-ти параметров, разделенных запятыми: Название, размер, жирный, курсив, подчеркнутый, цвет. Например:&lt;br /&gt;
&lt;br /&gt;
 'Times New Roman, 8, Y, N, N, 255'&lt;br /&gt;
&lt;br /&gt;
Любой параметр можно опустить, и тогда вместо него будет использовано значение по-умолчанию: шрифт: arial, размер – 10, не жирный, не курсив, не подчеркнутый, цвет – черный. Например: ', 7' – указывает, что по-умолчанию нужно взять все параметры кроме размера шрифта. Также можно вместо всей строки указать тире ('-') или пустую строку, и шрифт будет использоваться «глобальный».&lt;br /&gt;
&lt;br /&gt;
Объект можно создать отдельно, не создавая объект TPrinter. В таком случае объект создастся как ссылка на текущий холст принтера (принтер должен быть запущен и начат новый документ). Такой подход используется в доп. возможности PrintCustomSticker&lt;br /&gt;
&lt;br /&gt;
== Объект TPicture ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с графическими изображениями форматов BMP, GIF, JPEG и PNG, а также для формирования штрих-кодов. Обратите внимание, прозрачность изображений не поддерживается, однако в методе TCanvas.DrawPic есть параметр Mode, призванный создавать эффект прозрачности.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(FileName) – Загружает изображение из файла FileName. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB, Query) – Загружает изображение из базы данных. DB – ссылка на подключение к базе данных TADO.Self, Query – текст запроса. Запрос должен вернуть в первом поле первой строки BLOB-поле с изображением, все остальные данные возвращаемые запросом игнорируются. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
LoadFromStr($s) – Загружает изображение из строки $s. Возвращает истину, если операция прошла успешно, иначе – ложь.&lt;br /&gt;
&lt;br /&gt;
CreateBar(Width, Height, BarCode, Textless, Type) – Формирует штрих-код шириной Width и высотой Height с типом кодирования Type. BarCode – текст штрих-кода. Булево значение Textless указывает, что в штрих-коде не должно быть человеко-читаемых символов если истинно. Type указывает тип кодирования: 0 (по-умолчанию) CODE128, 1 - EAN-13, 2 - Interleaved 2-5, 3-DataMatrix, 4-QRCode.&lt;br /&gt;
Штрихкод должен быть: Для EAN-13 цифровым 12 или 13 символов (13-й, контрольная сумма рассчитывается автоматически), для CODE128 - должен иметь состоять из допустимого для этого кодирования набора символов. Для Interleaved - должен состоять из четного числа цифр, контрольная сумма автоматически не рассчитывается. Если для Interleaved кода указано значение из 14-ти знаков, подпись цифр выводится в формате Почты России.&lt;br /&gt;
Внимание! Для кодов EAN-13 и Interleaved ширина штрих-кода Width не является точным значением получаемого на выходе изображения. Ширина изображения рассчитывается как максимальное кратное минимально возможной ширине, но не меньше минимально возможной. Конечную ширину можно получить в соответствующем свойстве объекта. Для кода CODE128 штрих-код на выходе может оказаться пустым, если указанной ширины штрих-кода не достаточно для его формирования.&lt;br /&gt;
Функция возвращает 1 в случае успеха, или текст ошибки, если такая произошла.&lt;br /&gt;
&lt;br /&gt;
SetSize(Width, Height) - Устанавливает размер изображения.&lt;br /&gt;
&lt;br /&gt;
AsString([ImageFormat]) - Возвращает изображение в виде строки с двоичными данными. ImageFormat принимает значения 1 - Bitmap (по-умолчанию), 2 - jpeg, 3 - png, 4 - gif.&lt;br /&gt;
&lt;br /&gt;
Width – Возвращает ширину изображения.&lt;br /&gt;
&lt;br /&gt;
Height – Возвращает высоту изображения.&lt;br /&gt;
&lt;br /&gt;
Rotate(Angle) – Поворачивает изображение по часовой стрелке на угол Angle. Угол указывается в градусах и может принимать любые значения.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с изображением, используется в качестве параметра для функций, работающих с изображениями из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Canvas - ссылка на объект TCanvas холста изображения.&lt;br /&gt;
&lt;br /&gt;
== Объект TTable ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции для работы с таблицами. Удобен для печати таблицы на принтере. Алгоритм таков: Загружаем датасет в таблицу, настраиваем ее (шрифты, штрих-коды и т.д.), потом выводим на принтер функцией TPrinter.PrintTable.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
LoadFromDB(DB) – Загружает таблицу из набора данных, открытого в объекте DB типа TADO. Таблица загружается вместе с заголовками. Если название поля содержит подстроку «_RecNo» - данная подстрока не попадет в заголовок, а все значения поля будут заменены на порядковый номер записи в наборе данных, начиная с «1». В одной таблице допускается не более одного поля с порядковой нумерацией. Поля, названия которых начинаются в символа &amp;quot;-&amp;quot; не выгружаются. Заголовок – это первая строка таблицы.&lt;br /&gt;
&lt;br /&gt;
Cell(С, R) – Возвращает значение ячейки таблицы с координатами (C, R). Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
SetCell(С, R, Value) – Устанавливает значение ячейки таблицы с координатами (C, R) в Value. Нумерация строк и столбцов начинается с 1.&lt;br /&gt;
&lt;br /&gt;
RowCount – Возвращает количество строк в таблице.&lt;br /&gt;
&lt;br /&gt;
ColCount – Возвращает количество столбцов в таблице.&lt;br /&gt;
&lt;br /&gt;
SetTitleFont(Font) – Задает шрифт заголовка таблицы (первой строки).&lt;br /&gt;
&lt;br /&gt;
SetFont(Font) – Задает шрифт всей таблицы кроме заголовка.&lt;br /&gt;
&lt;br /&gt;
SetColFont(C, Font) - Устанавливает шрифт столбца C.&lt;br /&gt;
&lt;br /&gt;
SetIndent(Indent) – Задает отступ от границы ячейки до текста в процентах от ширины страницы. По-умолчанию значение 0.3&lt;br /&gt;
&lt;br /&gt;
SetWidth(С, Width) – Задает значение ширины столбца C в процентах от ширины страницы.&lt;br /&gt;
&lt;br /&gt;
SetMinRowHeght (Heght) – Задает значение минимальной высоты строки в пикселях. &lt;br /&gt;
&lt;br /&gt;
SetBarCode(Col, Type) - Указывает, что данные из столбца Col должны печататься в виде штрих-кода. Тип штрих-кода - Type. Значение '''&amp;quot;1&amp;quot; - EAN13'''. Для кода EAN13 первая строка данных в ячейке должна иметь вид &amp;quot;тип штрих-кода, номер&amp;quot;, например &amp;quot;7, 123&amp;quot; (без кавычек, конечно). В этом случае система сформирует штрих-код: &amp;quot;2700000001233&amp;quot;. Первая цифра - всегда 2, далее - указанный тип штрих-кода, нули, чтобы получилось 13 символов, номер, указанный в таблице, и один символ - контрольная сумма. Значение '''&amp;quot;2&amp;quot; - CODE128''' (с версии 734). Данные из первой строки ячейки таблицы печатаются в штрих-коде &amp;quot;как есть&amp;quot;. Для всех видов штрих-кода (с версии 734) последующие строки печатаются под штрих-кодом в виде текста.&lt;br /&gt;
&lt;br /&gt;
SetMultiHeader(Active) - Включает печать заголовка при переносе таблицы на несколько страниц. По умолчанию отключено.&lt;br /&gt;
&lt;br /&gt;
SetCustomHeader(script) - Включает печать пользовательского заголовка. Script - это код интерпретатора, который должен печатать заголовок на канву. Печать таблицы может происходить на нескольких листах, по этому скрипт будет вызван для каждого листа. При использовании этого метода, автоматически инициализируются переменные: $TablePageNo - номер страницы, нумерация начинается с нуля; $TableY - координата по оси Y, от которой рисуется заголовок. Чтобы таблица была под заголовком необходимо значение переменной $TableY увеличить на высоту заголовка.&lt;br /&gt;
&lt;br /&gt;
Self – Ссылка на объект с таблицей, используется в качестве параметра для функций, работающих с таблицами из данного объекта.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 &amp;lt;?&amp;gt;&lt;br /&gt;
 NEW('TPrinter', 'Prn');&lt;br /&gt;
 If(prn.ShowDialog,&lt;br /&gt;
  NEW('TTable', 'Tbl'); &lt;br /&gt;
  NEW('TSelfADO', 'MyDB'); &lt;br /&gt;
  MyDB.Open('SELECT concat(&amp;quot;7&amp;quot;, &amp;quot;, &amp;quot;,  a.code, &amp;quot;\r\n&amp;quot;, a.client_id, &amp;quot;\r\n&amp;quot;, a.zakaz, &amp;quot;-&amp;quot;, a.number) as &amp;quot;Штрих-код&amp;quot;, a.target AS &amp;quot;Заказик&amp;quot;, address, phone, vlog, poruch FROM address a order by code desc limit 10');&lt;br /&gt;
  Tbl.LoadFromDB(MyDB.Self); &lt;br /&gt;
  Tbl.SetBarcode(1, 1);&lt;br /&gt;
  Tbl.SetCustomHeader(     &lt;br /&gt;
    if($TablePageNo&amp;gt;0,&lt;br /&gt;
      Prn.Canvas.TextOut(Prn.Canvas.DPIX*0.1, $TableY, 'Продолжение таблицы');&lt;br /&gt;
      set($TableY, $TableY + Prn.Canvas.TextHeight('H'));&lt;br /&gt;
    ,0)&lt;br /&gt;
  );&lt;br /&gt;
  Prn.BeginDoc; &lt;br /&gt;
  Prn.PrintTable(0, Tbl.Self);   &lt;br /&gt;
  Prn.EndDoc&lt;br /&gt;
 , );&lt;br /&gt;
&lt;br /&gt;
== Объект TBaseUtils ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции, базирующиеся на БД системы «Курьерская служба 2008». По-умолчанию, при создании подключается к основной базе данных модуля, в котором выполняется скрипт, если такая определена контекстом, однако это можно изменить, см SetConnection.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
'''MakeAddress(s[,town])''' – возвращает значение, полученное путем преобразований адреса s для приведения его к внутреннему формату программы. В процессе преобразования до нескольких раз происходит замена буквосочетаний по таблице замены (ее редактирование доступно по нажатию кнопки «Автозамена» в интерфейсе импорта БД из Excel системы (см. Руководство пользователя)), поиск улиц по базе КЛАДР с точностью до одного знака, и некоторые другие операции, нацеленные на исправление ошибок в написании адреса.&lt;br /&gt;
&lt;br /&gt;
С версии программы 2008.0.0.615, при вызове функции в формулах загрузки реестра, в первую очередь происходит проверка строки s на условия:&lt;br /&gt;
* в строке s записано  число; &lt;br /&gt;
* строка s начинается с &amp;quot;ПВЗ &amp;quot;. &lt;br /&gt;
Если одно из этих условий выполняется, то функция пытается установить пункт самовывоза - т.е она сама в загружаемой карточке корреспонденции укажет: адрес ПВЗ, город ПВЗ и установит галку самовывоз. &amp;lt;br/&amp;gt;Правила поиска ПВЗ:&lt;br /&gt;
* Если s число -  считаем его внутренним кодом филиала;&lt;br /&gt;
* Если s начинается с &amp;quot;ПВЗ &amp;quot; - Например в адресе передана строка &amp;quot;ПВЗ На Ленинском проспекте&amp;quot;, то искать будем филиал с названием &amp;quot;На Ленинском проспекте&amp;quot; который подчиненный, активный, с галкой ПВЗ и в городе town. Если город не указан, то ищем филиал во всех городах, и считаем его найденным если найдем только один филиал. &lt;br /&gt;
* Если филиалы найти не удалось, функция makeaddress работает как обычно и выполняет преобразование адреса.&lt;br /&gt;
&lt;br /&gt;
Если адрес не содержит русских букв, только латиница, и курьерская служба находится в одной из стран Россия, Белоруссия, Казахстан или Украина, и город-получатель (второй параметр, town) находится так же в одной из этих стран, функция автоматически делает транслитерацию адреса на русский язык.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''SetConnection(DB) – Подключает объект к базе данных DB, где DB – ссылка на объект TADO.Self.'' '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
''SetTown(Town) – Устанавливает код текущего города (используется в некоторых функциях объекта) в значение Town. По-умолчанию текущий город – 1.''  '''ВРЕМЕННО НЕ РАБОТАЕТ!'''&lt;br /&gt;
&lt;br /&gt;
'''SetIndexLength(Length)''' – Устанавливает длину почтового индекса. По-умолчанию – 6.&lt;br /&gt;
&lt;br /&gt;
'''GetIndex(Address)''' – Возвращает почтовый индекс из адреса.&lt;br /&gt;
&lt;br /&gt;
'''GetStreet(Address)''' - Возвращает улицу до первой запятой.&lt;br /&gt;
&lt;br /&gt;
'''GetHome(Address)''' - Возвращает номер дома до второй запятой, но не более пяти символов.&lt;br /&gt;
&lt;br /&gt;
'''GetKurierByStation(station, Mass, Cash, Date_Putn)'''&lt;br /&gt;
&lt;br /&gt;
'''TownByIndex(Index[, PriorityName])''' – Возвращает код города по индексу. В случае ошибки поиска – код текущего города. Если нашлось несколько населенных пунктов, и указано приоритетное название - выбирается населенный пункт, название которого начинается с PriorityName (если есть).&lt;br /&gt;
&lt;br /&gt;
'''TownByName(Name[,NotNeedCL=False, City=0])''' – Возвращает код города по имени. В случае ошибки поиска – возвратит код текущего города. Если параметр NotNeedCL (параметр не обязательный) установить в TRUE, тогда функция возвратит 0, если город не удалось найти. Параметр City (код региона) позволяет ограничить поиск одной областью (не обязательный, по умолчанию не используется).&lt;br /&gt;
&lt;br /&gt;
'''FillClientInfo(Excel, client, Sheet, Row, Col)''' – Выводит в эксель информацию о клиенте с кодом client на лист sheet начиная со строки row и столбца col.&lt;br /&gt;
&lt;br /&gt;
'''SavePrintFormToFile(FormType, FormNumber)''' - Сохраняет на диске файл печатной формы и возвращает путь к нему&lt;br /&gt;
&lt;br /&gt;
'''CreateTrans(Address[, Store][, Operator])''' - Формирует запись для печати кассового чека для корреспонденции с кодом Address, для выбора кассового аппарата используется код склада Store. Если Store не указано - при исполнении в среде клиентского модуля системы использует склад, указанный пользователем в окне [[Настройка параметров рабочего места|&amp;quot;Настройка&amp;quot; - &amp;quot;Параметры&amp;quot;]], в остальных модулях - код текущего склада из [[Настройка глобальных параметров|переменной]] &amp;quot;CL&amp;quot; (&amp;quot;Текущий филиал&amp;quot;). Поле Operator позволяет указать кассира (передается код справочника сотрудников). Если не указан, в основной системе будет использован код авторизованного пользователя, в других модулях - 1. Возвращает идентификаторы записей чеков. Может вернуть пустую строку, если чек создавать не понадобилось, один или несколько кодов через запятую, если создано несколько чеков. В случае ошибки вызывает ошибку, поэтому рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CreateReturnTrans(Address)''' - формирует запись для печати чека возврата для корреспонденции с кодом Address. Чек возврата печатается на полную сумму и с теми же атрибутами, что и чек продажи. Возвращает идентификатор записи чека возврата. В случае ошибки вызывает ошибку, поэтому, как и с CreateTrans,  рекомендуется использовать с функцией Try.&lt;br /&gt;
&lt;br /&gt;
'''CalcTownDeliveryDays(Source, Mode, TownTo, TownFrom)''' - возвращает количество дней необходимых на доставку отправления, только для межгорода. Source - код клиента, Mode - режим срочности, TownFrom - код города отправителя, TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
'''CalcDeliveryDate(Source, Mode, TownTo, TownFrom, Date_Beg, Time_beg)''' - Возвращает планируемую дату доставки с учетом сроков доставки. Работает при городской и междугородней доставке. Для межгорода сроки доставки берутся из зон. Для городской доставки, из дополнительных параметров статуса (17 статус, 1 параметр в доп. информации)  Если рассчитать дату планируемой доставки не удалось, возвращает пустую строку. Параметры: Source - код клиента, Mode - режим срочности, TownTo - город получатель, TownFrom - город отправитель, date_beg - дата заказа (может быть передана строкой в формате DD.MM.YYYY или в числовом), time_beg - время заказа. &lt;br /&gt;
&lt;br /&gt;
'''GenSpecialSMA(DirectExcel, Code)''' - функция для генерации отчета о доставке по акту передачи денег. Первый параметр - указатель на TDirectExcel, второй параметр - код акта передачи денег. АПД выводится на текущий лист объекта TDirectExcel.&lt;br /&gt;
&lt;br /&gt;
'''CreateSpecialSMA(ClientCode, DateTo)''' - Функция создает исходящий акт передачи денег (АПД). Требует ClientCode - код клиента, DateTo - дату акта. Функция возвращает коды созданных актов. Если возвращаемых параметров два, значит функция пыталась создать два АПД: первым, идет код АПД с наличной оплатой, а вторым с безналичной. Примеры возвращаемого результата: '0'- акт не был создан, отсутствуют корреспонденции; '124' - код созданного акта; '0,0' - пытались создать два акта, но отсутствуют данные; '4556,0' - создан только наличный АПД; '0,445' - создан только безнал.; '4556,445' - созданы нал. и безнал.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressForActDelivery(ActCode, [Delivery_Tomorrow=False, Delivery=True])''' - Функция создает корреспонденцию на доставку акта. ActCode - код акта; Delivery_Tomorrow - установить план. дату доставки следующим рабочим днем или сегодня (по умолчанию , сегодня); Delivery - создать корр. на доставку АПД или создать корреспонденцию на забор АПД (по умолчанию, доставка АПД). Возвращает код созданного адреса.&lt;br /&gt;
&lt;br /&gt;
'''CreateAddressTransferAct(ClientCode, Store, DateTo, [AdditionalParam])''' - Функция создает исходящий акт передачи корреспонденции (АПК). Требует  ClientCode - код клиента, Store - код филиала, для которого будет создан акт, DateTo - дату, до которой в акт попадут возвраты, AdditionalParam - дополнительный строковый параметр для передачи в системную доп. возможность ExceptionsForAPK, позволяющий отобрать в акт, например, только полные возвраты.   Возвращает код созданного акта. ВНИМАНИЕ: при создании АПК используется системная функция ExceptionsForAPK. Если в ней используются интерактивные функции (вывод сообщений, диалоговые окна, выполнение скриптов), то акт сформирован не будет, а функция CREATEADDRESSTRANSFERACT вернет ошибку.     &lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByAddress(Address, TownCode, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попал адрес. Если полигон найти не удалось, функция возвратит пустую строку. Address - адрес корреспонденции текстом; TownCode - код города; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByAddress(addressrecord.address, if((addressrecord.number=0)*(addressrecord.strbarcode=&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;), addressrecord.townfrom, addressrecord.townto), '`schema`=1') - пытаемся найти вхождение адреса в полигоны 1 схемы, при выборе города учитывается корр. на забор, у нее нужно использовать город-отправитель (а для обычной корр. нужен город-получатель).&lt;br /&gt;
&lt;br /&gt;
'''GetPolygonByLatLon(Lat, Lon, where[, field='code'])''' - функция возвращает значение связанное с полигоном в который попали GPS координаты. Если полигон найти не удалось, функция возвратит пустую строку. Lat - широта  текстом; Lon - долгота текстом; where - SQL условие; field - необязательный параметр, определяет возвращаемое значение при найденном полигоне, по умолчанию равен &amp;quot;code&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
GetPolygonByLatLon('55.769064','37.590713','zone is not null and price=0') - пытаемся найти вхождение координат в полигоны, где задана зона, для всех клиентских и курьерских зон.&lt;br /&gt;
&lt;br /&gt;
'''GetLatLonByAddress(AddressText, TownCode)''' - возвращает географические координаты вида lat,lon указанного в AddressText адреса. Поиск производится в городе, имеющем код TownCode в таблице Town.&lt;br /&gt;
&lt;br /&gt;
'''CalcAgentPrice(AddressCode, AgentCode, TownFrom, TownTo, Mode, [, Count=1])''' - функция возвращает стоимость доставки рассчитанную по тарифу агента. AddressCode - код адреса, AgenCode - код филиала (агента), TownFrom - код города отправителя, TownTo - код города получателя, Mode - режим срочности, count - тарифная сетку от указанного количества отправлений (по умолчанию 1)&lt;br /&gt;
&lt;br /&gt;
'''SetAddrKol_vo(address, getkol_vo)''' - функция делает прием корреспонденции в текущем ответственном филиале. address - внутренний код адреса, getkol_vo - количество принимаемых мест, может принимать значения: &amp;quot;kol_vo&amp;quot; - принять все места, &amp;quot;getKol_vo+1&amp;quot; - принять еще одно место, &amp;quot;число&amp;quot; - сделать количество принятых мест равным указанному числу.&lt;br /&gt;
&lt;br /&gt;
'''GetBasePrice''' - возвращает базовую стоимость доставки посчитанную по тарифной сетке клиента в зависимости от :кол-ва заказов,зоны,типа,срочности,массы, расстояния. В системах с выключенными доп. услугами также считает проценты от суммы и страховки. &lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
*ds  - ссылка на объект датасета с основными параметрами расчета цены. Значение по умолчанию доступно в формулах тарифа и доп. услуг, через вызов &amp;quot;dataset._self&amp;quot;.&lt;br /&gt;
  Описание некоторых полей датасета:&lt;br /&gt;
    pmoney - процент от суммы;&lt;br /&gt;
    pmoneycard - процент от суммы при оплате картой;&lt;br /&gt;
    pricecode - код прайса (таблица Price) ;&lt;br /&gt;
    distarea - район метро получателя (актуально при отключённом едином районировании, как правило район от 200 до 299 является признаком области);&lt;br /&gt;
    region - признак области при включенном едином районировании;&lt;br /&gt;
    distareaFrom и regionFrom  - аналог distarea, region только для отправителя;&lt;br /&gt;
    pcncode - код записи таблицы pricecnt &amp;quot;количество от&amp;quot;;&lt;br /&gt;
    Запрос содержит поля таблицы pricelinesnew - начальная стоимость по тарифной сетки, найденные без учета массы,только по типу срочности и режиму.&lt;br /&gt;
    Запрос содержит поля таблицы price.&lt;br /&gt;
&lt;br /&gt;
*addressrecord - ссылка на объектную модель карточки корреспонденции, следует использовать уже созданную addressrecord._self&lt;br /&gt;
*count - количество корреспонденций от клиента. (может показывать кол-во корреспонденции в текущем заказе или за прошлый месяц, в зависимости от выбранной схемы подсчета заказов в тарифе)&lt;br /&gt;
*type - тип корреспонденции;&lt;br /&gt;
*mode - режим доставки;&lt;br /&gt;
*wait - количество минут ожидания (не учитывается при доп. услугах, есть системная услуга &amp;quot;ожидание&amp;quot;);&lt;br /&gt;
*mass - масса отправления; &lt;br /&gt;
*rur - сумма передаваемых денег (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от суммы&amp;quot;);&lt;br /&gt;
*inshprice - сумма страховки (не учитывается при доп. услугах, есть системная услуга &amp;quot;процент от объявленной стоимости&amp;quot;);&lt;br /&gt;
*distance - расстояние до места доставки, обычно поле заполняется при доставке в область (регион в едино районировании). Дополнительная наценка к стоимости доставки;&lt;br /&gt;
*forward - направление доставки: true - туда; false - обратно;&lt;br /&gt;
*Collection - признак заборной корреспонденции: true - забор, false - доставка (В тарифе есть возможность указать стоимость для забора);&lt;br /&gt;
*TownFrom - код города отправителя;&lt;br /&gt;
*TownTo - код города получателя.&lt;br /&gt;
&lt;br /&gt;
В тарифе есть возможность указать формулу, которая может влиять на базовый расчет. Формула может объявить служебные переменные, которые:&lt;br /&gt;
*$FormulaReplace - если true – возвращаемое значение полностью заменяет базовый расчет;&lt;br /&gt;
*$FormulaKoeff - коэффициент на который будет помножена базовая стоимость.&lt;br /&gt;
Также внутри формулы объявлены следующие объекты dataset, addressrecord и переменные:&lt;br /&gt;
*$ForceIntown - Переменная становится истиной, если междугородний расчет был отменен, т.к. адрес попал в нарисованную зону на карте.&lt;br /&gt;
*а также: $forward, $distance, $Count, $Collection, $Wait, $FormulaKoeff, $PriceCode - описание есть выше.&lt;br /&gt;
&lt;br /&gt;
Для направления &amp;quot;туда&amp;quot;, Функция GetBasePrice вызывается  через доп. услугу &amp;quot;База&amp;quot; (при включенных доп. услугах), для направления &amp;quot;Обратно&amp;quot; всегда вызывается напрямую (т.к. доп. услуги работают только в для направления &amp;quot;туда&amp;quot;).&lt;br /&gt;
На расчет этой функции влияют следующие переменные: &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Расчет стоимости по адресу&amp;quot;, &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Зона клиента по умолчанию&amp;quot;,  &amp;quot;Финансы&amp;quot; -&amp;gt; &amp;quot;Подсчет кол-ва отправлений за месяц&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''CalcAddressPrice(AddressCode, [,ZakazCount])''' - полностью пересчитывает стоимость доставки корреспонденции по тарифу клиента. AddressCode - внутренний код адреса, ZakazCount - не обязательный параметр, кол-во заказов от клиента.&lt;br /&gt;
&lt;br /&gt;
'''GetStationCode(s [,town])''' – возвращает код станции метро, ассоциированный в системе с адресом s. В случае невозможности идентифицировать станцию метро – возвращает 0. &lt;br /&gt;
Когда включено районирование по карте, необходим второй параметр &amp;quot;town&amp;quot; - код города в котором нужно искать адрес.  Возвращает код района если удалось его найти; код станции меж-города - если адрес удалось геокодировать, но район не нашли; код 0 - когда не удалось геокодировать адрес.&lt;br /&gt;
&lt;br /&gt;
'''RecalcSpecialSMA(ActCode)''' - пересчитать акт передачи денег (АПД). Также, у корреспонденций входящих в АПД будет пересчитана стоимость доставки. Для Входящего АПД сумма акта не пересчитывается. Параметр ActCode - внутренний код акта, коды можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
'''UserCode''' - Возвращает код текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserName''' - Возвращает имя текущего пользователя из таблицы «Пользователи» (users).&lt;br /&gt;
&lt;br /&gt;
'''UserPass''' - Возвращает пароль текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''UserBaseCode''' – Возвращает код текущего пользователя из таблицы «Сотрудники» (kurier).&lt;br /&gt;
&lt;br /&gt;
'''UserEmail''' - Возвращает e-mail текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
'''CurrentTown''' – Возвращает код текущего города (из таблицы town).&lt;br /&gt;
&lt;br /&gt;
'''CurrentCity''' – Возвращает код текущего региона (из таблицы city).&lt;br /&gt;
&lt;br /&gt;
'''CurrentLocation''' – Возвращает код текущего филиала (из таблицы store).&lt;br /&gt;
&lt;br /&gt;
'''FillExcelDoc'''(Excel, Dataset, FormType, FormNumber) - Выполняет указанную печатную форму в объекте excel. Dataset объект с данными для скрипта в печатной форме, может быть null. Dataset передавать можно так db.self, тогда переданный dataset внутри печатной формы будет доступен по имени dataset. Например:&lt;br /&gt;
&lt;br /&gt;
 new('TExcel', 'excel');&lt;br /&gt;
 FillExcelDoc(excel.self, null, 12, 1);&lt;br /&gt;
 excel.DoNotDestroy(true);&lt;br /&gt;
 excel.SetVisible(true);&lt;br /&gt;
 ''Покажет эксель с выполненной печатной формой''&lt;br /&gt;
&lt;br /&gt;
'''ValutaSign''' – Возвращает название валюты для суммы.&lt;br /&gt;
&lt;br /&gt;
'''SendToMeasoft(xml)''' - Отправляет запрос в клиентское API Measoft. Автоматически добавляет начальный &amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''InsertFirmAtt(excel, sheet, firmcode)''' - Вставляем на лист эксель по коду фирмы: печать, подпись, подпись бухгалтера, логотип. Тэги &amp;lt;STAMP&amp;gt;, &amp;lt;DIR&amp;gt;, &amp;lt;BUH&amp;gt;, &amp;lt;LOGO&amp;gt; соответственно. После тега можно указать размеры изображения в символах Microsoft Excel. Формат записи: &amp;lt;STAMP&amp;gt; 16, 16&lt;br /&gt;
&lt;br /&gt;
'''PreCalcSalary(kurier, addressCodes)''' - Рассчитывает предварительную зарплату. Kurier - код курьера, используется для определения тарифа. addressCodes - коды адресов, через запятую для которых необходимо посчитать зарплату. Результаты расчета будут записаны в таблицу kurierpaydetail, так как расчет предварительный то записи не будут прикреплены к конкретному начислению. &lt;br /&gt;
&lt;br /&gt;
  select a.code, kpd.price as &amp;quot;туда&amp;quot;, kpd2.price as &amp;quot;обратно&amp;quot; from address a &lt;br /&gt;
  left join kurierpaydetail kpd on kpd.sourcetable=3 and kpd.sourcecode=a.code and kpd.rectype = 1 &lt;br /&gt;
  left join kurierpaydetail kpd2 on kpd2.sourcetable=3 and kpd2.sourcecode=a.code and kpd2.rectype = 2&lt;br /&gt;
  where a.code in (...)&lt;br /&gt;
&lt;br /&gt;
'''CalcSalary(DateTo, [Filter=0, KurierCode = 0, ManagerCode = 0])''' - Полный расчет зарплаты курьерам. DateTo  - дата до которой создается начисление. Условия отбора курьеров для начисления. Filter - роль сотрудника: 0 - Все, 1 - курьеры, 2 - менеджеры; KurierCode - код курьера, ограничить расчет зарплаты одним курьером;ManagerCode - код курьера, ограничить расчет зарплаты курьерами указанного менеджера. Внимание фильтры Filter, KurierCode и ManagerCode накладываются друг на друга. Результатом функции является SubSQL с информацией по созданным начислениям. &lt;br /&gt;
  поля ответа: код курьера, код менеджера, начислено, бонусы, штрафы, аванс, итого;&lt;br /&gt;
  select kurier, manager, profit, bonus, shtraf, prepay, total  [union select ...]&lt;br /&gt;
&lt;br /&gt;
== Объект TINIFile ==&lt;br /&gt;
&lt;br /&gt;
Предоставляет функции работы с ini-файлами. В некоторых контекстах создается автоматически для предоставления доступа к настроечному файлу модуля, выполняющего скрипт.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
IniParam(s[,section='common']) – Существует только если имя экземпляра объекта пустое. Возвращает значение параметра s ini-файла секции «common», изменить секцию можно не обязательным параметром section. В случае отсутствия параметра в файле возвращает пустую строку. &lt;br /&gt;
&lt;br /&gt;
Param(s) – Синоним IniParam с тем отличием, что существует только если имя объекта непустое.&lt;br /&gt;
&lt;br /&gt;
SetText(s) - Загружает ini файл из строки s. Если в файле нет секции «common», то принудительно объявляет ее в начале.&lt;br /&gt;
&lt;br /&gt;
== Объект TSMS ==&lt;br /&gt;
&lt;br /&gt;
Предназначен для отправки SMS, а также проверки статуса их доставки.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetProxy(Server, Port, User, Pass) - Устанавливает настройки прокси-сервера.&lt;br /&gt;
&lt;br /&gt;
Connect(Provider, Host, User, Pass, SenderName, SMSPrefix) – Подключает объект к провайдеру provider, используя адрес Host, имя пользователя User и пароль Pass. Значение SMSPrefix предназначено для того, чтобы провайдер мог различить сообщения от разных филиалов, если этими филиалами используется одно подключение. Если необходимости разделять сообщения нет - значение SMSPrefix можно не указывать.&lt;br /&gt;
Для провайдера доступны значения 'mirsms', 'sms16', 'websms', 'epochta', 'zanzara', 'SMSManager', 'f1sms', 'BitCall', 'mirsmsGET', 'AMD' и другие, либо можно указать числовые значения номера протокола, от 1 до &amp;lt;rspoiler text=&amp;quot;20&amp;quot;&amp;gt;Набор провайдеров все время дополняется, количество и номера можно смотреть в Справочники - Переменные - Подключения - SMS&amp;lt;/rspoiler&amp;gt; соответственно. Эти значения соответствуют значениям переменной SMSProtocol таблицы &amp;quot;Value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SendSMS(Phone, Text, [ID]) – Отправляет SMS с текстом Text на телефон Phone. Для некоторых провайдеров необходим уникальный идентификатор сообщения ID. Возвращает ID провайдера для последующей проверки статуса доставки.&lt;br /&gt;
&lt;br /&gt;
CheckSMS(ProviderID) – Проверяет состояние доставки сообщения с идентификатором ProviderID. Возвращает: 0 – доставляется, 1 – успешно доставлено, 2 – не доставлено.&lt;br /&gt;
&lt;br /&gt;
ReceiveSMS(InboxID, DateFrom, DateTo, NewOnly) - Получает входящие SMS, с ящика InboxID (идентификатор выдаётся провайдером). DateFrom, DateTo - задается временной интервал в котором были приняты сообщения(формат 08.04.2013 18:00:00 'DD.MM.YYYY HH:NN:SS'). Чтобы получать только новые сообщение поле NewOnly должно быть True. Возвращает XML с сообщениями.&lt;br /&gt;
&lt;br /&gt;
ExtraResult([ParamName='']) - Вызывается после CheckSMS, возвращает дополнительную информацию по последнему статусу смс. В настоящее время работает только для провайдера BitCall, по умолчанию возвращает кнопки, нажатые абонентом во время работы с голосовым меню. Если в paramname указать 'IdentifyText' то будет возвращен JSON  с ответами абонента на заданные вопросы(используется в случае звонков с индивидуальным сценарием).&lt;br /&gt;
&lt;br /&gt;
Log - Возвращает последний HTTP запрос и ответ от сервера смс.&lt;br /&gt;
&lt;br /&gt;
== Объект TXML ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга XML-данных.&lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст XML документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию. Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля.&lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
AttribCount – Возвращает количество атрибутов текущего элемента.&lt;br /&gt;
&lt;br /&gt;
AttribName(i) – Возвращает имя атрибута с номером i.&lt;br /&gt;
&lt;br /&gt;
Attrib(V) – Ищет атрибут и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
== Объект TJSON ==&lt;br /&gt;
&lt;br /&gt;
Предназачен для парсинга JSON-данных. &lt;br /&gt;
&lt;br /&gt;
Функции:&lt;br /&gt;
&lt;br /&gt;
SetText(S) – Задает текст JSON документа для парсинга, делает текущим корневой элемент.&lt;br /&gt;
&lt;br /&gt;
NodeValue – Возвращает значение текущего элемента.&lt;br /&gt;
&lt;br /&gt;
NodeName – Возвращает имя текущего элемента.&lt;br /&gt;
&lt;br /&gt;
OpenChild(V) – Ищет дочерний элемент и делает его текущим. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Возвращает значение найденного элемента, или пустую строку, если элемент не найден. Нумерация элементов начинается с нуля. &lt;br /&gt;
&lt;br /&gt;
ChildrenCount – Возвращает количество дочерних элементов.&lt;br /&gt;
&lt;br /&gt;
ChildNodeValue(V) – Ищет дочерний элемент и возвращает его значение. Если V – число – ищет по номеру, если V – текст – ищет по названию (регистрозависимый поиск). Можно проверять наличие элементов, если элемента нет, вернется пустая строка.&lt;br /&gt;
&lt;br /&gt;
OpenParent – Делает текущим родительский элемент. Возвращает значение найденного элемента.&lt;br /&gt;
&lt;br /&gt;
Reset – Делает текущим корневой элемент, возвращает его значение.&lt;br /&gt;
&lt;br /&gt;
isArray - Возвращает true, если текущий элемент является массивом (доступ к дочерним элементам возможен только по индексу, нумерация элементов начинается с нуля)&lt;br /&gt;
&lt;br /&gt;
==Объект TZip==&lt;br /&gt;
Предназначен для работы с Zip архивом. &lt;br /&gt;
&lt;br /&gt;
SetZip(s) - Загружает архив в объект из строки s;&lt;br /&gt;
&lt;br /&gt;
GetZip - Возвращает архив в виде строки;&lt;br /&gt;
&lt;br /&gt;
AddFromFile(SrcPath, ZipPath) - Добавляет файл SrcPath в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
AddFromStr(Data, ZipPath) - Добавляет файл из строки Data в архив и располагает его по пути ZipPath. ZipPath содержит имя файла в архиве, при необходимости можно указать каталог;&lt;br /&gt;
&lt;br /&gt;
LoadFromFile(path) - Загружает архив из файла path;&lt;br /&gt;
&lt;br /&gt;
SaveToFile(path) - Сохраняет архив в файл path;&lt;br /&gt;
&lt;br /&gt;
Count - Возвращает кол-во файлов в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByIndex(index) - Возвращает распакованный файл в виде строки. Index - номер файла в архиве;&lt;br /&gt;
&lt;br /&gt;
DataByName(ZipPath) - Возвращает распакованный файл в виде строки. ZipPath - путь к файлу в архиве, может содержать каталоги;&lt;br /&gt;
&lt;br /&gt;
FileName(index) - По номеру файла, функция возвращает полный путь файла в архиве.&lt;br /&gt;
&lt;br /&gt;
==Объект TBase==&lt;br /&gt;
&lt;br /&gt;
Функции общего назначения:&lt;br /&gt;
&lt;br /&gt;
execsimplescript(Caption, Text) - Выполняет скрипт &amp;quot;Дополнительных возможностей&amp;quot;. Возвращаемые значения, введенные пользователем устанавливает в переменные $scriptvar1..$scriptvarN, Значения кодов списочных переменных - в переменных $scriptvar1codes..$scriptvarNcodes. Функция возвращает истину, если пользователь нажал &amp;quot;OK&amp;quot; в диалоговом окне.&lt;br /&gt;
&lt;br /&gt;
FillAdvPriceReport(Excel, AddressCodes, StartLine, StartCol, [ShowSumPrice,InsertColumns]) - добавляет отчёт по дополнительным услугам. В AddressCodes - указаны коды адресов через запятую, каждый код это отдельная строка отчета. Адреса будут показаны в порядке перечисления их в AddressCodes. Если в отчет нужно добавить пустую строку, то можно указать код адреса -1000. StartLine, StartCol - верхний левый угол выгружаемой таблицы. ShowSumPrice - добавить столбец итоговый столбец с суммой всех услуг, по умолчанию выключено. InsertColumns - раздвинуть таблицу перед вставкой отчета, позволяет встраивать отчет посередине выгрузки, по умолчанию выключено.  Функция возвращает количество использованных столбцов.&lt;br /&gt;
&lt;br /&gt;
PrintSticker(Codes, [ToBoxes=False])&lt;br /&gt;
&lt;br /&gt;
GetItemByName(Name)&lt;br /&gt;
&lt;br /&gt;
GetA4Printer - возвращает имя принтера выбранного для печати документов&lt;br /&gt;
&lt;br /&gt;
GetStickerPrinter - возвращает имя принтера выбранного для печати стикеров&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Функции, работающие только в импорте БД из эксель:'''&lt;br /&gt;
&lt;br /&gt;
ReplaceAddress&lt;br /&gt;
&lt;br /&gt;
GetItemByCode - Поиск товара по артикулу. Внимание: в пределах одного клиента может быть несколько товаров с одинаковыми артикулами. В этом случае функция найдет последний заведенный товар.&lt;br /&gt;
&lt;br /&gt;
GetPrice&lt;br /&gt;
&lt;br /&gt;
GetNewNumber - используется при импорте реестра, возвращает номер конверта в загружаемом заказе&lt;br /&gt;
&lt;br /&gt;
GetNewPos - используется при импорте реестра, возвращает порядковый номер вложения&lt;br /&gt;
&lt;br /&gt;
GetNewPackagePos- используется при импорте реестра, возвращает порядковый номер места&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zakaz - возвращает номер заказа куда происходит импорт реестра&lt;br /&gt;
&lt;br /&gt;
addresscode  -  используется при импорте реестра, код созданного адреса&lt;br /&gt;
&lt;br /&gt;
Source  - код заказчика&lt;br /&gt;
&lt;br /&gt;
'''ClientTown''' - Узнаем город клиента, через филиал с которым он работает. Сам клиент берется из заказа указанного в окне &amp;quot;Импорт БД из Excel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Объект TFieldObject ==&lt;br /&gt;
Объект для доступа к записям, используется в картах и доп.услугах.&lt;br /&gt;
&lt;br /&gt;
_GETTABLEINFO - возвращает данные о полях и примеры данных объекта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение языка формул ==&lt;br /&gt;
'''в различных контекстах системы «Курьерская служба 2008» и сопутствующих проектах'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Курьерская служба 2008 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительная информация на чеке ====&lt;br /&gt;
&lt;br /&gt;
В карточке клиента на закладке «Касса» имеется поле для ввода текста, который будет отображаться на кассовых чеках, печатаемых для корреспонденции от данного клиента. В поле может быть введен как просто текст, так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TSelfDB с открытым набором данных со строчкой корреспонденции, заказа и клиента, на которую печатается чек&lt;br /&gt;
&lt;br /&gt;
TBaseSupport&lt;br /&gt;
&lt;br /&gt;
TBaseValue&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Так же система записывает в переменную $CashRegisterID вычисленный код фискального регистратора, на котором предполагается печать чека.&lt;br /&gt;
&lt;br /&gt;
Результат работы скрипта печатается на создаваемом чеке, если скрипт не возвращает значение “-1” (число или текст) – в этом случае система чек не создает. Подразумевается, что либо скриптом было принято решение об отсутствии необходимости формирования чека, либо скрипт взял эту функцию на себя.&lt;br /&gt;
&lt;br /&gt;
==== Заполнение шаблонов печатных форм ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Дополнительные возможности ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Импорт БД из Excel ====&lt;br /&gt;
В окружении интерпретатора создается объект ZakazRecord, он является списком со значениями таблицы zakaz. Именно в этот заказ будут загружены данные. Из этого объекта также доступно :&amp;lt;br&amp;gt;&lt;br /&gt;
*ZakazRecord.userfields - пользовательские поля заказа;&lt;br /&gt;
*ZakazRecord.Clients - данные таблицы clients;&lt;br /&gt;
*ZakazRecord.Clients.userfields - пользовательские поля заказчика.&lt;br /&gt;
&lt;br /&gt;
==== Прайс лист клиента ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в валюте клиента для каждой поездки (туда или обратно) единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Помимо стандартных объектов, система создает объект AddressRecord, в котором, как свойства, доступны все поля текущей записи. Так же она выставляет значение переменной $Forward в 1 (истина), если необходимо произвести расчет для направления &amp;quot;Туда&amp;quot; и 0 (ложь) - если обратно. ВНИМАНИЕ! Как и во всех остальных местах, после формулы нельзя ставить &amp;quot;;&amp;quot;, иначе скрипт вернет 0!&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
 if(int(AddressRecord.Time_Put_Max)&amp;gt;19, 100, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Прибавляет 100 рублей в случае, если максимальный срок доставки 20 часов или более''&lt;br /&gt;
&lt;br /&gt;
 if(pos(AddressRecord.Address, 'Аренда')&amp;gt;0, &lt;br /&gt;
           set($FormulaReplace, 1); &lt;br /&gt;
           1500&lt;br /&gt;
 , 0)&lt;br /&gt;
 &lt;br /&gt;
 ''В случае наличия подстроки &amp;quot;Аренда&amp;quot; в адресе заменяет штатное ценообразование на 1500 рублей''&lt;br /&gt;
&lt;br /&gt;
Объект AddressRecord может предоставить доступ к связанным таблицам :&lt;br /&gt;
* addressrecord.boxes&lt;br /&gt;
* addressrecord.packages&lt;br /&gt;
* addressrecord.clients&lt;br /&gt;
* addressrecord.price&lt;br /&gt;
* addressrecord.advprice&lt;br /&gt;
* addressrecord.userfields&lt;br /&gt;
* addressrecord.addressfld&lt;br /&gt;
* addressrecord.clients.userfields&lt;br /&gt;
* addressrecord.price.userfields&lt;br /&gt;
* addressrecord.zakaz&lt;br /&gt;
* addressrecord.zakaz.userfields&lt;br /&gt;
 &lt;br /&gt;
Чтобы получить доступ к полю VarCode из таблицы userfields необходимо записать AddressRecord.Userfields.VarCode. В присоединённой таблице может быть несколько записей чтобы получить к ним доступ предусмотрены функции _First, _EOF, _Next, _RecordCount, _Set.&lt;br /&gt;
&lt;br /&gt;
Пример: &lt;br /&gt;
 set($value1, 0); set($value2, 0);&lt;br /&gt;
 while(AddressRecord.userfields._EOF=0,&lt;br /&gt;
   if(AddressRecord.userfields.varCode=1, &lt;br /&gt;
     set($value1, if(AddressRecord.userFields.VarValue='Праздничная упаковка', 150, 0)), ''''''');&lt;br /&gt;
   if(AddressRecord.userfields.varCode=2, &lt;br /&gt;
     set($value2, AddressRecord.userFields.VarValue), ''''''');&lt;br /&gt;
   AddressRecord.userFields._Next;&lt;br /&gt;
 );&lt;br /&gt;
 int($value1) + int($value2)&lt;br /&gt;
&lt;br /&gt;
Пример делающий тоже самое что и выше но через поиск Locate:&lt;br /&gt;
 set($value1, if(addressrecord.userfields.VarValue('VarCode', 1)='Праздничная упаковка', 150, 0));&lt;br /&gt;
 set($value2, int(addressrecord.userfields.VarValue('VarCode', 2)));&lt;br /&gt;
 $value1 + $value2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
В скрипте доступны переменные: &lt;br /&gt;
«$FormulaKoeff» - это коэффициент на который умножится конечная цена (по умолчанию равна 1);&lt;br /&gt;
«$PriceCode»  - код прайса;&lt;br /&gt;
«$CurrentPriceConf»  - код услуги;&lt;br /&gt;
«$BasePrice» - стоимость всех услуг с взведённой галкой &amp;quot;+ к Базовой&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для вызова функции CalcBasePrice (Расчёт базовой цены) в скрипте объявленны переменные: $Count,$Collection,$Distance,$Wait.&lt;br /&gt;
&lt;br /&gt;
Существует поиск по ключевому полю (поиск регистронезависимый), например чтобы найти в таблице advprice введённое значение для текущей услуги, нужно сделать такую запись  addressrecord.advprice.value('priceconf', $CurrentPriceConf) - Первый параметр это ключевое поле, второй искомое значение. Если запись найдётся будет возвращено значение поле value, если нет функция вернёт значение 0.&lt;br /&gt;
 &lt;br /&gt;
Пример &lt;br /&gt;
 if(addressrecord.advprice.active('priceconf', 3)='T', addressrecord.advprice.price, 0)&lt;br /&gt;
 &lt;br /&gt;
 ''Смотрим включена ли услуга и если да, возвращаем рассчитанную стоимость&lt;br /&gt;
&lt;br /&gt;
Чтобы изменить значение записанное в объект addressrecord, нужно воспользоваться методом _set(keyfield, keyvalue, filed, value). Параметр keyfield - ключевое поле, keyvalue - искомое значение, filed - имя столбца, value - новое значение столбца. Сначала происходит поиск строки по ключу, далее меняется значение указанного столбца.&lt;br /&gt;
Пример, отключение услуги база:&lt;br /&gt;
  addressrecord.advprice._Set('priceconf', 1, 'active', 'F')&lt;br /&gt;
  priceconf - поле где записан код услуги;&lt;br /&gt;
  1 - услуга База;&lt;br /&gt;
  active - поле показывающее включение услуги.&lt;br /&gt;
&lt;br /&gt;
Также существует упрощенный метод _set, с двумя параметрами filed, value - он используется в шаблонах загрузки или в системных доп. возможностях где доступен объект addressrecord.&lt;br /&gt;
&lt;br /&gt;
==== Зарплата курьеров ====&lt;br /&gt;
&lt;br /&gt;
Формула возвращает сумму в основной валюте для каждой единицы корреспонденции, которая добавляется к штатному ценообразованию. Если формула установила в значение «Истина» переменную «$FormulaReplace», то значение, возвращаемое формулой заменяет штатное ценообразование. Переменные «$FormulaTablKoeff» и «$FormulaMoneyKoeff»  позволяют установить повышающий или понижающий коэффициент на стоимость доставки (по тарифной сетке) и услуги соответственно (процент от суммы, процент от стоимости доставки, ожидание).  Переменная «$UsingZoneName» и «$KurierZone» содержат название и код зоны соответственно, есть возможность поменять название зоны для отчета.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ===&lt;br /&gt;
&lt;br /&gt;
В поле текста задания может быть введен как текст с командами планировщика (см ниже), так и интерпретируемый скрипт, начинающийся с признака скрипта: «&amp;lt;?&amp;gt;». В контексте выполнения скрипта система создает объекты:&lt;br /&gt;
&lt;br /&gt;
TIniFile, Указывает на настроечный ini-файл планировщика.&lt;br /&gt;
&lt;br /&gt;
Все объекты создаются с пустыми именами.&lt;br /&gt;
&lt;br /&gt;
Для записи в лог планировщика нужно использовать функцию Print&lt;br /&gt;
&lt;br /&gt;
=== Репликатор ===&lt;br /&gt;
&lt;br /&gt;
== Прочее ==&lt;br /&gt;
ReplaceAddress(target, address) – Возвращает адрес последней доставки корреспонденции получателю target по адресу address от текущего клиента. При отсутствии такой доставки, возвращает address.&lt;br /&gt;
&lt;br /&gt;
GetPrice –возвращает рассчитанное значение цены, на основе прайс-листа клиента и данных о корреспонденции.&lt;br /&gt;
&lt;br /&gt;
GetKurierByStation(i) – возвращает код курьера, ассоциированного со станцией метро с кодом i.&lt;br /&gt;
&lt;br /&gt;
GetNewNumber – Возвращает не занятый номер единицы корреспонденции в текущем заказе.&lt;br /&gt;
&lt;br /&gt;
==История изменений==&lt;br /&gt;
&lt;br /&gt;
=== Недавние изменения ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TExcel добавлен метод ColumnDelete.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция InsertFirmAtt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
||В объект TExcel добавлен метод Align.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция CheckEan&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект функцию FillAdvPriceReport добавлены параметры ShowSumPrice,InsertColumns&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TSMS добавлен метод Log.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Добавлена функция Money.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция ValutaSign.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция GetPolygonByLatLon.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TTable добавлена функция SetMultiHeader, SetCustomHeader.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DownloadAttachment&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию SetRowHeight объекта TExcel добавлен параметр cnt.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция AsString.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция SetSize.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TADO добавлена функция ParseForIn.&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|В объект TBaseUtils из TBase перенесена функция FillExcelDoc.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция CalcAddressPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Все функции класса TBaseSupport перенесены в TBaseUtils. Класс TBaseSupport больше не существует.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функции RowInsert и RowDelete объекта TExcel добавлен параметр count.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция SendToMeaSoft&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils функция RecalcSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Новая функция Reverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 849 &amp;amp;nbsp; 22.02.2018 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TBaseUtils.TownByIndex добавлен параметр PriorityName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TBase добавлена функция GetNewPackagePos&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объекте TSMS доработан метод ExtraResult, добавлен параметр ParamName&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBase добавлена функция CalcAgentPrice&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateAddressForActDelivery&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функция CalcTownDeliveryDate заменена на CalcDeliveryDate&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TBaseUtils добавлена функция CreateSpecialSMA&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция SignatureUrl&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена функция LoadFromStr.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetPen.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TCanvas добавлена функция SetBrush.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В объект TPicture добавлена поддержка чтения в формате PNG.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|В функцию TCanvas.DrawPic параметр Mode&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Свойство TPicture.Canvas&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция DeleteFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 758 &amp;amp;nbsp; 29.03.2017 ===&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция GetPolygonByAddress&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция ParamsCount&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Объект TZip&lt;br /&gt;
|-&lt;br /&gt;
||'''Изменено:'''&lt;br /&gt;
|Функции CreateEAN и Create128 заменены одной функцией CreateBar, полностью совместимой с Create128, но добавлена поддержка EAN-13 и Interleaved 2-5 (для Почты России). В системе функции оставлены для обратной совместимости, но более не являются документированными и рекомендованными к использованию.&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Параметр text в функцию Cell объекта TExcel&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция UrlEncode &lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция IncDay теперь может принимать параметр count&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функции FtpGet, FtpPut, TTable.SetCell()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 452 &amp;amp;nbsp; 26.02.2014 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция Time&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция FixedIntToStr&lt;br /&gt;
|-&lt;br /&gt;
||'''Добавлено:'''&lt;br /&gt;
|Функция TimePeriod&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена функция приёма смс -  ReceiveSMS&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция STR2UTF&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция SAVETOFILE&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.SetSheetName&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;FILESTR&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Расширены возможности объекта addressrecord в формулах тарифов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 308 &amp;amp;nbsp; 24.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В функции загрузки таблиц из TADO добавлено условие, что поля, названия которых начинаются с &amp;quot;-&amp;quot; не выгружаются. Таким образом можно скрывать служебные поля из результирующего набора.&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowAutoFit &lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция TExcel.RowInsert &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 300 &amp;amp;nbsp; 01.11.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В объекте TCSVFile добавилась возможность запрашивать значения не только текущей записи через параметр сдвига&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В пользовательские отчеты добавлен тип &amp;quot;UPDOWN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлен объект TCSVFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 266 &amp;amp;nbsp; 14.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|В интерпретатор добавлена поддержка массивов&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Версия 265 &amp;amp;nbsp; 11.09.2012 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Добавлено:'''&lt;br /&gt;
|Функция CreateTrans в интерпретатор&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	<entry>
		<id>https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=12360</id>
		<title>Дополнительные возможности</title>
		<link rel="alternate" type="text/html" href="https://wiki.courierexe.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=12360"/>
				<updated>2021-07-06T07:02:14Z</updated>
		
		<summary type="html">&lt;p&gt;OlegD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Настройка для печатной документации ==&lt;br /&gt;
&lt;br /&gt;
CustomGivnAct - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Акты передачи курьеру&amp;quot; -&amp;gt; &amp;quot;Печатная форма акта: Пользовательская&amp;quot;.&lt;br /&gt;
Объявленные переменные&lt;br /&gt;
%code% - коды записей в выдаче которые необходимо распечатать&lt;br /&gt;
%docdate% - дата установленная в выдаче&lt;br /&gt;
%dockurier% - ФИО курьера показанного в выдаче&lt;br /&gt;
%dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)&lt;br /&gt;
&lt;br /&gt;
Пользовательская форма акта, будет печататься только по заказам со статусом &amp;quot;На руках&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintNakls - Вызывается перед печатью накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
OnAfterPrintNakls - Вызывается после печати накладных, содержит %code% - коды всех адресов  (через запятую).&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintOneNakl - Вызывается перед печатью накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnAfterPrintOneNakl - Вызывается после печати накладной, содержит %code% - код адреса.&lt;br /&gt;
&lt;br /&gt;
OnBeforePrintSticker - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.&lt;br /&gt;
&lt;br /&gt;
OnAfterItemPrint - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.&lt;br /&gt;
&lt;br /&gt;
== Настройка всплывающих окон==&lt;br /&gt;
&lt;br /&gt;
OnGivnStateChanged - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора). Переменная %RetNotScanned% принимает значение true, если при установленной переменной &amp;quot;Запрашивать возвратнные документы при приеме&amp;quot; = &amp;quot;Требовать маркировки наклейкой&amp;quot; пользователь не стал сканировать наклейку.&lt;br /&gt;
&lt;br /&gt;
OnAfterGivnStateChanged - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId%  указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)&lt;br /&gt;
&lt;br /&gt;
OnBeforeAddressSave - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). Тег %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;. Если результат функции -1, то происходит отмена сохранения без ошибки (abort). &lt;br /&gt;
&lt;br /&gt;
OnAfterAddressSave - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: &amp;quot;Функции - Ввод заявок по фото&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
OnBarScan - Скриптовая обработка штрих-кода перед поиском&lt;br /&gt;
&lt;br /&gt;
AfterAddressAcceptance - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции).  Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код. &lt;br /&gt;
&lt;br /&gt;
BeforeAddressAcceptance - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code)  . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.&lt;br /&gt;
&lt;br /&gt;
OnAddToShippingPlace - событие после добавление корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка&lt;br /&gt;
&lt;br /&gt;
GetTypeShippingPlace - событие перед добавление корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.&lt;br /&gt;
&lt;br /&gt;
DAILY - задание выполняемое один раз в день&lt;br /&gt;
&lt;br /&gt;
OnGivnKurierStateChanged - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера.В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.&lt;br /&gt;
&lt;br /&gt;
OnBeforeGivnStatus - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи, %address% - код  адреса&lt;br /&gt;
&lt;br /&gt;
== Настройка документов ==&lt;br /&gt;
CustomAddressPrnForm2 - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная &amp;quot;Справочники&amp;quot; -&amp;gt; &amp;quot;Переменные&amp;quot; -&amp;gt; &amp;quot;Печать&amp;quot; -&amp;gt; &amp;quot;Упрощенные печатные формы&amp;quot; -&amp;gt; &amp;quot;Тип упрощенной печатной формы: 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
GetTypeShippingPlace  - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code%  - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.&lt;br /&gt;
&lt;br /&gt;
OnShelvingBarScan - Обработка отсканированного штрих-кода при комплектации.&lt;br /&gt;
&lt;br /&gt;
AdditionalStringForSMA - Дополнительные условия разделения актов на нал. и безнал.Содержит %code%, где передано значение типа акта: &amp;quot;nal&amp;quot; - наличный, &amp;quot;bnal&amp;quot;- безналичный.&lt;br /&gt;
&lt;br /&gt;
CustomBillDetaling - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.&lt;br /&gt;
&lt;br /&gt;
OnSchetChanged  - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code&lt;br /&gt;
&lt;br /&gt;
ExceptionsForAPK  - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый  - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе). %AdditionalParam% - дополнительный параметр, который можно установить в интерпретаторе при вызове функции CreateAddressTransferAct.&lt;br /&gt;
  пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием &amp;quot;Доставка&amp;quot;  - не попадает в АПК&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); &lt;br /&gt;
   $ExcStr&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  пример для изменения фильтрации сразу у двух запросов:&lt;br /&gt;
  &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');&lt;br /&gt;
    SET($WHERE2, ''); rem('условие отбора возврата товаров');&lt;br /&gt;
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OnOrderCountCalc -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной &amp;quot;Считать кол-во отправлений по текущему месяцу&amp;quot; (UseCurrentMonthCount, нет - 0, да - 1)&lt;br /&gt;
&lt;br /&gt;
OnGetZakazCount - подменяет стандартный подсчет количества отправлений для расчета стоимости доставки (в том чисте отменяется вызов доп.возможности OnOrderCountCalc). Должна возвращать кол-во корреспонденций. В процедуру передаются следующие переменные: %CntAccType% - вид подсчета: 0-по заказу, 1-за месяц по клиенту; %code% - код клиента (обязателен для вида подсчета 1); %ZakazDate% - дата заказа; %CountByMonthType% - способ подсчета заказов за месяц (1-по текущему месяцу; 0 - по предыдущему); %UseCurrentUrgency% - 1:подсчитывать только корреспонденцию определенного режима срочности; %Mode% - этот режим срочности (при подсчете по заказу учитываются так же связанные режимы срочности, указанные в параметре 5 режима срочности в таблице статусов); %SeparateIntercityDelivery% - 1:не учитывать междугородние доставки; В функцию так же передается объект fieldlist.&lt;br /&gt;
&lt;br /&gt;
== Настройка вида маркера ==&lt;br /&gt;
Настройки находятся в &amp;quot;Отчеты&amp;quot; -&amp;gt; &amp;quot;Дополнительные возможности&amp;quot; - &amp;quot;Системные&amp;quot;. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В функции передается объект Table2Map типа [[Руководство программиста#Объект TFieldObject|TFieldObject]]. Получить поля с примерами значений из него можно например так:&lt;br /&gt;
 showmessage(table2map._GETTABLEINFO)&lt;br /&gt;
(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).&lt;br /&gt;
&lt;br /&gt;
Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.&lt;br /&gt;
&lt;br /&gt;
Так же текущее состояние окна карты доступно через переменные:&lt;br /&gt;
&lt;br /&gt;
$PlanDate - Выбранная дата, на которую планируется.&lt;br /&gt;
&lt;br /&gt;
$KurierCode - Код выделенного курьера.&lt;br /&gt;
&lt;br /&gt;
$MetroCode - Код выделенной станции метро (маршрута).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:&lt;br /&gt;
&lt;br /&gt;
 set($s, try( &lt;br /&gt;
  error('вот тут ошибка, которую вы увидите в виде сообщения');&lt;br /&gt;
 ));&lt;br /&gt;
 if($s, showmessage($s), '');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MapObjectFigure''' - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник, 2 - треугольник, 3 - увеличенный треугольник, чтобы  квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.&amp;lt;br/&amp;gt;&lt;br /&gt;
Например:&lt;br /&gt;
 if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))&lt;br /&gt;
Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный треугольник, иначе - квадрат.  &lt;br /&gt;
&lt;br /&gt;
'''MapObjectColor''' - Доп. возможность позволяет установить цвет маркера на карте.&lt;br /&gt;
При помощи данных параметров можно создать условия отображения маркеров.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для доступа к настройкам доступны переменные:&lt;br /&gt;
&lt;br /&gt;
$Color&lt;br /&gt;
&lt;br /&gt;
$DefaultColor&lt;br /&gt;
&lt;br /&gt;
$PlanedColor&lt;br /&gt;
&lt;br /&gt;
$SelectedPlanedColor&lt;br /&gt;
&lt;br /&gt;
$GetKurierColor&lt;br /&gt;
&lt;br /&gt;
Например: &lt;br /&gt;
 if((table2map.kurier&amp;lt;20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)&lt;br /&gt;
Не запланированные отправления на текущий день будут отображаться выбранным цветом, иначе - цветом по-умолчанию.&lt;br /&gt;
&lt;br /&gt;
== Настройка мобильного приложения ==&lt;br /&gt;
&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
OnEveryStartApp - выполняется при запуске программы.&lt;br /&gt;
&lt;br /&gt;
OnEveryCloseApp - выполняет при закрытии программы.&lt;br /&gt;
&lt;br /&gt;
OnBarScan - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.&lt;br /&gt;
&lt;br /&gt;
OnMapBeforeGeolocation - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist. &lt;br /&gt;
 Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&amp;lt;?&amp;gt;&lt;br /&gt;
if(station=0, &lt;br /&gt;
  _set('lon', null);&lt;br /&gt;
  _set('lat', null);&lt;br /&gt;
  _set('searchCoordinate', 'F');&lt;br /&gt;
,0)&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OnSyncInsert - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
OnSyncUpdate - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.&lt;br /&gt;
&lt;br /&gt;
 Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. &lt;br /&gt;
 Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:&lt;br /&gt;
 &amp;lt;NOWIKI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?&amp;gt;&lt;br /&gt;
rem(ticket 23584, 23583); &lt;br /&gt;
if( ('%tablename%'='address'), &lt;br /&gt;
  query('UPDATE address a &lt;br /&gt;
    JOIN trace t ON t.address=a.code AND t.state=1 &lt;br /&gt;
    JOIN zakaz z ON z.code=a.zakaz&lt;br /&gt;
  SET &lt;br /&gt;
    a.mode = IF(z.source=646, 3, 2)&lt;br /&gt;
  WHERE &lt;br /&gt;
    a.code = %code%&lt;br /&gt;
    AND a.station=65535&lt;br /&gt;
    AND (&lt;br /&gt;
     (z.source=646 AND a.mode&amp;lt;&amp;gt;3) OR &lt;br /&gt;
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR&lt;br /&gt;
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) &amp;gt; &amp;quot;21:59:59&amp;quot; AND a.mode=1)&lt;br /&gt;
    )')&lt;br /&gt;
, '');&amp;lt;/NOWIKI&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
OnCalcSalary - Событие происходит после начисления зарплаты курьеру.  %code% - код созданного начисления kurier_pays.code ; %dateto% - дата до которой рассчитали зарплату; И отдельно части зарплаты:  %profit%  -итоговая сумма; %Zarab% - сдельная часть; %Oklad% - оклад; %Friends% - выплаты за приведенных; %Other% - разное; %AgentMoney% - агентское вознаграждение;  %StandingMoney% - Доплата за стаж; %Bonus%, %Shtraf% - бонусы и штрафы.&lt;br /&gt;
&lt;br /&gt;
OnTicketSetCusr - Пользовательский скрипт перед назначением ответственного в тикетах. %code% - код тикета; %Cusr% - код назначаемого пользователя (может быть равно NULL)&lt;/div&gt;</summary>
		<author><name>OlegD</name></author>	</entry>

	</feed>