Контакты Клиентам Цены Программы Демо Форум
ПК-Софт: на главную страницу
Разработка программного обеспечения
На главную страницу ПК-Софт
 Клиентам
 Описание
 стандартных
 отчетов
 Закрытие
 периода
 Дополнительный
 номер
 в документе
 Возможности
 командной строки.
 Пользовательское
 меню
 Встроенные
 функции
 форматы и
 переменные
 Модуль обмена
 Импорт
 документов

 

 
 
Дополнение к документации  
 
Встроенные функции, форматы и переменные.


     Общие положения
     Функции
     Числовой формат
     Переменные в отчетах

     Пременные в бланках

    

 Общие положения

     Данный документ является дополнением к Руководству пользователя; в части описания встроенных функций к п.9.1.3. т. Основный модуль и п.8.6 т. Дополнительные модули.

     Trade Assistant имеет целый ряд встроенных функций, которые можно использовать при построении выражений. В диалоге, изображенном на Рис. 1, после списка доступных файлов следует строка Функции. Если установить курсор на эту строку, то в правом окне появится список встроенных функций.

 

Рис. 1.

 

    Установите курсор на нужную функцию и дважды щелкните мышкой - название функции вместе с шаблоном для ввода параметров будет вставлено в имеющееся выражение.

     Шаблоны для ввода параметров необходимо заменить на идентификаторы полей или другие выражения, следя при этом за тем, чтобы тип этого выражения соответствовал типу параметра, указанному в описании функции.

     Ниже приведены описания используемых в системе функций: при их описании будем придерживаться следующего синтаксиса:

          функция( <аргумент1: тип1>, … ): [тип функции], описание функции, примеры, замечания.

           где
           функция - имя функции из нижеприведённого списка;
           [тип функции] - тип возвращаемого функцией значения.

    Доступны следующие типы данных: число целое байт, число целое два байта, число целое четыре байта, число вещественное, строка (текст), дата, логическое.

    Очевидно, что в качестве аргументов могут использоваться как непосредственные значения полей базы данных, так и выражения, включающие эти поля, а также другие функции. Кроме приведённых в описании примеров, дополнительные, более сложные примеры, примеры вынесены в конец списка.

 

Функции

     

choose
( <целое выражение>, <выражение 1>, <выражение 2>, … ): [тип <выражений>]
 

     Возвращает выражение 1, если значение целого выражения равно 1, выражение 2, если значение целого выражения равно 2, и т.д. Количество выражений в функции - до 30. Если значение аргумента целое выражение больше, чем количество выражений, то функция возвращает последнее выражение.

Пример. Если вы хотите получить в отчете не порядковый номер дня недели, а его название, то задайте в колонке, такое выражение:
choose(weekday(Date), 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье')

Замечание. Аргументы выражение 1, выражение 2, … должны быть одного типа.

 
day
( <дата> ): [целое]
 

     Возвращает порядковый номер дня в месяце от заданной даты.
     Пример.

           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.
Таблица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'.

 
iif
( <логическое выражение>, <выражение 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'.

 
ftos
( <формат: строка>, <действительное выражение> ): [строка]
       Преобразует значение действительного выражения в строку в соответствии с форматом. Форматная строка строится по тем же правилам, что и в диалогах вывода данных (см. п.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.
 
pos
( <строка 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