- Журнал изменений в версиях системы Papyrus
- PAPYRUS (Демо)
- Papyrus: возможности системы
- Papyrus: руководство пользователя
- Введение
- Установка
- Запуск и завершение работы
- Интерфейс пользователя
- Печать информации
- Универсальные концепции
- Географические объекты
- Персоналии
- Товары
- Бухгалтерские справочники
- Операционные справочники
- Текущие параметры системы
- Документы
- Бухгалтерские документы
- Товарные документы
- Книги продаж и покупок
- Основные средства
- Рента
- Инвентаризация
- Производство
- Персональные карты
- Персональные операции
- Кадры
- Расчет заработной платы
- Управление проектами и задачами
- Отчетность
- Бухгалтерская отчетность
- Язык описания данных DL200
- Бизнес-показатели
- Отчетность по расчетам с дебиторами и кредиторами
- Товарная отчетность
- Статистика продаж и прогнозирование спроса
- Розничные продажи и торговое оборудование
- Интерфейс с сервисом IP-телефонии
- Управление мобильной торговлей
- Разделенные базы данных
- Импорт и экспорт данных
- Интеграция с другими системами и сервисами
- Специальный процессинг данных
- Job-Server
- Настройка и администрирование системы
- Защита и восстановление данных
- Язык описания формул
- Язык описания данных DL600
- COM-интерфейсы
- Приложения
- Глоссарий
- Библиотека
- Все об обязательной маркировке 2019
- Все об онлайн-кассах
- Презентации
- Руководства
- Свидетельство о регистрации системы Papyrus
- Технологии и функции
Язык DL600 является декларативным языком, применяемым для описания разнообразных структур данных, используемых системой Papyrus .С помощью этого языка определяются следующие категории данных системы:
- COM-интерфейсы
- Внутреннее применение языка. Используется только на стадии разработки.
- Структуры таблиц баз данных
- Внутреннее применение языка. Используется на стадии разработки для определения структур таблиц баз данных.
- Экспортные структуры данных
- Применяется как на этапе разработки, так и при эксплуатации системы для кастомизации стандартных (определенных в дистрибутиве) структур данных для печати и экспорта.
Синтаксис языка
Лексические соглашения
Чувствительность к регистру
Язык DL600 является чувствительным к регистру символов.Например, слова Goods и goods с точки зрения компилятора языка различны.
Пробелы и перевод каретки
Символы пробела, табуляции, перевода каретки, за исключением разделения слов, являются не значащими. То есть, несколько таких символов, следующих последовательно друг за другом воспринимаются компилятором как один.Зарезервированные слова
Следующие слова зарезервированы компилятором:
- IMPORT
- import
- data
- interface
- struct
- enum
- iclass
- declare
- iteration
- link
- if
- else
- format
- in
- out
- inout
- default
- version
- library
- uuid
- abstract
- property
- table
- index
- file
- void
- bool
- int
- long
- uint
- char
- int8
- int16
- short
- int32
- autolong
- int64
- uint8
- uint16
- uint32
- float
- double
- money
- decimal
- string
- lstring
- date
- time
- datetime
- key
- variant
- wchar
- note
- raw
- blob
- clob
Структура файла
Файл DL600 представляет собой набор описаний данных. Каждый набор состоит из полей заголовка (DEFAULT HEAD) и итераторов.
Определение поля
Вычисляемые поля
Функции
- @(struc-name, int)
- Специальная синтаксическая конструкция, возвращающая ссылку на структуру данных struc-name с идентификатором, определяемым вторым параметром.
@(Goods, 20).Name Выражение возвращает наименование из структуры данных Goods с идентификатором 20. @(Person, GetTag("MANUF").ObjID) Выражение в данном примере возвращает ссылку на структуру Person с идентификатором, возвращаемом функцией GetTag("MANUF").ObjID.
- length(string)
- Возвращает длину строки. Результат long.
- sqrt(double a)
- Возвращает квадратный корень аргумента a. Результат: double.
- sqrt(int a)
- Возвращает квадратный корень аргумента a. Результат: double.
- round(double v, int p)
- Округляет значение первого аргумента v до точности p знаков после десятичной точки. Если p меньше нуля, то округляет до -p десятичного разряда. Результат: double.
- abs(double)
- Возвращает абсолютное значение аргумента. Результат: double.
- left(string s, int N)
- Возвращает первые N символов. Результат: string.
Номинальная длина результирующего поля равна номинальной длине аргумента s.
- right(string s, int N)
- Возвращает последние N символов.
Результат: string.
- middle(string s, int B, int N)
- Возвращает часть строки s с символа номер B длиной N символов.
Результат: string. Номинальная длина результата равна номинальной длине аргумента s.
- wrap(string s, int N)
- Возвращает первые N символов, если в них нет пробела, иначе - часть строки до последнего пробела в первых N символах. Результат: string.
- replace(string source, string pattern, string replacer)
- Замещает в строке source образец pattern на строку replacer. Результат: string.
Поиск pattern в строке source осуществляется с учетом регистра символов. Номинальная длина результата равна номинальной длине аргумента source.
- format(data, format_spec)
- Возвращает строку отформатированных данных data в соответствии со спецификацией format_spec. Результат: string.
- money2str(double D, long L)
- Возвращает сумму D прописью. L - максимальная длина строки. Результат: string.
- num2str(double D, long L)
- Возвращает число D прописью. L - максимальная длина строки. Результат: string.
- date2str(date D, long L)
- Возвращает число D в виде dd/mm/yy. L - максимальная длина строки. Результат: string.
- date2wstr(date D, long L)
- Возвращает число D прописью. L - максимальная длина строки. Результат: string.
- formatperiod(date start, date end)
- Форматирует строку периода, ограниченную датами start и end. Результат: string[30].
- printablebarcode(string barcode, long codeType)
- Преобразует штрихкод в формат, пригодный для печати штрихкода на обычном принтере. Если codeType равно нулю, то система считает, что передаваемый ей код barcode является розничным кодом (EAN-13, EAN-8, UPC-A, UPC-E конкретный тип кода система идентифицирует в зависимости от длины и символов кода).
Если codeType равно 39, то система формирует печатаемую версию штрихкода в формате Code39 (допустимы цифры и латинские символы, которые система переводит в верхний регистр).
Результат: string[20]. - barcodeaddcd(string barcode)
- Возвращает строку штрихкода, эквивалентную barcode, дополняя ее контрольной цифрой, если в конфигурации справочника товаров не установлен флаг ✓Штрихкод содержит контрольную цифру и длина barcode больше 3 и начальные символы barcode не соответствуют префиксу весового кода, заданного в конфигурации справочника товаров. Результат: string[16].
- datedmy(int day, int month, int year)
- Возвращает дату в которой день равен аргументу day, месяц - аргументу month, год - аргументу year. Результат: date.
- datezero()
- Возвращает пустую дату. Результат: date.
- timehms(int hour, int minut, int second)
- Возвращает время в котором час равен аргументу hour, минуты - аргументу minut, секунды - аргументу second. Результат: time.
- timezero()
- Возвращает пустое значение времени. Результат: time.
- (double) string
- Конвертирует строку в число, если это возможно, иначе возвращает 0. Результат: double.
- (double) int
- Преобразует число из типа int в тип double. Результат: double.
- (int) string
- Конвертирует строку в число, если это возможно, иначе возвращает 0. Результат: int.
- (int) double
- Преобразует число из типа double в тип int. Результат: int.
- if (long L) expr
- Возвращает expr, если L не равно 0. Результат имеет тот же тип, что и expr.
- if (long L) expr1 else expr2
- Возвращает expr1, если L не равно 0, иначе expr2. Типы данных у expr1 и expr2 должны быть одинаковыми. Результат имеет тот же тип, что и expr1.
- long L ? expr1 : expr2
- Возвращает expr1, если L не равно 0, иначе expr2. Типы данных у expr1 и expr2 должны быть одинаковыми. Результат имеет тот же тип, что и expr1.
Операторы
- +
- Оператор сложения. Его поведение зависит от типа операндов, к которому он применяется.
- int+int
- Складывает два целых числа. Результат int.
- double+double
- Складывает два действительных числа. Результат double. Если первый или второй операнд является целочисленным, то он преобразуется к double.
- date+int
- Прибавляет к дате указанное вторым операндом количество дней. Результат date. Если второй операнд является действительным числом, то он преобразуется к целочисленному отбрасыванием дробной чисти.
- string+string
- “Склеивает” две строки. Результат string.
Спецификаторы формата вывода
[alignment][overflow][length][.prec][flags]
Alignment
Параметр выравнивания.- <
- по левому краю
- |
- по центру
- >
- по правому краю
Overflow
Заполнение при переполнении.- *
- заполняет символом '#' все поле, если длина строки выходит за заданные пределы
Length
Полная длина поля вывода.Prec
Максимальное количество знаков после десятичной точки.
flags
Флаги форматирования. Строка (prefix '@')- U
- Все буквы в верхнем регистре.
- L
- Все буквы в нижнем регистре.
- P
- Все символы заменяются символом *.
Число (prefix '$')
- C
- Разделять триады чисел запятыми.
- S
- Разделять триады чисел пробелами.
- A
- Разделять триады чисел апострофами (').
- F
- Перед положительными числами ставить знак +.
- Z
- Не пропечатывать нулевые значения.
- N
- Опускать незначащие нули.
- A
- American (mm.dd.yy)
- B
- British
- D
- DMY (dd/mm/yy)
- F
- French
- G
- German (dd.mm.yy)
- I
- Italian
- J
- Japan
- M
- MDY (mm/dd/yy)
- U
- USA
- W
- ANSI
- Y
- YMD (yy/mm/dd)
Если второй символ 'C' or 'c', то полностью выдавать год (например: 2003 вместо 03). Время (prefix '&')
- F
- hh:mm:ss.dd
- N
- hh:mm:ss
- H
- hh:mm
- L
- mm:ss.dd
- L
- mm:ss
- S
- ss.dd
- S
- Ss
Если второй символ 'B', то - пустая строка для времени 00:00:00.