|

|
|
 |
|
| |
|
Дополнение к документации
|
| |
|
Общие положения |
| Функции |
| Числовой формат
|
| Переменные в отчетах
|
|
Пременные в бланках
|
|
|
|
Данный документ является
дополнением к Руководству пользователя; в части описания встроенных
функций к п.9.1.3. т. Основный модуль и п.8.6 т. Дополнительные
модули.
Trade Assistant имеет
целый ряд встроенных функций, которые можно использовать при построении
выражений. В диалоге, изображенном на Рис. 1, после списка доступных
файлов следует строка Функции. Если установить курсор на эту строку,
то в правом окне появится список встроенных функций.
|
|
|
Рис. 1.
|
|
|
|
Установите курсор на нужную
функцию и дважды щелкните мышкой - название функции вместе с шаблоном
для ввода параметров будет вставлено в имеющееся выражение.
Шаблоны для ввода
параметров необходимо заменить на идентификаторы полей или другие
выражения, следя при этом за тем, чтобы тип этого выражения соответствовал
типу параметра, указанному в описании функции.
 Ниже приведены описания
используемых в системе функций: при их описании будем придерживаться
следующего синтаксиса:
   функция(
<аргумент1: тип1>, … ): [тип функции], описание функции,
примеры, замечания.
 
где
  функция
