Рекомендації до пошуку помилкових тегів у файлі-квітанції
- При виникненні помилки в заголовку файла (атрибути тега povidomlen або структура ustanova) код помилки по файлу-повідомленню містить інформацію про помилковий тег.
- При відсутності обов'язкового тега по DTD помилка шукається за допомогою семантичного аналізатора та файла DTD.
- При відсутності обов'язкового тега на рівні логічного контролю в тегі tag_err атрибут tag_id дорівнює 0.
- При виникненні помилки в структурі 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_id – 2, str_sign – 3.
Розглянемо структуру
- <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>