Експорт звітності

Для експорту звітів, побудованих за допомогою дизайнера необхідно скласти програми, які запускаються при формуванні фрагментів звіту.

Програми для звітів складаються на мові PascalScript. У програмах доступні функції, необхідні для формування файлу електронного документа. Повний перелік функцій наведено нижче.

Загальні правила побудови програми:

  • На початку, при ініціалізації експорту, викликається функція MNSOpen, для ініціалізації файлу електронного документа.
  • Потім формується заголовок файлу.
  • У процесі видачі детальних рядків має бути сформовано вміст форми документа.
  • В кінці експорту потрібно сформувати кінець фрагмента форми, кінець файлу і викликати функцію MNSClose, яка завершить сеанс роботи з файлом електронного документа.
  • Програми формування файлу експорту прив'язуються до детальним фрагментами звіту. Можуть бути використані будь-які фрагменти (заголовки, детальні, підсумки).

Перелік доступних констант, функцій і процедур

Константи

Константи режимів відкриття файлу

mnsomAppend: Byte = $ 01;

Дописати в кінець файлу, якщо існує.

mnsomCreate: Byte = $ 00;

Перезаписати файл, якщо існує.

mnsomDialog: Byte = $ 10;

Видати діалог вибору файлу.

Константи роздільників груп

mnsdlmBlock: String = '###';

Кінець блоку.

mnsdlmFile: String = '===';

Ознака кінця файлу.

mnsdlmPart: String = '@@@';

Кінець фрагмента.

Функції та процедури

DOCGetStr (Nam: String): String;

DOCGetStr ('' '');

Отримати строкове значення поля з документа.

MNSClose ;

Закрити поточний відкритий файл.

MNSGetFL_ID (INN: String): String;

MNSGetFL _ ID ('' '');

INN - ІПН фізичної особи

Дати ідентифікатор ФО.

MNSGetFormDetailNm (RZD, STR, GRF: String): String ;

MNSGetFormDetailNm ('' '', '' '', '' '');

RZD - п'ятизначний номер (код) розділу форми

STR - п'ятизначний номер (код) рядку форми

GRF - двозначний номер графи форми

Дати найменування показника форми.

MNSGetMNS _ ID (MNS: String): String ;

MNSGetMNS _ ID ('' '');

MNS - коду інспекції за класифікатором СОНО

Дати ідентифікатор МНС.

MNSGetUL_ID (INN: String; KPP: String): String;

MNSGetUL_ID ('' '', '' '');

INN - ІПН організації

KPP - код причини постановки на облік, якщо '' - не виводиться

Дати ідентифікатор ЮЛ.

MNSOpen: Boolean;

MNSOpen;

Відкриває останній відкритий файл, в разі помилки згенерує виняток.

MNSOpenFile (Filename: String; Mode: Integer): Boolean;

MNSOpenFile (FileName, Mode);

FileName - ім'я файлу

Mode - режим відкриття

mnsomCreate - перезаписати файл, якщо існує

mnsomAppend - дописати в кінець файлу, якщо існує

mnsomDialog - видати діалог вибору файлу

mnsomWin1251 - кодування Windows

Відкриває файл, в разі помилки згенерує виняток.

MNSPutCommonInfo (DocNum: String; DocDate: TDateTime; DocPredst: String);

MNSPutCommonInfo ('' '',);

DocNum - номер документа

DocDate - дата формування документа

DocPredst - параметр "документ видається

Вивести в поточний відкритий файл загальні відомості інформаційної частини повідомлення.

MNSPutDate (AParam: String; AValue: TDateTime);

MNSPutDate ('' '',);

Вивести поєднання параметр-значення в поточний відкритий файл. В кінець рядка дописується пара символів $ 0 d $ 0 a. Рядок передається з WIN кодування в OEM кодування.

MNSPutDelimiter (ADelimiter: String);

MNSPutDelimiter ('' '');

Вивести роздільник в поточний відкритий файл.

MNSPutDetail (RZD, STR, GRF, Val: String);

MNSPutDetail ('' '', '' '', '' '', '' '');

RZD - п'ятизначний номер (код) розділу форми

STR - п'ятизначний номер (код) рядку форми

GRF - двозначний номер графи форми

Val - значення показника

Вивести показник форми.

MNSPUTDOCID (A_ID: String; DocNum: String; ADate: TDateTime = 0);

MNSPutDocID ('' '', '' '',);

A _ ID - ідентифікатор ЮЛ, ФЛ або МНС

DocNum - номер документа

ADate - дата, за замовчуванням - поточна

Вивести ідентифікатор документа в поточний відкритий файл.

MNSPUTFILEID (A_ID: String; ADate: TDateTime = 0);

MNSPutFileID ('' '',);

