From e576201b0c483b887e0fa94756eac7decd81676b Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Mon, 19 Oct 2026 11:40:32 +0400 Subject: [PATCH 1/3] =?UTF-8?q?test(osv):=20=D1=81=D0=B8=D0=BD=D1=82=D0=B5?= =?UTF-8?q?=D1=82=D0=B8=D0=BA=D0=B0=20s33=E2=80=93s36=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BB=D0=BE=D0=BD=D0=BA=D0=B8=20=C2=AB=D0=9F?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D0=B8=C2=BB=20?= =?UTF-8?q?=D0=B8=20=D1=81=D1=80=D0=B5=D0=B7=D0=BE=D0=B2=20=D0=B2=D0=B0?= =?UTF-8?q?=D0=BB=D1=8E=D1=82=20(arm-tabular-parser#58)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5.5 --- osv/synthetic/s33_indicator_column_bu_nu.xlsx | Bin 0 -> 5614 bytes .../s34_indicator_column_qty_val_diff.xlsx | Bin 0 -> 5654 bytes osv/synthetic/s35_currency_slices.xlsx | Bin 0 -> 5611 bytes osv/synthetic/s36_no_data_type_header.xlsx | Bin 0 -> 5420 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 osv/synthetic/s33_indicator_column_bu_nu.xlsx create mode 100644 osv/synthetic/s34_indicator_column_qty_val_diff.xlsx create mode 100644 osv/synthetic/s35_currency_slices.xlsx create mode 100644 osv/synthetic/s36_no_data_type_header.xlsx diff --git a/osv/synthetic/s33_indicator_column_bu_nu.xlsx b/osv/synthetic/s33_indicator_column_bu_nu.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..196c30fada6c2153fb9a9d0dc96c402830c55c73 GIT binary patch literal 5614 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 literal 0 HcmV?d00001 diff --git a/osv/synthetic/s35_currency_slices.xlsx b/osv/synthetic/s35_currency_slices.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2f7cca43ff807a9b2d385fcfc0904f76771de6ad GIT binary patch literal 5611 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 literal 0 HcmV?d00001 diff --git a/osv/synthetic/s36_no_data_type_header.xlsx b/osv/synthetic/s36_no_data_type_header.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0367ba06b7490b1cce3961dc28d8a78de688f6f2 GIT binary patch literal 5420 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 T8DjtdF6xj)we%U%pWprsE2~op literal 0 HcmV?d00001 -- 2.47.2 From 13e3a136573931d04a65447e1e789f702a401a97 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Mon, 19 Oct 2026 12:20:32 +0400 Subject: [PATCH 2/3] =?UTF-8?q?Golden=20s33=E2=80=93s36:=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BB=D0=BE=D0=BD=D0=BA=D0=B0=20=C2=AB=D0=9F=D0=BE=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D0=B8=C2=BB,=20=C2=AB=D0=92=20?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=D1=8E=D1=82=D0=B5=C2=BB=20(#58)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5.5 --- .../synthetic/s33_indicator_column_bu_nu.json | 238 ++++++++++++++++ .../s34_indicator_column_qty_val_diff.json | 259 ++++++++++++++++++ .../synthetic/s35_currency_slices.json | 217 +++++++++++++++ .../synthetic/s36_no_data_type_header.json | 151 ++++++++++ 4 files changed, 865 insertions(+) create mode 100644 golden/expected_osv_parse/synthetic/s33_indicator_column_bu_nu.json create mode 100644 golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json create mode 100644 golden/expected_osv_parse/synthetic/s35_currency_slices.json create mode 100644 golden/expected_osv_parse/synthetic/s36_no_data_type_header.json diff --git a/golden/expected_osv_parse/synthetic/s33_indicator_column_bu_nu.json b/golden/expected_osv_parse/synthetic/s33_indicator_column_bu_nu.json new file mode 100644 index 0000000..1aab503 --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s33_indicator_column_bu_nu.json @@ -0,0 +1,238 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 6, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:Лист_1", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_OUTLINE", + "severity": "info", + "message": "иерархия строк — по группировке листа (outline)" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "тип выводимых данных (БУ/НУ/сумма) в шапке не найден" + } + ], + "header": { + "organization_name": "ООО \"Тестовая организация\"", + "organization_inn": null, + "account_code_raw": "02", + "period_text": "3 квартал 2025 г.", + "period_year": 2025, + "period_quarter": "Q3", + "is_cumulative": false, + "period_start": "2025-07-01", + "period_end": "2025-09-30", + "is_from_year_start": false, + "data_type": null, + "currency": "RUB", + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Счет" + }, + { + "type": "OTHER", + "name": "Основные средства" + } + ], + "columns": { + "opening_debit": "E", + "opening_credit": "F", + "turnover_debit": "G", + "turnover_credit": "H", + "closing_debit": "I", + "closing_credit": "J" + }, + "rows": [ + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "02", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "300000.00", + "turnover_debit": "20000.00", + "turnover_credit": "30000.00", + "closing_debit": null, + "closing_credit": "310000.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 9, + "row_value": "НУ", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "NU", + "opening_debit": null, + "opening_credit": "300000.02", + "turnover_debit": "20000.00", + "turnover_credit": "30000.03", + "closing_debit": null, + "closing_credit": "310000.05", + "extra": { + "Показа-\nтели": "НУ" + } + }, + { + "row_number": 11, + "level": 1, + "parent_row_number": 9, + "row_value": "Печь подовая", + "group_type": "OTHER", + "group_name": "Основные средства", + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "100000.00", + "turnover_debit": "20000.00", + "turnover_credit": "10000.00", + "closing_debit": null, + "closing_credit": "90000.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 12, + "level": 2, + "parent_row_number": 11, + "row_value": "НУ", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "NU", + "opening_debit": null, + "opening_credit": "100000.02", + "turnover_debit": "20000.00", + "turnover_credit": "10000.01", + "closing_debit": null, + "closing_credit": "90000.03", + "extra": { + "Показа-\nтели": "НУ" + } + }, + { + "row_number": 13, + "level": 1, + "parent_row_number": 9, + "row_value": "Плита индукционная", + "group_type": "OTHER", + "group_name": "Основные средства", + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "200000.00", + "turnover_debit": null, + "turnover_credit": "20000.00", + "closing_debit": null, + "closing_credit": "220000.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 14, + "level": 2, + "parent_row_number": 13, + "row_value": "НУ", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "NU", + "opening_debit": null, + "opening_credit": "200000.00", + "turnover_debit": null, + "turnover_credit": "20000.02", + "closing_debit": null, + "closing_credit": "220000.02", + "extra": { + "Показа-\nтели": "НУ" + } + }, + { + "row_number": 15, + "level": 0, + "parent_row_number": null, + "row_value": "Итого", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "300000.00", + "turnover_debit": "20000.00", + "turnover_credit": "30000.00", + "closing_debit": null, + "closing_credit": "310000.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 16, + "level": 0, + "parent_row_number": null, + "row_value": "НУ", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "NU", + "opening_debit": null, + "opening_credit": "300000.02", + "turnover_debit": "20000.00", + "turnover_credit": "30000.03", + "closing_debit": null, + "closing_credit": "310000.05", + "extra": { + "Показа-\nтели": "НУ" + } + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json b/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json new file mode 100644 index 0000000..7908db4 --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json @@ -0,0 +1,259 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 8, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:Лист_1", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_OUTLINE", + "severity": "info", + "message": "иерархия строк — по группировке листа (outline)" + }, + { + "code": "OSV_ROWS", + "severity": "info", + "message": "строка 16: метка «Ед.» в колонке «Показатели» не распознана — строка вне проверок" + } + ], + "header": { + "organization_name": "ООО \"Тестовая организация\"", + "organization_inn": null, + "account_code_raw": "60", + "period_text": "3 квартал 2025 г.", + "period_year": 2025, + "period_quarter": "Q3", + "is_cumulative": false, + "period_start": "2025-07-01", + "period_end": "2025-09-30", + "is_from_year_start": false, + "data_type": "BU", + "currency": "RUB", + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Счет" + }, + { + "type": "COUNTERPARTY", + "name": "Контрагенты" + } + ], + "columns": { + "opening_debit": "E", + "opening_credit": "F", + "turnover_debit": "G", + "turnover_credit": "H", + "closing_debit": "I", + "closing_credit": "J" + }, + "rows": [ + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "60", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": "400.00", + "turnover_debit": "600.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": "300.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 9, + "row_value": "ООО Альфа", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60", + "counterparty_name": "ООО Альфа", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": null, + "turnover_debit": "500.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": null, + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 11, + "level": 2, + "parent_row_number": 10, + "row_value": "Вал.", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "CURRENCY", + "opening_debit": "12.50", + "opening_credit": null, + "turnover_debit": "6.00", + "turnover_credit": "3.00", + "closing_debit": "15.50", + "closing_credit": null, + "extra": { + "Показа-\nтели": "Вал." + } + }, + { + "row_number": 12, + "level": 2, + "parent_row_number": 10, + "row_value": "Кол.", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "QUANTITY", + "opening_debit": "3.00", + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": null, + "closing_debit": "3.00", + "closing_credit": null, + "extra": { + "Показа-\nтели": "Кол." + } + }, + { + "row_number": 13, + "level": 1, + "parent_row_number": 9, + "row_value": "ООО Бета", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60", + "counterparty_name": "ООО Бета", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "400.00", + "turnover_debit": "100.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": "300.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 14, + "level": 2, + "parent_row_number": 13, + "row_value": "ПР", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": null, + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "10.00", + "turnover_credit": null, + "closing_debit": "10.00", + "closing_credit": null, + "extra": { + "Показа-\nтели": "ПР" + } + }, + { + "row_number": 15, + "level": 2, + "parent_row_number": 13, + "row_value": "ВР", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": null, + "opening_debit": null, + "opening_credit": "5.00", + "turnover_debit": null, + "turnover_credit": null, + "closing_debit": null, + "closing_credit": "5.00", + "extra": { + "Показа-\nтели": "ВР" + } + }, + { + "row_number": 16, + "level": 2, + "parent_row_number": 13, + "row_value": "Ед.", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": null, + "opening_debit": "1.00", + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": null, + "closing_debit": "1.00", + "closing_credit": null, + "extra": { + "Показа-\nтели": "Ед." + } + }, + { + "row_number": 17, + "level": 0, + "parent_row_number": null, + "row_value": "Итого", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": "400.00", + "turnover_debit": "600.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": "300.00", + "extra": { + "Показа-\nтели": "БУ" + } + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/golden/expected_osv_parse/synthetic/s35_currency_slices.json b/golden/expected_osv_parse/synthetic/s35_currency_slices.json new file mode 100644 index 0000000..d413111 --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s35_currency_slices.json @@ -0,0 +1,217 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 7, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:Лист_1", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_OUTLINE", + "severity": "info", + "message": "иерархия строк — по группировке листа (outline)" + } + ], + "header": { + "organization_name": "ООО \"Тестовая организация\"", + "organization_inn": null, + "account_code_raw": "60", + "period_text": "3 квартал 2025 г.", + "period_year": 2025, + "period_quarter": "Q3", + "is_cumulative": false, + "period_start": "2025-07-01", + "period_end": "2025-09-30", + "is_from_year_start": false, + "data_type": "BU", + "currency": "RUB", + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Счет" + }, + { + "type": "COUNTERPARTY", + "name": "Контрагенты" + } + ], + "columns": { + "opening_debit": "E", + "opening_credit": "F", + "turnover_debit": "G", + "turnover_credit": "H", + "closing_debit": "I", + "closing_credit": "J" + }, + "rows": [ + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "60", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": "2000.00", + "turnover_debit": "1000.00", + "turnover_credit": "500.00", + "closing_debit": "10000.00", + "closing_credit": "2500.00", + "extra": null + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 9, + "row_value": "60.21", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": "2000.00", + "turnover_debit": "1000.00", + "turnover_credit": "500.00", + "closing_debit": "10000.00", + "closing_credit": "2500.00", + "extra": null + }, + { + "row_number": 11, + "level": 2, + "parent_row_number": 10, + "row_value": "ООО Альфа", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60.21", + "counterparty_name": "ООО Альфа", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": "2000.00", + "turnover_debit": "1000.00", + "turnover_credit": "500.00", + "closing_debit": "10000.00", + "closing_credit": "2500.00", + "extra": null + }, + { + "row_number": 12, + "level": 3, + "parent_row_number": 11, + "row_value": "Валюта USD", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": null, + "turnover_debit": "1000.00", + "turnover_credit": null, + "closing_debit": "10000.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 13, + "level": 4, + "parent_row_number": 12, + "row_value": "В валюте", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "CURRENCY", + "opening_debit": "100.00", + "opening_credit": null, + "turnover_debit": "11.00", + "turnover_credit": null, + "closing_debit": "111.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 14, + "level": 3, + "parent_row_number": 11, + "row_value": "Валюта EUR", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "2000.00", + "turnover_debit": null, + "turnover_credit": "500.00", + "closing_debit": null, + "closing_credit": "2500.00", + "extra": null + }, + { + "row_number": 15, + "level": 4, + "parent_row_number": 14, + "row_value": "В валюте", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "CURRENCY", + "opening_debit": null, + "opening_credit": "20.00", + "turnover_debit": null, + "turnover_credit": "5.00", + "closing_debit": null, + "closing_credit": "25.00", + "extra": null + }, + { + "row_number": 16, + "level": 0, + "parent_row_number": null, + "row_value": "Итого", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": "2000.00", + "turnover_debit": "1000.00", + "turnover_credit": "500.00", + "closing_debit": "10000.00", + "closing_credit": "2500.00", + "extra": null + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/golden/expected_osv_parse/synthetic/s36_no_data_type_header.json b/golden/expected_osv_parse/synthetic/s36_no_data_type_header.json new file mode 100644 index 0000000..91d0bec --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s36_no_data_type_header.json @@ -0,0 +1,151 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 3, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:Лист_1", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_OUTLINE", + "severity": "info", + "message": "иерархия строк — по группировке листа (outline)" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "тип выводимых данных (БУ/НУ/сумма) в шапке не найден" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "вид данных в шапке не указан — строки без метки приняты как БУ" + } + ], + "header": { + "organization_name": "ООО \"Тестовая организация\"", + "organization_inn": null, + "account_code_raw": "60", + "period_text": "3 квартал 2025 г.", + "period_year": 2025, + "period_quarter": "Q3", + "is_cumulative": false, + "period_start": "2025-07-01", + "period_end": "2025-09-30", + "is_from_year_start": false, + "data_type": null, + "currency": "RUB", + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Счет" + }, + { + "type": "COUNTERPARTY", + "name": "Контрагенты" + } + ], + "columns": { + "opening_debit": "E", + "opening_credit": "F", + "turnover_debit": "G", + "turnover_credit": "H", + "closing_debit": "I", + "closing_credit": "J" + }, + "rows": [ + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "60", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": "400.00", + "turnover_debit": "600.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": "300.00", + "extra": null + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 9, + "row_value": "ООО Альфа", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60", + "counterparty_name": "ООО Альфа", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": null, + "turnover_debit": "500.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 11, + "level": 1, + "parent_row_number": 9, + "row_value": "ООО Бета", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60", + "counterparty_name": "ООО Бета", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "400.00", + "turnover_debit": "100.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": "300.00", + "extra": null + }, + { + "row_number": 12, + "level": 0, + "parent_row_number": null, + "row_value": "Итого", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": "400.00", + "turnover_debit": "600.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": "300.00", + "extra": null + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} -- 2.47.2 From ea3c44aed617087920ea875166ccb809ee0ddc02 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Mon, 19 Oct 2026 12:47:49 +0400 Subject: [PATCH 3/3] =?UTF-8?q?Golden=20s34:=20=D1=82=D0=B5=D0=BA=D1=81?= =?UTF-8?q?=D1=82=20=D0=BF=D1=80=D0=B5=D0=B4=D1=83=D0=BF=D1=80=D0=B5=D0=B6?= =?UTF-8?q?=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=20=D0=BD=D0=B5=D0=B8?= =?UTF-8?q?=D0=B7=D0=B2=D0=B5=D1=81=D1=82=D0=BD=D0=BE=D0=B9=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BA=D0=B5=20(#58)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5.5 --- .../synthetic/s34_indicator_column_qty_val_diff.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json b/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json index 7908db4..0c67b2e 100644 --- a/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json +++ b/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json @@ -22,7 +22,7 @@ { "code": "OSV_ROWS", "severity": "info", - "message": "строка 16: метка «Ед.» в колонке «Показатели» не распознана — строка вне проверок" + "message": "строка 16: метка «Ед.» в колонке «Показатели» не распознана — строка не участвует в проверках" } ], "header": { -- 2.47.2