Разработчикам внешних DLL
для программы "Фискальник" и "Дамп-конструктор"

Общая информация по DLL

Для самостоятельного написания бибилиотеки поддержки любой модели ККМ ознакомьтесь с исходным текстом шаблона. При разработке DLL автор использует DELPHI. Вам требуется написать код трех функций. Четвертая функция - About - не обязательная. Можете добавить ее, если хотите, чтобы информация о Вас появилась в окошке программы. Поля TFisSet.Ok, TFisRep.Ok и NumberOk равны TRUE если данные о фискализации, сменном отчете и номере ККМ соответственно - верные. Иначе их значения нужно установить в FALSE.  Библиотеки используют переменные типа TKKM. В массивах содержатся записи о фискализациях и перерегистрациях. Остальное, думаю, очевидно. При чтении заполняйте поля и массивы. При записи, соответственно - наоборот. Признаком окончания данных в таблице является нулевое значение ее полей (можете использовать для проверки, например, дату). Параметр FN - имя файла из которого нужно прочитать или в который нужно записать данные (передается из главной программы).

Текст шаблона


library name_file_dll;
uses
  SysUtils, Classes;

{$R *.res}

type
  TFisSet = record
    Pass, INN, RegN, Z: int64;
    SetD, SetM, SetY: Word;
    Ok: Boolean
  end;

  TFisRep = record
    Num: integer;
    RepD, RepM, RepY: Word;
    SumPlus, SumMinus: Real;
    Ok: Boolean
  end;

  TKKM = record
    Number: array[0..15] of Char;
    NumberOk: Boolean;
    FisRepCount: integer;
    FisD, FisM, FisY: Word;
    FisSet: array[0..30] of TFisSet;
    FisRep: array[0..4000] of TFisRep;
  end;

function GetName: PChar; export; stdcall;
begin
  Result := 'Название вашей модели(появится в списке)';
end;

function About: PChar; export; stdcall;
begin
  Result := 'Ваш рекламный текст (появится после чтения и перед записью)';
end;

function OpenFisFile(FN: PChar): TKKM; export; stdcall;
begin
     {ваш текст для чтения данных из файла}
end;

procedure SaveFisFile(FN: PChar; KKM: TKKM); export; stdcall;
begin
     {ваш текст для записи данных в файл}
end;

exports
  GetName, About, OpenFisFile, SaveFisFile;
end.

Поддержка ЭКЛЗ

Редакторы содержат закладку "ЭКЛЗ". На ней отображаются данные об активированных блоках электронной контрольной ленты. Соответственно, для ККМ "К" серии в исходный текст DLL требуется добавить функцию и процедуру чтения-записи этих данных. При разработке DLL автор использует DELPHI. Поле TEklzSet.Ok равно TRUE, если данные об активации ЭКЛЗ верные. Иначе его значения нужно установить в FALSE.  Библиотеки используют переменные типа TEKLZ. В массиве содержатся записи о активациях. При чтении заполняйте массив. При записи - читайте из него записи и пишите в файл. Признаком окончания данных в массиве является нулевое значение полей его элемента (можете использовать для проверки, например, дату). Параметр FN - имя файла из которого нужно прочитать или в который нужно записать данные (передается из главной программы). Еще раз обращаю ваше внимание на то, что функции GetName и OpenFisFile и процедура SaveFisFile также должны содеражатся в библиотеке, но их формат не изменился (см. директиву exports в данном шаблоне).

Добавляемые типы и процедуры


library name_file_dll;
uses
  SysUtils, Classes;

{$R *.res}

type
  TEklzSet = record
    RegN, Z: int64;
    SetD, SetM, SetY: Word;
    Ok: Boolean
  end;

  TEklz = array[0..30] of TEklzSet;

function OpenEklzFile(FN: PChar): TEklz; export; stdcall;
begin
     {ваш текст для чтения данных из файла}
end;

procedure SaveEklzFile(FN: PChar; Eklz: TEklz); export; stdcall;
begin
     {ваш текст для записи данных в файл}
end;

exports
  GetName, OpenFisFile, OpenEklzFile, SaveFisFile, SaveEklzFile;
end.

Вход на сайт ЦТО

Rambler's Top100