Рекомендації до пошуку помилкових тегів у файлі-квітанції

  1. При виникненні помилки в заголовку файла (атрибути тега povidomlen або структура ustanova) код помилки по файлу-повідомленню містить інформацію про помилковий тег.
  2. При відсутності обов'язкового тега по DTD помилка шукається за допомогою семантичного аналізатора та файла DTD.
  3. При відсутності обов'язкового тега на рівні логічного контролю в тегі tag_err атрибут tag_id дорівнює 0.
  4. При виникненні помилки в структурі INF_STR номер помилкового елемента вказується в атрибуті tag_id тега tag_err, а в тегі tag_errc вказується код помилки.

Нумерація тегів та атрибутів проводиться на кожну інформаційну структуру INF_STR. Нумерується кожне відкриття тегу та кожен атрибут тегу в послідовності в якій вони розташовані в файлі-повідомленні. Закриття тегів не нумерується. Відкриття тегу < INF_STR визначається нулем. Тег INF_STR з атрибутами має вигляд :

- <inf_str id_key="XXXXXX” str_id="1"
str_sign="0380FA403F22C64E9EA03E3CD7825E4162BC6ACB0128EA2EF58D8C83E7BED77B2B5727704D8849CE73 E73EB4D459850E66596252551533517521A0164FBEF582">

В тезі INF_STR є 3 атрибута , які нумеруються числами 1,2,3, тобто

атрибуту id_key буде присвоєно 1, tr_id2, str_sign3.

Розглянемо структуру :

- <operacia>

<kl_id type="int">43</kl_id>

<kl_date type="date">20030720</kl_date>

<opr_kol type="int">2</opr_kol>

<opr_act type="int">1</opr_act>

<opr_date type="date">20030720</opr_date>

<opr_time type="time">1013</opr_time>

<opr_val type="string">980</opr_val>

<opr_sumv type="int">110000000</opr_sumv>

<opr_sumg type="int">110000000</opr_sumg>

<opr_nazn type="string">Оплата за газ</opr_nazn>

<opr_ozn type="string">1</opr_ozn>

<opr_vid1 type="string">111111827082700</opr_vid1>

<opr_vid2 type="string">4020</opr_vid2>

<opr_vid3 type="string" />

</operacia>

пронумерована структура:

- <operacia __tag_order="4">

<kl_id __tag_order="5" type="int">43</kl_id>

<kl_date __tag_order="7" type="date">20030720</kl_date>

<opr_kol __tag_order="9" type="int">2</opr_kol>

<opr_act __tag_order="11" type="int">1</opr_act>

<opr_date __tag_order="13" type="date">20030720</opr_date>

<opr_time __tag_order="15" type="time">1018</opr_time>

<opr_val __tag_order="17" type="string">980</opr_val>

<opr_sumv __tag_order="19" type="int">110000000</opr_sumv>

<opr_sumg __tag_order="21" type="int">110000000</opr_sumg>

<opr_nazn __tag_order="23" type="string">Оплата за газ</opr_nazn>

<opr_ozn __tag_order="25" type="string">1</opr_ozn>

<opr_vid1 __tag_order="27" type="string">111111827082700</opr_vid1>

<opr_vid2 __tag_order="29" type="string">4020</opr_vid2>

<opr_vid3 __tag_order="31" type="string" />

</operacia>

У кожному тегі нумерується , як його відкриття так і атрибут, так наприклад тег KL_ID має номер 5, а його атрибут type має номер 6.

Приклад:

- файл повідомлення про фінансову операцію:

<?xml version="1.0" encoding="UTF-8" ?>

- <povidomlen file_name="XF0XXX7M.301" file_date="20030720" file_time="1235" file_oper="1" id_key="ЧЧЧЧЧЧ" file_sign="4B9A49E8DC80A844857150F24315A4A825278A567538DBBF0CA575E00A9B CD3EED7BC8A022BF407D8E23ABFB3EBA662DA742BFA65DF9A967D1692547BA30ED12">

- <ustanova ust_typ="4" ust_vid="100" ust_mfo="111111" ust_id="9999999" ust_name=" АКБ ’ тест ’">

- <ust_adr>

<adr_str type="string">804</adr_str>

<adr_obl type="int">80</adr_obl>

<adr type="string">00000, г. Тест</adr>

<adr_tlf type="string">0999999999</adr_tlf>

<adr_email type="string">test @ test.test.ua</adr_email>

</ust_adr>

