Вы находитесь на странице: 1из 4

Инструкция по подключению библиотеки CheckUfa.DLL к сторонним приложениям.

Библиотека поддерживает 3 функции

function CheckFile(fname,reportName,typRep:PChar;fox:integer):integer; StdCall;

fName – Имя проверяемого отчета;


ReportName – Путь или имя файла для записи туда протокола проверки(Если оставить
пустым протокол будет в папке с проверяемым отчетом)
typRep – формат протокола, принимает значения “HTML” либо “XML”
Fox – признак что функция вызывается из VisualFoxPro. (В этом случае в конце
передаваемых строк необходимо ставить символ «}»)

Все строковые переменные передаются функции в Unicode.


Функция возвращает 0 если протокол сформирован, 1 если возникли ошибки при попытке
проверить файл;

function CheckFile2(fname,typRep:PChar;Precheck:integer):WideString; StdCall;

fName – Имя проверяемого отчета;


typRep – формат протокола, принимает значения “HTML” либо “XML”
Precheck – принимает значение 0 или 1; 0 – полная проверка, 1 – проверка на валидность
XML файла и тип документов в отчете.

Функция возвращает строку содержащую XML протокол.

function CheckFile3(fname,reportName,typRep:PChar;fox:integer):wideString; StdCall;

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

Формат возвращаемого XML протокола:

Блок «Ошибка» может быть 3-х видов, во всех присутствует элемент <Раздел>:

1) Если указан раздел «КЛАДР» будут присутствовать элементы:


<Элемент> - часть XML файла содержащая блок АдресОбщий;
<ОшибкаКЛАДР> - описание ошибки и уровень на которм она возникла 1-Регион, 2- Район и.т.д
<Текст> - появляется если индекс не соответствует адресу.
<Файл> - Имя файла в котором возникла ошибка
<Заголовок> - Краткое описание ошибки
<НомерВПачке> - Номер документа в пачке СЗВ-6/СЗВ-4 где возникла ошибка

2) Если указан раздел «СТРУКТУРА» будут присутствовать элементы:


<Строка> - Строка в файле где возникла ошибка
<Графа> - Позиция в строке, где возникла ошибка
<Тип> - Код ошибки (10-предупреждение, 20- ошибка, 30-критическая ошибка)
<Код> - Код ошибки;
<Текст> - Описание ошибки
<Элемент> - Часть файла отчета в котором возникла ошибка
<Файл>-Имя файла в котором возникла ошибка
<Заголовок> - Краткое описание ошибки

3) Если указан другой раздел будут присутствовать элементы:


<Строка> - Строка в отчете РСВ-1(2), РВ-3 в которой возникла ошибка
<Графа> - Графа в отчете РСВ-1(2), РВ-3 в которой возникла ошибка
<Тип> - Код ошибки (10-предупреждение, 20- ошибка, 30-критическая ошибка)
<Текст> - Описание ошибки
<Файл></Файл> - имя файла в котором возникла ошибка
<Заголовок></Заголовок> - текстовое поле с краткой информацией об ошибке.

Блоки <МодульПроверки> и <Результат> показаны в примере, их структура не меняется.

Пример возвращаемого XML протокола:


<Протокол>
<МодульПроверки>
<Наименование>CheckPFR</Наименование>
<Версия>1.0.95</Версия>
<ДатаВерсии>08.06.2010</ДатаВерсии>
</МодульПроверки>
<Результат>
<ИмяФайла>PFR-700-Y-2010-ORG-002-870-016979-DCK-00001-DPT-000000-DCK-
00000.XML</ИмяФайла>
<Директория>D:\DelphiProj\CheckRSV\test\</Директория>

<ТипДокумента>РАСЧЕТ_ПО_СТРАХОВЫМ_ВЗНОСАМ_НА_ОПС_И_ОМС_ПЛАТЕЛЬЩИКАМИ_ПРОИ
ЗВОДЯЩИМИ_ВЫПЛАТЫ_ФЛ</ТипДокумента>
<КоличествоДокументовВпачке>1</КоличествоДокументовВпачке>
<Дата>17.06.2010 12:35:54</Дата>
<Ошибок30>0</Ошибок30>
<Ошибок20>16</Ошибок20>
<Предупреждений>0</Предупреждений>
</Результат>
<Ошибка>
<Раздел>КЛАДР</Раздел>
<Элемент>
<АдресРегистрации>
<ТипАдреса>РОССИЙСКИЙ</ТипАдреса>
<Индекс>450022</Индекс>
<РоссийскийАдрес>
<Регион>