- имя функции из нижеприведённого списка;
  [тип
функции] - тип возвращаемого функцией значения.
Доступны следующие типы данных:
число целое байт, число целое два байта, число целое четыре байта,
число вещественное, строка (текст), дата, логическое.
Очевидно, что в качестве
аргументов могут использоваться как непосредственные значения полей
базы данных, так и выражения, включающие эти поля, а также другие
функции. Кроме приведённых в описании примеров, дополнительные,
более сложные примеры, примеры вынесены в конец списка.
|
|
|
|
|
|
|
( <целое выражение>, <выражение 1>, <выражение
2>, … ): [тип <выражений>] |
| |
Возвращает выражение 1, если
значение целого выражения равно 1, выражение 2, если значение
целого выражения равно 2, и т.д. Количество выражений в функции
- до 30. Если значение аргумента целое выражение больше, чем
количество выражений, то функция возвращает последнее выражение.
Пример. Если вы хотите получить в отчете не порядковый
номер дня недели, а его название, то задайте в колонке, такое
выражение:
choose(weekday(Date), 'Понедельник', 'Вторник',
'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье')
Замечание. Аргументы выражение 1, выражение 2,
… должны быть одного типа.
|
| |
|
|
( <дата> ): [целое] |
| |
Возвращает порядковый номер
дня в месяце от заданной даты.
Пример.
day(jdate(23,06,1999)) возвращает значение 23.
|
| |
|
dailyrate
|
( <валюта: строка>, <дата> ): [действительное] |
|
|
Возвращает курс указанной валюты
на заданную дату. Если на заданную дату не был установлен,
функция возвращает курс на ближайшую предыдущую дату.
Пример.
dailyrate('руб',today()-15)
возвращает курс рубля (к базовой валюте) полмесяца назад.
|
| |
|
docsign
|
( <целое выражение> ): [целое] |
| |
Возвращает знак (-1, 0, +1)
типа документа.
Товарные документы имеют знак +1, если товары приходуются на
склад (как, например, в операциях Закупка: приход, Возврат товара),
знак -1, если товары списываются со склада (например, Продажа:
отгрузка) и 0 при неизменном состоянии склада (Продажа: резерв,
Закупка: заказ).
Исключением является операция Поправка. Для неё docsign возвращает
+1, а знак операции определяется знаком количества товара: положительный
при Qty>0 и отрицательный при Qty<0.
С появлением новых типов операций для товарных позиций документов
будет сохраняться для произведения docsign(Type)*Qty правило:
положительный знак произведения - приход товара, отрицательный
знак произведения - расход товара.
Платежные документы имеют знак +1, если деньги поступают на
расчетный счет, и -1, если деньги списываются с расчетного счета.
Значения функции docsign приведены в Таблице
1. |
| |
|
doctype
|
( <целое выражение> ): [строка] |
| |
Возвращает мнемонический код типа документа. Мнемонические
коды приведены в Таблице1. |
|
|
|
Операция,Тип
|
Type
Мнемокод
|
doctype(Type)
|
Знак
docsign(Type)
|
Примечание
|
| Закупка: приход |
0
|
PI
|
+1
|
purchase invoice |
| Закупка: заказ |
1
|
PO
|
0
|
purchase order |
| Продажа: отгрузкà |
2
|
SI
|
-1
|
sales invoice |
| Продажа: резерв |
3
|
SP
|
0
|
sales proforma |
| Продажа: заказ |
4
|
SQ
|
0
|
sales quotation |
| Поправка |
5
|
AD
|
+1
|
ajustment |
| Перемещение со склада
на склад: приход |
4
|
TR+
|
+1
|
transfer of goods(incoming) |
| Перемещение со склада
на склад: расход |
7
|
TR-
|
-1
|
transfer of goods(outgoing) |
| Возврат от покупателя
|
13
|
RE
|
+1
|
restitution |
| Возврат поставщику |
22
|
RV
|
-1
|
restitutionto vendor |
| Расчеты с покупателями:
платеж |
9
|
CP
|
+1
|
customer's payment |
| Расчеты с покупателями:
возврат |
10
|
CR
|
-1
|
customer's return |
| Расчеты с поставщиками:
платеж |
11
|
VP
|
-1
|
vendor's payment |
| Расчеты с поставщиками:
возврат |
12
|
VR
|
+1
|
vendor's return |
| Перевод со счета на счет:
поступление денег |
14
|
TF+
|
+1
|
transfer of finances (incoming) |
| Перевод со счета на счет:
снятие денег |
15
|
TF-
|
-1
|
transfer of finances (outgoing) |
| Сборка |
17
|
AS
|
+1
|
assemble |
| Разборка |
19
|
DA
|
+1
|
disassemble |
| Производство |
21
|
PR
|
+1
|
production |
|
|
dtos
|
( <формат даты: строка>, <дата> ): [строка] |
| |
Преобразует указанную дату
в строку в соответствии с форматной строкой.
Форматная строка строится по тем же правилам, что и в диалогах
вывода данных типа дата (см. п.8.6 т. Дополнительные модули
Руководства пользователя).
Пример.
dtos( 'dd.mm.yyyy "г."', today()-2 ) 20го июня 1999
года возвращает строку '18.06.1999 г.';
dtos( 'mmmm, d"th" yyyy', jdate(8,12,1998) ) возвращает
строку 'December, 8th 1998'.
|
| |
|
|
( <логическое выражение>, <выражение 1>, <выражение
2> ): [тип <выражений>] |
| |
Возвращает значение выражения
1, если логическое выражение истинно, и значение выражения 2,
если логическое выражение ложно. Допускается вложение функций
iif; максимальная вложенность - 8.
Замечание. Выражение 1 и выражение 2 должны быть одного
типа. |
| |
|
inwords
|
( <действительное выражение>, <валюта: строка>,
<формат: целое> ): [строка] |
| |
Возвращает прописью значение
действительного выражения. Полное название валюты и соответствующее
название разменной валюты необходимо указать в Справочнике валют
на закладке Параметры. Аргумент формат может иметь три значения:
0 - выводится прописью целая часть
суммы без указания валюты; например: inwords(23.57,'руб',0)
возвращает 'Двадцать три';
1 - выводится прописью целая часть
суммы с указанием валюты в нужном склонении; например: inwords(23.57,'руб',1)
возвращает 'Двадцать три рубля';
2 - выводится прописью целая часть
суммы с указанием валюты в нужном склонении и числом -дробная
часть с указанием соответствующей разменной валюты; например,
inwords(23.57,'руб',2) возвращает 'Двадцать три рубля 57 копеек'.
|
| |
|
inwordse
|
( <действительное выражение>, <формат: целое>
): [строка] |
| |
Возвращает прописью на английском
языке значение целой части действительного выражения. Аргумент
формат может иметь три значения:
0 - выводится прописью прописными
буквами; например: inwordse(23.57,0) возвращает строку 'TWENTY
THREE';
1 - выводится прописью строчными
буквами с первой прописной буквы; например: inwordse(23.57,1)
возвращает строку 'Twenty three';
2 - выводится прописью строчными
буквами; например, inwordse(23.57,2) возвращает строку 'twenty
three'.
|
| |
|
|
( <формат: строка>, <действительное выражение>
): [строка] |
| |
Преобразует значение действительного
выражения в строку в соответствии с форматом. Форматная строка
строится по тем же правилам, что и в диалогах вывода данных
(см. п.8.6 т. Дополнительные модули Руководства пользователя).
Замечание 1. В отличие
от окна задания формата вывода (в диалоге Редактирования колонки
Генератора отчёта либо в Параметрах поля данных или Параметрах
формулы Редактора бланков) недоступны цветовые атрибуты
Замечание 2. Для вывода
незначащих нулей требуется указание в маске '0', а для отрицательных
чисел ''.
Например:
ftos(
'#,###.##',1234.0 ) возвращает строку '1 234';
ftos(
'#,##0.00',1234.0 ) возвращает строку '1 234.00'.
ftos(
'#.###0;#.###0;""', -0.123 ) возвращает строку
',1230';
ftos(
'#;-#,##0.##', -0.1234 ) возвращает строку '0.12'. |
| |
|
jdate
|
( <день: целое выражение>, <месяц: целое выражение>,
<год: целое выражение> ): [дата] |
| |
Возвращает дату, составленную
из заданных дня, месяца и года. Например, jdate(23,6,1999)
возвращает дату 23.06.1999. |
| |
|
len
|
( <строка> ): [целое] |
| |
Возвращает длину заданной строки.
Например, len('abcd') возвращает значение 4. |
| |
|
ltos
|
( <целое выражение> ): [строка] |
| |
Преобразует значение целого
выражения в строку. Например, ltos(123) возвращает строку
'123'. |
| |
|
month
|
( <дата> ): [целое] |
| |
Возвращает порядковый в году
номер месяца заданной даты. Например, month(jdate(23,06,1999))
возвращает значение 6. |
| |
|
|
( <строка 1>, <строка 2> ): [целое] |
| |
Определяет, входит ли строка
1 в строку 2, как подстрока; если входит, возвращает позицию,
с которой строка 1 начинается в строке 2, и 0 в противном случае.
Пример.
pos('cd','abcde')
возвращает 3, а pos('abcde', 'cd') возвращает 0. |
| |
|
round
|
( <действительное выражение>, <точность: целое выражение>
): [действительное] |
| |
Возвращает округленное значение
действительного выражения. Точность округления определяется
значением целого выражения.
Например, если вы хотите
получить в отчете цену товара, округленную до рубля, то задайте
значение колонки выражением: round(Price,0); до десятков копеек:
round(Price,1); до сотен рублей: round(Price,2).
Замечание. В программе, в описаниях этой функции возвращаемый
тип ошибочно указан как [целое]. |
| |
|
substr
|
( <строка>, <целое выражение 1>, <целое выражение
2> ): [строка] |
| |
Возвращает подстроку заданной
строки, где
целое
выражение 1 - порядковый слева номер символа начала подстроки,
целое
выражение 2 - число символов в подстроке.
Например, substr('LaserJet',
6, 3) возвращает строку 'Jet'. |
| |
|
sum
|
( <поименованный массив>, <действительное выражение>
): [действительное] |
| |
Возвращает сумму выражения поименованного массива. В настоящей
версии работает только в Редакторе бланков. |
| |
|
today
|
():[дата] |
| |
Возвращает текущую дату. |
| |
|
week
|
( <дата> ): [целое] |
| |
Возвращает порядковый в году номер недели заданной даты. Например,
week(jdate(23,06,1999)) возвращает значение 26. |
| |
|
weekday
|
(<дата> ): [целое] |
| |
Возвращает порядковый в неделе номер дня
заданной даты. Например, weekday(jdate(23,06,1999)) возвращает
значение 3, что соответствует среде. |
| |
|
year
|
(<Дата>): [Целое] |
| |
Возвращает год заданной даты.
Например,
year(jdane(23,06,2004)) возвращает значение 2004
|
| |
|
|
Несколько дополнительных замечаний.
Функции преобразования типов широко используется совместно
с функциями iif и choose,
а также при объединении строк для приведения данных к единому
(строковому) типу.
Для преобразования данных целого типа в действительное
можно пользоваться простым выражением <Действительное>=<Целое>*1.0
При задании логических выражений (например, в функции
iif, а также задание дополнительных
фильтров при построении отчётов) со строковыми выражениями,
необходимо следующее "правило вхождения подстроки":
если вы сравниваете строку 1 со строкой 2, то сравнение считается
успешным, если строка 1 начинается со строки 2.
Например, iif( Animal='Кошка',
'Whiskas', 'сосиски' ) возвращает строку 'Whiskas' для всех
Animal, начинающихся со слова "Кошка" - "Кошка
Машка", "Кошка Дашка", "Кошка Муся",
"Кошка Дуся" и т.д. Это правило действует и при
задании фильтров по строковым полям базы данных.
Так, установив при построении
отчёта по документам для фильтра Расчётный счёт значение 'Касса',
если у вас есть счета 'Касса' и 'Касса магазина', в отчёт
попадут документы по обеим "кассам".
Если вы задали в фильтре Категория
значение 'Товары', а у вас в Справочнике товаров есть Категории
'Товары для дома', 'Товары для огородников', 'Товары для спорта',
'Товары - детям', - то в отчёт попадут все эти "Товары…".
Если вы назвали свои основные
склады Склад1, Склад2, Склад3, а остальные Ремонт, Брак, Бой,
Списание, В пути, и т.д., то задав при построении отчёта по
движению товара для фильтра Склад значение 'Склад', вы получите
отчёт движения товара по основным складам.
Пример изощрённого использования
форматов числовых данных:
ftos(
'#,###.00 "р.";#,###.## "?!";"!!!-"',
Account.Amount )
возвращает для положительного
остатка на расчётном счёте Account.Amount = 1.00 строку '1.00
р.';
для отрицательного остатка
Account.Amount = -1.00 строку '1 ?!';
для равного нулю остатка Account.Amount
= 0.00 строку '!!!-'.
Пример использования
функции pos. Чаще всего в отчетах
используется свойство функции возвращать 0, если подстрока
не содержится в строке, и положительное число в противном
случае. Предположим, что вы хотите включить в отчет только
товары, в названии которых встречается слово LaserJet (не
обязательно с начала строки).
Для получения желаемого результата включите дополнительный
фильтр, и занесите в него выражение:
pos('LaserJet',Descr)
> 0
Напомним, что Descr - идентификатор поля Название базы Справочник
товаров.
|
|
|
|
|
|
В Генераторе
отчетов для задания формата вывода чисел использовать цветовые атрибуты
(red), (blue) и (green).
Пример.
Использование формата:
#,###
"%";(red)#,### "%";"-"
в колонке отчета выведет положительное число черным цветом, дописав
в конце символ процентов (38%), отрицательное число выведется
красным цветом, с символом процентов в конце (-38%),
вместо нуля выведется прочерк (-).
В Редакторе бланков
цветовые атрибуты возможны по 16-ти оттенкам спектра, перечисленным
на закладке " Фон".
Также существует "банковский формат"
!, выводящий действительное число прописью. Строка начинается
с прописной и выводится строчными буквами: целая часть прописью
сопровождается словом 'рублей', дробная часть округляется до сотых
и выводится числом в сопровождении слова 'коп.'.
|
|
|
|
|
В Генераторе отчётов в заголовке и подвале
отчёта (открывается по кнопке Параметры) доступны переменные:
%D
(текущая дата),
%P
(текущая страница отчёта),
%A
(имя, под которым пользователь вошёл в компанию).
Кроме того, возможно использование
строковых переменных, сформированных в диалоге Переменные. Вносимые
в открывающийся перед построением отчёта фильтр интервальные значения
доступны через переменные с префиксами 'min.' и 'max.'. Например,
при построении отчёта за интервал дат в переменной min.Date
будет нижняя граница интервала, а в max.Date верхняя.
Пример.
Строковая переменная
Header='Продажи
за период с ' + dtos( 'dd.mm.yyyy "г."', min.Date ) + ' по ' + dtos(
'dd.mm.yyyy "г."', max.Date )
при построении отчета с установкой интервала в фильтре дат 01.03.1999
и 31.03.1999 выдаст строку
'Продажи
за период с 01.03.1999 г. по 31.03.1999 г.'.
Для единственного значения параметра
эти переменные будут равны: например, используя фильтр по контрагенту
и присвоив ему значение 'ЛОТОС', вы в отчёте по обеим переменным
min.apl и max.apl будете получать 'ЛОТОС'.
|
|
|
|
|
В Редакторе бланков для нумерации
страниц доступны переменные:
Page
(номер страницы) и
PageNum
(количество страниц).
Кроме того, наличие в объекте Формула
неизвестной строковой переменной (в строковых выражениях - в кв.
скобках) воспринимается как строка, вводимая при печати документа.
|
|
|
| © ООО "ПК-СОФТ" 2004 |
|
|