A_ID - ідентифікатор ЮЛ, ФЛ або МНС '+ # 13 +

ADate - дата, за замовчуванням - поточна

Вивести ідентифікатор файлу в поточний відкритий файл.

MNSPUTNPFLINFO ;

Вивести в поточний відкритий файл відомості про платника податків - юридичну особу.

MNSPUTNUMBER (AParam: String; AValue: Extended; ALen: Integer; AMT: Integer; AFill0: boolean);

MNSPutNumber ('' '',,);

ALen - довжина всього числа з крапкою і знаком -

AMT - к-ть знаків після зайнятої

AFill 0 - доповнювати число до довжини нулями зліва

Вивести поєднання Параметр-Значення в поточний відкритий файл. В кінець рядка дописується пара символів $ 0D $ 0A. Рядок перекодується з Win-кодування в Oem.

MNSPUTOVERHEAD (KolDoc: Word ; MNSVer: String);

MNSPutOverhead ();

KolDoc - кількість документів

Вивести в поточний відкритий файл службову частину повідомлення.

MNSPUTPARAM (AParam: String; AValue: String);

MNSPutParam ('' '',);

Вивести поєднання Параметр-Значення в поточний відкритий файл. В кінець рядка дописується пара символів $ 0D $ 0A. Рядок перекодується з Win кодування в Oem.

MNSPUTSTRING (AParam: String; AValue: String; ALen: Integer);

MNSPutString ('' '',,);

ALen - довжина всього числа з крапкою і знаком -

Вивести поєднання Параметр-Значення в поточний відкритий файл значення - строкового типу. Значення форматується відповідно до довжини, якщо потрібно - буде скорочуватися. В кінець рядка дописується пара символів $ 0D $ 0A. Рядок перекодується з Win кодування в Oem.

MNSPUTTEXT (AText: String);

MNSPutText ('' '');

Вивести рядок в поточний відкритий файл. В кінець рядка дописується пара символів $ 0D $ 0A. Рядок перекодується з Win кодування в Oem.

SETKOLDOK (Kol: Integer);

SetKolDok ();

Встановити кількість документів.

SETKOLPOK (Kol: Integer);

SetKolPok ();

Встановити кількість показників форми.

STRINGTOCOMMA (AText: String): String;

StringToComma ('' '');

Замінити прогалини на коми.

Приклад використання функцій експорту зовнішньої звітності в звіті Fast Report

Відкрити на редагування будь-який звіт. У обробнику події OnStartReport робимо відкриття файлу, наприклад:

MNSOpenFile ('C: \ MNStempoFile', mnsomCreate);

У обробнику події OnStopReport робимо закриття файлу:

MNSClose ();

У місцях формування даних для звіту використовуємо функції вивантаження, наприклад:

MNSPutText (Memo4.Text);

MNSPutDelimiter (mnsdlmPart);

Таким чином, результуючий файл може виглядати так:

var curs: real;

procedure Memo6OnBeforePrint (Sender: TfrxComponent);

begin

if <main. "VLCUR_KOT"> = <cross. "CURTYPE_RCD">

then curs: = <main. "VLCUR_CURS">

else curs: = 0;

end;

procedure OnStartReport (Sender: TfrxComponent);

begin

MNSOpenFile ('C: \ MNStempoFile', mnsomCreate);

MNSPutText (' Тема звіту ');

MNSPutDelimiter (mnsdlmPart);

end;

procedure OnStopReport (Sender: TfrxComponent);

begin

MNSPutDelimiter (mnsdlmPart);

MNSPutDelimiter (mnsdlmBlock);

MNSPutDelimiter (mnsdlmFile);

MNSPutText (' Фінал звіту ');

MNSClose ();

end;

procedure Memo3OnAfterData (Sender: TfrxComponent);

begin

MNSPutText (Memo3.Text);

end;

procedure Memo4OnAfterData (Sender: TfrxComponent);

begin

MNSPutText (Memo4.Text);

MNSPutDelimiter (mnsdlmPart);

end;

procedure Memo14OnAfterData (Sender: TfrxComponent);

begin

MNSPutText (floatToStr (curs) + '' + Memo14.Text);

end;

begin

end.

В результаті виконання звіту формується наступний файл - C: \ MNStempoFile.

Лістинг файлу:

заголовок звіту

@@@

USD

Долар США

Множник курсу: 1

@@@

5.05 5.05000

5.05 5.05000

...

5.05 5.05000

EUR

ЄВРО

Множник курсу: 1

@@@

6.4321 6.43210

6.3933 6.39330

...

6.405925 6.40592

RUR

Російський рубль

Множник курсу:

@@@

0.18857 0.18857

0.18847 0.18847

...

0.1889 0.18890

@@@

###

===

фінал звіту