Apico Soft / АПИКО Софт



Спонсором блога ScalaHelp.RU является компания АПИКО Софт.

Мы предоставляем:
- Качественный ERP консалтинг.
- Внедрение и сопровождение системы.
- Российские формы первичных документов, бухгалтерская и налоговая отчетность.

- Разработка корпоративной отчетности.

Наш телефон 8 (495) 961 98 48
Сайт http://www.apicosoft.ru/

Позвоните нам, мы сделаем все, чтобы помочь Вам.

вторник, ноября 06, 2007

DDF отчеты

DDF отчеты самая старая технология создания отчетов в Scala. Такой отчет представляет из себя текстовый файл. Файл является шаблоном отчета, где описано содержание всех секций, состав секций и последовательность их вывода жестко зашиты в коде, так что повлиять можно только на содержимое самих секций. Для примера можно взглянуть на довольно простой отчет OR06 Product Label:

:START-LABEL
╔═════════════════════════════════════╗
║ <805> ║
║ <806> ║
║ STOCK.COD: <804L25> ║
║ DEL.DATE : <615> QTY :<811R09> ║
║ ORDER : <04> POS : <801> ║
║ BUYER : <401L25> ║
║ CUSTOMER : <400> ║
║─────────────────────────────────────║
║ <86> ║
╚═════════════════════════════════════╝
:END-LABEL
0
2

Тут всего одна секция LABEL. Угловыми скобками выделены макросы. Коды полей можно посмотреть здесь: "Системные Утилиты - Документы - Изменение Определения Документа - Редактор Формата Отчета", предварительно выбрав нужный отчет. Например, макрос <804L25> означает следующее: 804 - код запаса,  L25 - взять 25 символов слева. Менять можно только содержимое внутри секций. Значения вне секций трогать не советую(в нашем примере это две последние строки), там часто бывают всякие настройки, без которых сам отчет будет работать некорректно.


Какие еще преобразования возможны в DDF файлах? В хелпе я не нашел полного описания. У меня откуда-то давно есть текстовый файлик. Правда, не все, что описано в нем удалось использовать, но несколько раз он мне очень помог, так что приведу его здесь полностью:

-------------
DDF processor
-------------

Start [Prefix] DDFCode [Selector] [Modifier]... [Language] [;] End

Start < Start of DDF Code

Prefix # Optional Prefix
D (1) Date in words format (old style)
! (1) Date in words format (old style)
$ (2) Amount in words format
Z (3) Old Amount in words Format
* (4) Leading ***
_ (5) Russian dash delimiter ("12.12" like "12-12")
= (6) Russian truncate decimals ("12.00" like "12=")
. (7) Numbers with "." delimiter
: (8) Trimming of spaces before formating

DDFcode ## DDF code
###
?## Extended DDF Code
?###
??###

Selector L## Left part selector
L###
R## Right part selector
R###
S##@## Substring,Length
S###@##
S##@###
S###@###

Modifier(s) /* To Currency Recalculation modifier
/?
/##
:* From Currency Recalculation modifier
:?
:##
.# Rounding modifier
-# Coding segment,Length
+## Price from Price List

Style @# Date style (Numeric format):
0 - Scala standard/2 digit year)
1 - Scala extended/4 digit year)
2 - Compressed(No delimiters)/2 digit year
3 - Compressed/4 digit year
4 - ISO 8601 (always YYYY-MM-DD)

@# Date Style (Date in word Format)
@* Output Currency Style (Amount in word format)
@?
@##

Language ??? Language
FitFlag ; Example w/o fit: 12345678901234567890
DDFCode=XXX 1234567890XXX 1234567890
DDFCODE=XXXXXXXXXXXX 1234567890XXXXXXXXXXXX4567890
Example with fit: 12345678901234567890
DDFCode=XXX 1234567890XXX12346567890
DDFCODE=XXXXXXXXXXXX 1234567890XXXXXXXXXXXX1234567890

& Equivalent to fit plus additionally substitutes XML internal entities
& -> &amp;
< -> &lt;
> -> &gt;
' -> &apos;
" -> &quot;
& prevent ANSII2OEM conversion of DDF Code as well
\ Equivalent to fit without trimming spaces
Example with fit: 12345678901234567890
DDFCode=XXX 1234567890XXX 12346567890
DDFCODE=XXXXXXXXXXXX 1234567890XXXXXXXXXXXX1234567890

> End of DDF Code

На что стоит обратить внимание:



  • операции над строками, <CodeL10> - взять 10 символов слева, <CodeR15> - взять 15 символов справа, < CodeS10@12> - подстрока 12 символов, начиная с 10го
  • разные варианты заполнения <Code>, <Code;>, <Code\>

Комментариев нет:

Отправить комментарий