- <ust_vdp>

<vdp_pos type="string">тест</vdp_pos>

<vdp_nm1 type="string"> тест </vdp_nm1>

<vdp_nm2 type="string"> тест </vdp_nm2>

<vdp_nm3 type="string"> тест </vdp_nm3>

<vdp_tlf type="string"> тест </vdp_tlf>

<vdp_email type="string">test@test.test.ua</vdp_email>

</ust_vdp>

</ustanova>

- <inf_str id_key="xxxxnn" str_id="1" str_sign="0380FA403F22C64E9EA03E3CD7825E4162BC6ACB0128EA2EF58D8C83E7BED77B2 B5727704D8849CE73E73EB4D459850E66596252551533517521A0164FBEF582">

- <operacia>

<kl_id type="int">43</kl_id>

<kl_date type="date">20030720</kl_date>

<opr_kol type="int">2</opr_kol>

<opr_act type="int">1</opr_act>

<opr_date type="date">20030720</opr_date>

<opr_time type="time">1013</opr_time>

<opr_val type="string">980</opr_val>

<opr_sumv type="int">110000000</opr_sumv>

<opr_sumg type="int">110000000</opr_sumg>

<opr_nazn type="string">test</opr_nazn>

<opr_ozn type="string">1</opr_ozn>

<opr_vid1 type="string">111111827082700</opr_vid1>

<opr_vid2 type="string">4020</opr_vid2>

<opr_vid3 type="string" />

</operacia>

- <osoba cl_type="1">

<cl_stp type="int">1</cl_stp>

<cl_rez type="string">1</cl_rez>

<cl_id type="string">55555555</cl_id>

<cl_nm1 type="string">ВАТ’test’ </cl_nm1>

<doc_osn type="string" />

- <adr_u>

<adr_str type="string">804</adr_str>

<adr_obl type="int">14</adr_obl>

<adr type="string">00000 г.test ул.test 4а</adr>

</adr_u>

- <doc_reg>

<doc_nm type="string" />

<doc_og type="string">test</doc_og>

<doc_dt type="date">20020205</doc_dt>

</doc_reg>

- <bnk_u>

<bnk_acc type="string">299999999999999</bnk_acc>

<bnk_id type="string">999999</bnk_id>

<bnk_nm type="string">АКБ’test’</bnk_nm>

<bnk_str type="string">804</bnk_str>

<bnk_ad type="string">00000, г.test, пр. test, 5</bnk_ad>

</bnk_u>

</osoba>

- <osoba cl_type="5">

<cl_stp type="int">1</cl_stp>

<cl_rez type="string">1</cl_rez>

<cl_id type="string">999999999</cl_id>

<cl_nm1 type="string">ТОВ "TEST9”</cl_nm1>

</osoba>

</inf_str>

</povidomlen>

- файл квитанція:

<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE kvit (View Source for full doctype...)>

- <kvit file_name="XG0XXX7M.301" file_date="20030720" file_time="1241" file_oper="1" id_key="YYYYYY" file_sign="02EB97E6216DD35374F916A2C89513AEDF6FC2ABA9FC4F3169E3A03805A F79E245CDC7E81CA180BCDEEC7649B19F9BED9FA12B2A173A55F698C620BCA6FA0523">

<fi_in file_name="XF0XXX7M.301" file_date="20030821" file_time="1235" file_oper="1" id_key="XXXXXX" file_sign="4B9A49E8DC80A844857150F24315A4A825278A567538DBBF0CA575E00 A9BCD3EED7BC8A022BF407D8E23ABFB3EBA662DA742BFA65DF9A967D1692547BA30ED12" fiin_err="9004"/>

- <inf_err str_id="1" id_key="YYYYYY" str_sign="B6D5AFE6059158EC6FF2200AACAEA31F4BF3A8496C809C8056CA1F7E60 DFCBE47CA27844FA6E858D9798603FDAD22AE9D6E6C1C3E80842D07E559D780CD626BD">

<oper_id type="int">1</oper_id>

<code_err type="string">9442</code_err>

- <tag_err tag_id="53">

<tag_errc type="string">9442

</tag_err>

- <tag_err tag_id="55">

<tag_errc type="string">9502</tag_errc>

</tag_err>

</inf_err>

</kvit>

- пронумерований файл

<?xml version="1.0" encoding="UTF-8" ?>>