<ГеографическоеНазвание>БАШКОРТОСТАН</ГеографическоеНазвание>
<Сокращение>РЕСП</Сокращение>
</Регион>
<Город>

<ГеографическоеНазвание>УФА</ГеографическоеНазвание>
<Сокращение>Г</Сокращение>
</Город>
<Улица>

<ГеографическоеНазвание>МЕНДЕЛЕЕВА</ГеографическоеНазвание>
<Сокращение>УЛ</Сокращение>
</Улица>
<Дом>
<Номер>134</Номер>
</Дом>
</РоссийскийАдрес>
</АдресРегистрации>
</Элемент>
<ОшибкаКЛАДР>
<Уровень>6</Уровень>
<Текст>Незаполнено либо не соответствует КЛАДР сокращение для элемента
Дом Российского адреса</Текст>
</ОшибкаКЛАДР>

</Ошибка>
<Ошибка>
<Раздел>РСВ1</Раздел>
<Тип>20</Тип>
<Текст>При использовании одного тарифа в расчете, коды тарифа на титульном листе
и во втором разделе должны совпадать</Текст>
</Ошибка>
<Ошибка>
<Раздел>РСВ1</Раздел>
<Тип>20</Тип>
<Текст>Графа 3 строки 424 должна быть равна данным ячейки "Среднесписочная
численность" титульного листа ,текущее значение: 0, ожидаемое значение: 382</Текст>
</Ошибка>
</Протокол>

Пример использование на языке Delphi:

//Обьявление функций

Function CheckFile(fname,reportName,typRep:PChar;fox:integer):integer; StdCall; external


'CheckUfa.dll' index 1;
function CheckFile2(fname,typRep:PChar;Precheck:integer):WideString; StdCall; external
'CheckUfa.dll' index 2;
….
….
….
….
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog.Execute then
begin
if CheckFile(Pchar(OpenDialog.FileName),'','HTML',0)=0
then
ShellExecute(Handle, 'open', Pchar(OpenDialog.FileName+'.log.html'), nil,
Pchar(ExtractFilePath(OpenDialog.FileName)), SW_SHOWNORMAL)
Else ShowMessage('При проверке возникла ошибка');
end;
end;
……

procedure Tform1.Button2Click(Sender: TObject);


begin
if OpenDialog1.Execute then Memo1.Lines.Add(CheckFile2(Pchar(OpenDialog1.FileName),'XML',0));
end;
………..

procedure Tform1.Button2Click(Sender: TObject);


begin
if OpenDialog1.Execute then Memo1.Lines.Add(CheckFile3(Pchar(OpenDialog1.FileName),'','HTML',0));
end;
2. Запуск фала Check.exe с параметрами:

Программа поддерживает запуск с параметрами в следующем формате

Check.exe Параметр1 Параметр2

Параметр1 – обязательный, полное имя проверяемого файла, включая путь к нему (например
C:\PFR-700-Y-2010-ORG-002-873-016083-DCK-00001-DPT-000000-DCK-00000.XML);

Параметр2 – необязательный, путь к папке куда будут выложены протоколы. При отсутствии
данного параметра протокол будет сформирован в папке с проверяемым файлом.

В процессе работы программы формируются 2 файла:


PFR-700-Y-YYYY-ORG-NNN-NNN-NNNNNN-PROTOCOL-R-DAT-YYYY-MM-DD-HH-mm-
SS.log.xml – описание обнаруженных ошибок в формате xml,
PFR-700-Y-YYYY-ORG-NNN-NNN-NNNNNN-PROTOCOL-R-DAT-YYYY-MM-DD-HH-mm-
SS.log.html – описание обнаруженных ошибок в формате html, где:
- YYYY-год;
- NNN-NNN-NNNNNN-регистрационный номер страхователя;
- R-Статус протокола (1-хорошо,2-есть предупреждения, 3- плохо);
- YYYY-MM-DD-HH-mm-SS-дата и время формирования протокола;