- <povidomlen file_name="XF0XXX7M.301" file_date="20030720" file_time="1235" file_oper="1" id_key="ЧЧЧЧЧЧ" file_sign="4B9A49E8DC80A844857150F24315A4A825278A567538DBBF0CA575E00A9 BCD3EED7BC8A022BF407D8E23ABFB3EBA662DA742BFA65DF9A967D1692547BA30ED12">

- <ustanova ust_typ="4" ust_vid="100" ust_mfo="111111" ust_id="9999999" ust_name="АКБ ’ тест ’">

- <ust_adr>

<adr_str type="string">804</adr_str>

<adr_obl type="int">80</adr_obl>

<adr type="string">00000, г. Тест</adr>

<adr_tlf type="string">0999999999</adr_tlf>

<adr_email type="string">test @ test.test.ua</adr_email>

</ust_adr>

- <ust_vdp>

<vdp_pos type="string">тест</vdp_pos>

<vdp_nm1 type="string"> тест </vdp_nm1>

<vdp_nm2 type="string"> тест </vdp_nm2>

<vdp_nm3 type="string"> тест </vdp_nm3>

<vdp_tlf type="string"> тест </vdp_tlf>

<vdp_email type="string">test@test.test.ua</vdp_email>

</ust_vdp>

</ustanova>

- <inf_str id_key="xxxxxx" str_id="1" str_sign="0380FA403F22C64E9EA03E3CD7825E4162BC6ACB0128EA2EF58D8C83E 7BED77B2B5727704D8849CE73E73EB4D459850E66596252551533517521A0164FBEF582">

- <operacia __tag_order="4">

<kl_id __tag_order="5" type="int">43</kl_id>

<kl_date __tag_order="7" type="date">20030720</kl_date>

<opr_kol __tag_order="9" type="int">2</opr_kol>

<opr_act __tag_order="11" type="int">1</opr_act>

<opr_date __tag_order="13" type="date">20030720</opr_date>

<opr_time __tag_order="15" type="time">1013</opr_time>

<opr_val __tag_order="17" type="string">980</opr_val>

<opr_sumv __tag_order="19" type="int">110000000</opr_sumv>

<opr_sumg __tag_order="21" type="int">110000000</opr_sumg>

<opr_nazn __tag_order="23" type="string">Оплата за газ </opr_nazn>

<opr_ozn __tag_order="25" type="string">1</opr_ozn>

<opr_vid1 __tag_order="27" type="string">111111827082700</opr_vid1>

<opr_vid2 __tag_order="29" type="string">4020</opr_vid2>

<opr_vid3 __tag_order="31" type="string" />

</operacia>

- <osoba __tag_order="33" cl_type="1">

<cl_stp __tag_order="35" type="int">1</cl_stp>

<cl_rez __tag_order="37" type="string">1</cl_rez>

<cl_id __tag_order="39" type="string">55555555</cl_id>

<cl_nm1 __tag_order="41" type="string">ВАТ’test’</cl_nm1>

<doc_osn __tag_order="43" type="string" />

- <adr_u __tag_order="45">

<adr_str __tag_order="46" type="string">804</adr_str>

<adr_obl __tag_order="48" type="int">14</adr_obl>

<adr __tag_order="50" type="string">00000 г.test ул.test 4а</adr>

</adr_u>

- <doc_reg __tag_order="52">

<doc_nm __error_status="data type" __tag_order="53" type="string" />

<doc_og __error_status="words < 2 ('docOg')" __tag_order="55" type="string">test</doc_og>

<doc_dt __tag_order="57" type="date">20020205</doc_dt>

</doc_reg>

- <bnk_u __tag_order="59">

<bnk_acc __tag_order="60" type="string">29999999999999</bnk_acc>

<bnk_id __tag_order="62" type="string">999999</bnk_id>

<bnk_nm __tag_order="64" type="string">АКБ "test"</bnk_nm>

<bnk_str __tag_order="66" type="string">804</bnk_str>

<bnk_ad __tag_order="68" type="string">00000, г.test, пр. test, 5</bnk_ad>

</bnk_u>

</osoba>

- <osoba __tag_order="70" cl_type="5">

<cl_stp __tag_order="72" type="int">1</cl_stp>

<cl_rez __tag_order="74" type="string">1</cl_rez>

<cl_id __tag_order="76" type="string">999999999</cl_id>

<cl_nm1 __tag_order="78" type="string">ТОВ"TEST9”</cl_nm1>

</osoba>

</inf_str>

</povidomlen>