Merge pull request 'Пакет ДКБ 06.10.2026: ОСВ шести организаций, Счастливочная 1 кв 2025, ББ/ОФР в Excel, план счетов 1С' (#7) from feat/6-dkb-package into main

Reviewed-on: #7
This commit is contained in:
aep 2026-10-06 11:29:13 +03:00
commit 09cef6cc83
65 changed files with 2280 additions and 5 deletions

View File

@ -9,17 +9,20 @@
```
osv/{rb,schastl}/<ГГГГ-Qn | ГГГГ-FY>/ ОСВ по счетам, исходные имена файлов (разложены по шапке, не по имени)
osv/synthetic/ синтетика s01–s16 для форматов, которых нет в реальных данных (Срез 2a); генератор и описание — osv/synthetic/README.md
osv-dkb/<org>/<период>/ ОСВ шести организаций из пакета ДКБ 06.10.2026 (Цимлянский, НКЗ, Новоросметалл, НПЗ, Приманыческий,
Агрокомплекс): многолистовые книги, needs_check, 50 тыс. строк — вне тестов osv/**, см. osv-dkb/README.md
analysis-reports/<org>/<период>/ отчёты 1С «Анализ счета» по контрагентам группы из того же пакета (не ОСВ), см. README
statements/{rb,schastl}/ ББ/ОФР в PDF (машиночитаемые и сканы)
statements-xlsx/ ББ/ОФР в Excel — запросить у аналитиков (пока пусто)
statements-xlsx/<org>/<период>/ ББ/ОФР в Excel: Унагранде Ко/Групп (постраничные xls), НПЗ (ФСБУ 4/2023, одна книга), Межениновская
(TDSheet), templates/ — пустые формы 66н и ФСБУ 4/2023; см. statements-xlsx/README.md
ocr/ пары «вход → выход» ИС Сканирование: aep_N.pdf + aep_N.json
ИС кладёт в каталог <job_id> по одному json на каждый распознанный документ файла:
aep_3.pdf → aep_3.json (баланс + ОФР, успех) и aep_3_ofr.json (ошибка INVALID_DOCUMENT);
aep_6.pdf → aep_6.json (баланс + ОФР, успех); aep_5, aep_8 — ответы-ошибки
golden/ эталонная ручная консолидация и анализ (Excel), expected_osv_parse/ — снимки парсера
disclosures/ формы расшифровок к отчётности
directories/ план счетов 1С, справочники для seed (заполняется в Срезе 0)
directories/ выгрузка ЕЦП по ГК РБ (Срез 1), план счетов 1С заказчика chart-of-accounts-1c.xlsx (OQ-113)
```
Чего не хватает (есть в Project claude.ai / у аналитиков): 17 ОСВ ООО «Пекарня «Счастливочная» за 2024 г. и 2025
(счета 58, 62, 66, 67, 76), `Анализ Русский бисквит_заемщик 01102025.xlsx`, JSON-ответы ИС Сканирование aep_6/7/8/9,
ББ/ОФР в Excel, план счетов из бандла макета.
Чего не хватает (есть в Project claude.ai / у аналитиков): `Анализ Русский бисквит_заемщик 01102025.xlsx`, JSON-ответы
ИС Сканирование aep_6/7/8/9, стр. 1 ОФР АО «Унагранде Групп» за 2024, ИНН организаций из `osv-dkb/` (в шапках ОСВ их нет).

View File

@ -0,0 +1,10 @@
# analysis-reports — отчёты «Анализ счета» (не ОСВ)
Из пакета ДКБ 06.10.2026: книги `…ОСВ_58+60+62+66+67+76_ПоКомпаниямГруппы…` трёх организаций (НКЗ, Новоросметалл,
НПЗ), по листу на счёт. Несмотря на «ОСВ» в имени, это отчёт 1С **«Анализ счета»** за 9 месяцев 2025 г. с отбором по
контрагентам группы: колонки «Счет / Кор. Счет / Дебет / Кредит», строки «Начальное сальдо / Обороты за <месяц> /
Конечное сальдо» по корреспондирующим счетам. Парсер ОСВ правильно отвечает `INVALID_DOCUMENT` («в книге нет листов
ОСВ: листов просмотрено 6») — это регрессия на классификацию листов, а не формат для разбора.
Для консолидации интерес представляет содержание: обороты внутри группы по корреспонденции счетов (ВГО). Разбор
«Анализа счета» в объём срезов не входит; если понадобится — отдельный документ-тип и правило в `05-domain-rules.md`.

View File

@ -8,3 +8,10 @@
(АО «Русский бисквит», ООО «Пекарня Счастливочная») и кандидаты OQ-25 (ЧКФ, ОФГ, Малечкинская птицефабрика, ТК РБ).
- Полная выгрузка (8400 строк, 345 ГК) остаётся в `docs/source/biq/` — для прогона импорта целиком и профилирования
качества данных; сюда не копируется.
## `chart-of-accounts-1c.xlsx` — план счетов 1С (пакет ДКБ 06.10.2026)
Выгрузка плана счетов из 1С заказчика: 488 строк, колонки `Код счета`, `Наименование счета`, `Субконто 1..3`, `Вид`
(А/П/АП), забалансовые (`001`…, `МЦ`, `Я68…`). Закрывает OQ-113 (в seed `arm-core/api/seed/core/chart_of_accounts.csv`
122 строки, 19 субсчетов реальных ОСВ отсутствуют): все 122 кода seed есть в выгрузке, 366 кодов выгрузки в seed нет.
Перенос в seed — задача arm-core (формат csv: `code, parent_code, name, kind, row_type, is_off_balance`).

Binary file not shown.

View File

@ -0,0 +1,76 @@
{
"schema_version": "1.1",
"service": {
"name": "tabular-parser"
},
"status": "done",
"metrics": {
"rows": 0,
"warnings": [
"sheet=Лист_1 hierarchy=trivial",
"нет строк данных"
]
},
"documents": [
{
"document_type": "OSV",
"locator": "sheet:Лист_1",
"header": {
"organization_name": "ООО \"Пекарня \"Счастливочная\"",
"organization_inn": null,
"account_code_raw": "58",
"period_text": "1 квартал 2025 г.",
"period_year": 2025,
"period_quarter": "Q1",
"is_cumulative": true,
"data_type": "BU",
"currency": "RUB",
"header_variant": 1
},
"group_schema": [
{
"type": "ACCOUNT",
"name": "Счет"
},
{
"type": "COUNTERPARTY",
"name": "Контрагенты"
}
],
"columns": {
"opening_debit": "E",
"opening_credit": "H",
"turnover_debit": "J",
"turnover_credit": "L",
"closing_debit": "O",
"closing_credit": "Q"
},
"rows": [
{
"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": null,
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
}
],
"checks": {
"total_row_matches_root": true,
"balance_identity_violations": [],
"parent_sum_violations": []
}
}
]
}

View File

@ -0,0 +1,328 @@
{
"schema_version": "1.1",
"service": {
"name": "tabular-parser"
},
"status": "done",
"metrics": {
"rows": 13,
"warnings": [
"sheet=Лист_1 hierarchy=outline"
]
},
"documents": [
{
"document_type": "OSV",
"locator": "sheet:Лист_1",
"header": {
"organization_name": "ООО \"Пекарня \"Счастливочная\"",
"organization_inn": null,
"account_code_raw": "62",
"period_text": "1 квартал 2025 г.",
"period_year": 2025,
"period_quarter": "Q1",
"is_cumulative": true,
"data_type": "BU",
"currency": "RUB",
"header_variant": 1
},
"group_schema": [
{
"type": "ACCOUNT",
"name": "Счет"
},
{
"type": "DEPARTMENT",
"name": "Подразделение"
},
{
"type": "COUNTERPARTY",
"name": "Контрагенты",
"has_inn": true
}
],
"columns": {
"opening_debit": "G",
"opening_credit": "J",
"turnover_debit": "K",
"turnover_credit": "N",
"closing_debit": "Q",
"closing_credit": "S",
"inn": "E"
},
"rows": [
{
"row_number": 12,
"level": 0,
"parent_row_number": null,
"row_value": "62",
"group_type": "ACCOUNT",
"group_name": "Счет",
"account_code_raw": "62",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "54487831.16",
"opening_credit": null,
"turnover_debit": "138614053.36",
"turnover_credit": "101407541.60",
"closing_debit": "91694342.92",
"closing_credit": null,
"extra": null
},
{
"row_number": 13,
"level": 1,
"parent_row_number": 12,
"row_value": "62.01",
"group_type": "ACCOUNT",
"group_name": "Счет",
"account_code_raw": "62.01",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "65387831.16",
"opening_credit": null,
"turnover_debit": "135314053.36",
"turnover_credit": "101407541.60",
"closing_debit": "99294342.92",
"closing_credit": null,
"extra": null
},
{
"row_number": 14,
"level": 2,
"parent_row_number": 13,
"row_value": "БП Аренда",
"group_type": "DEPARTMENT",
"group_name": "Подразделение",
"account_code_raw": "62.01",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "1404630.00",
"opening_credit": null,
"turnover_debit": "7513890.00",
"turnover_credit": "3375900.00",
"closing_debit": "5542620.00",
"closing_credit": null,
"extra": null
},
{
"row_number": 15,
"level": 3,
"parent_row_number": 14,
"row_value": "МАЛЕЧКИНСКАЯ ПТИЦЕФАБРИКА ООО",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты",
"account_code_raw": "62.01",
"counterparty_name": "МАЛЕЧКИНСКАЯ ПТИЦЕФАБРИКА ООО",
"counterparty_inn": "3523023093",
"data_type": "BU",
"opening_debit": "3300.00",
"opening_credit": null,
"turnover_debit": "9900.00",
"turnover_credit": "9900.00",
"closing_debit": "3300.00",
"closing_credit": null,
"extra": null
},
{
"row_number": 16,
"level": 3,
"parent_row_number": 14,
"row_value": "РСП-Дом",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты",
"account_code_raw": "62.01",
"counterparty_name": "РСП-Дом",
"counterparty_inn": "3528014977",
"data_type": "BU",
"opening_debit": "22000.00",
"opening_credit": null,
"turnover_debit": "66000.00",
"turnover_credit": "66000.00",
"closing_debit": "22000.00",
"closing_credit": null,
"extra": null
},
{
"row_number": 17,
"level": 3,
"parent_row_number": 14,
"row_value": "РУССКИЙ БИСКВИТ АО",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты",
"account_code_raw": "62.01",
"counterparty_name": "РУССКИЙ БИСКВИТ АО",
"counterparty_inn": "3528052718",
"data_type": "BU",
"opening_debit": "1379330.00",
"opening_credit": null,
"turnover_debit": "7437990.00",
"turnover_credit": "3300000.00",
"closing_debit": "5517320.00",
"closing_credit": null,
"extra": null
},
{
"row_number": 18,
"level": 2,
"parent_row_number": 13,
"row_value": "БП Производство молочной булочки",
"group_type": "DEPARTMENT",
"group_name": "Подразделение",
"account_code_raw": "62.01",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "63983201.16",
"opening_credit": null,
"turnover_debit": "127800163.36",
"turnover_credit": "98031641.60",
"closing_debit": "93751722.92",
"closing_credit": null,
"extra": null
},
{
"row_number": 19,
"level": 3,
"parent_row_number": 18,
"row_value": "Ведомость в счет з/платы",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты",
"account_code_raw": "62.01",
"counterparty_name": "Ведомость в счет з/платы",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": null,
"turnover_debit": "73930.80",
"turnover_credit": "73930.80",
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 20,
"level": 3,
"parent_row_number": 18,
"row_value": "ОП \"Лидер\"",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты",
"account_code_raw": "62.01",
"counterparty_name": "ОП \"Лидер\"",
"counterparty_inn": "3528065770",
"data_type": "BU",
"opening_debit": null,
"opening_credit": null,
"turnover_debit": "4386.00",
"turnover_credit": "3870.00",
"closing_debit": "516.00",
"closing_credit": null,
"extra": null
},
{
"row_number": 21,
"level": 3,
"parent_row_number": 18,
"row_value": "РУССКИЙ БИСКВИТ АО",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты",
"account_code_raw": "62.01",
"counterparty_name": "РУССКИЙ БИСКВИТ АО",
"counterparty_inn": "3528052718",
"data_type": "BU",
"opening_debit": "63983201.16",
"opening_credit": null,
"turnover_debit": "127721846.56",
"turnover_credit": "97953840.80",
"closing_debit": "93751206.92",
"closing_credit": null,
"extra": null
},
{
"row_number": 22,
"level": 1,
"parent_row_number": 12,
"row_value": "62.02",
"group_type": "ACCOUNT",
"group_name": "Счет",
"account_code_raw": "62.02",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "10900000.00",
"turnover_debit": "3300000.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": "7600000.00",
"extra": null
},
{
"row_number": 23,
"level": 2,
"parent_row_number": 22,
"row_value": "БП Аренда",
"group_type": "DEPARTMENT",
"group_name": "Подразделение",
"account_code_raw": "62.02",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "10900000.00",
"turnover_debit": "3300000.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": "7600000.00",
"extra": null
},
{
"row_number": 24,
"level": 3,
"parent_row_number": 23,
"row_value": "РУССКИЙ БИСКВИТ АО",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты",
"account_code_raw": "62.02",
"counterparty_name": "РУССКИЙ БИСКВИТ АО",
"counterparty_inn": "3528052718",
"data_type": "BU",
"opening_debit": null,
"opening_credit": "10900000.00",
"turnover_debit": "3300000.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": "7600000.00",
"extra": null
},
{
"row_number": 25,
"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": "54487831.16",
"opening_credit": null,
"turnover_debit": "138614053.36",
"turnover_credit": "101407541.60",
"closing_debit": "91694342.92",
"closing_credit": null,
"extra": null
}
],
"checks": {
"total_row_matches_root": true,
"balance_identity_violations": [],
"parent_sum_violations": []
}
}
]
}

View File

@ -0,0 +1,80 @@
{
"schema_version": "1.1",
"service": {
"name": "tabular-parser"
},
"status": "done",
"metrics": {
"rows": 0,
"warnings": [
"sheet=Лист_1 hierarchy=trivial",
"нет строк данных"
]
},
"documents": [
{
"document_type": "OSV",
"locator": "sheet:Лист_1",
"header": {
"organization_name": "ООО \"Пекарня \"Счастливочная\"",
"organization_inn": null,
"account_code_raw": "66",
"period_text": "1 квартал 2025 г.",
"period_year": 2025,
"period_quarter": "Q1",
"is_cumulative": true,
"data_type": "BU",
"currency": "RUB",
"header_variant": 1
},
"group_schema": [
{
"type": "ACCOUNT",
"name": "Счет"
},
{
"type": "DEPARTMENT",
"name": "Подразделение"
},
{
"type": "COUNTERPARTY",
"name": "Контрагенты"
}
],
"columns": {
"opening_debit": "E",
"opening_credit": "H",
"turnover_debit": "J",
"turnover_credit": "L",
"closing_debit": "O",
"closing_credit": "Q"
},
"rows": [
{
"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": null,
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
}
],
"checks": {
"total_row_matches_root": true,
"balance_identity_violations": [],
"parent_sum_violations": []
}
}
]
}

View File

@ -0,0 +1,84 @@
{
"schema_version": "1.1",
"service": {
"name": "tabular-parser"
},
"status": "done",
"metrics": {
"rows": 0,
"warnings": [
"sheet=Лист_1 hierarchy=trivial",
"нет строк данных"
]
},
"documents": [
{
"document_type": "OSV",
"locator": "sheet:Лист_1",
"header": {
"organization_name": "ООО \"Пекарня \"Счастливочная\"",
"organization_inn": null,
"account_code_raw": "67",
"period_text": "1 квартал 2025 г.",
"period_year": 2025,
"period_quarter": "Q1",
"is_cumulative": true,
"data_type": "BU",
"currency": "RUB",
"header_variant": 1
},
"group_schema": [
{
"type": "ACCOUNT",
"name": "Счет"
},
{
"type": "DEPARTMENT",
"name": "Подразделение"
},
{
"type": "COUNTERPARTY",
"name": "Контрагенты"
},
{
"type": "CONTRACT",
"name": "Договоры"
}
],
"columns": {
"opening_debit": "E",
"opening_credit": "H",
"turnover_debit": "J",
"turnover_credit": "L",
"closing_debit": "O",
"closing_credit": "Q"
},
"rows": [
{
"row_number": 13,
"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": null,
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
}
],
"checks": {
"total_row_matches_root": true,
"balance_identity_violations": [],
"parent_sum_violations": []
}
}
]
}

View File

@ -0,0 +1,327 @@
{
"schema_version": "1.1",
"service": {
"name": "tabular-parser"
},
"status": "done",
"metrics": {
"rows": 13,
"warnings": [
"sheet=Лист_1 hierarchy=outline"
]
},
"documents": [
{
"document_type": "OSV",
"locator": "sheet:Лист_1",
"header": {
"organization_name": "ООО \"Пекарня \"Счастливочная\"",
"organization_inn": null,
"account_code_raw": "76",
"period_text": "1 квартал 2025 г.",
"period_year": 2025,
"period_quarter": "Q1",
"is_cumulative": true,
"data_type": "BU",
"currency": "RUB",
"header_variant": 1
},
"group_schema": [
{
"type": "ACCOUNT",
"name": "Счет"
},
{
"type": "COUNTERPARTY",
"name": "Контрагенты, ИНН",
"has_inn": true
},
{
"type": "CONTRACT",
"name": "Договоры"
}
],
"columns": {
"opening_debit": "E",
"opening_credit": "H",
"turnover_debit": "J",
"turnover_credit": "L",
"closing_debit": "O",
"closing_credit": "Q"
},
"rows": [
{
"row_number": 12,
"level": 0,
"parent_row_number": null,
"row_value": "76",
"group_type": "ACCOUNT",
"group_name": "Счет",
"account_code_raw": "76",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "1912967.95",
"opening_credit": null,
"turnover_debit": "79994.29",
"turnover_credit": "635852.26",
"closing_debit": "1357109.98",
"closing_credit": null,
"extra": null
},
{
"row_number": 13,
"level": 1,
"parent_row_number": 12,
"row_value": "76.04",
"group_type": "ACCOUNT",
"group_name": "Счет",
"account_code_raw": "76.04",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "100.00",
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": null,
"closing_credit": "100.00",
"extra": null
},
{
"row_number": 14,
"level": 2,
"parent_row_number": 13,
"row_value": "Костыгова Наталья Валериевна, 352800390201",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты, ИНН",
"account_code_raw": "76.04",
"counterparty_name": "Костыгова Наталья Валериевна, 352800390201",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "100.00",
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": null,
"closing_credit": "100.00",
"extra": null
},
{
"row_number": 15,
"level": 3,
"parent_row_number": 14,
"row_value": "Депонирование зарплаты ПС00-000001 от 30.06.2019 12:00:00",
"group_type": "CONTRACT",
"group_name": "Договоры",
"account_code_raw": "76.04",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "100.00",
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": null,
"closing_credit": "100.00",
"extra": null
},
{
"row_number": 16,
"level": 1,
"parent_row_number": 12,
"row_value": "76.05",
"group_type": "ACCOUNT",
"group_name": "Счет",
"account_code_raw": "76.05",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "123189.16",
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": "123189.16",
"closing_credit": null,
"extra": null
},
{
"row_number": 17,
"level": 2,
"parent_row_number": 16,
"row_value": "Межрегиональное операционное УФК (ФТС России), 7730176610",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты, ИНН",
"account_code_raw": "76.05",
"counterparty_name": "Межрегиональное операционное УФК (ФТС России), 7730176610",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "123189.16",
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": "123189.16",
"closing_credit": null,
"extra": null
},
{
"row_number": 18,
"level": 3,
"parent_row_number": 17,
"row_value": "1 от 01.01.2017",
"group_type": "CONTRACT",
"group_name": "Договоры",
"account_code_raw": "76.05",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "123189.16",
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": "123189.16",
"closing_credit": null,
"extra": null
},
{
"row_number": 19,
"level": 1,
"parent_row_number": 12,
"row_value": "76.41",
"group_type": "ACCOUNT",
"group_name": "Счет",
"account_code_raw": "76.41",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "26787.89",
"turnover_debit": "79994.29",
"turnover_credit": "85852.26",
"closing_debit": null,
"closing_credit": "32645.86",
"extra": null
},
{
"row_number": 20,
"level": 2,
"parent_row_number": 19,
"row_value": "УФК по Вологодской области (ОСП по г.Череповцу №1 УФССП по Вологодской области л/с05301А53990), 3525144985",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты, ИНН",
"account_code_raw": "76.41",
"counterparty_name": "УФК по Вологодской области (ОСП по г.Череповцу №1 УФССП по Вологодской области л/с05301А53990), 3525144985",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "13.40",
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": null,
"closing_debit": "13.40",
"closing_credit": null,
"extra": null
},
{
"row_number": 21,
"level": 2,
"parent_row_number": 19,
"row_value": "УФК по Вологодской области (ОСП по г.Череповцу №2 УФССП России по Вологодской области л/с05301А54000, 3525144985",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты, ИНН",
"account_code_raw": "76.41",
"counterparty_name": "УФК по Вологодской области (ОСП по г.Череповцу №2 УФССП России по Вологодской области л/с05301А54000, 3525144985",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "26801.29",
"turnover_debit": "79994.29",
"turnover_credit": "85852.26",
"closing_debit": null,
"closing_credit": "32659.26",
"extra": null
},
{
"row_number": 22,
"level": 1,
"parent_row_number": 12,
"row_value": "76.АВ",
"group_type": "ACCOUNT",
"group_name": "Счет",
"account_code_raw": "76.АВ",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "1816666.68",
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": "550000.00",
"closing_debit": "1266666.68",
"closing_credit": null,
"extra": null
},
{
"row_number": 23,
"level": 2,
"parent_row_number": 22,
"row_value": "РУССКИЙ БИСКВИТ АО, 3528052718",
"group_type": "COUNTERPARTY",
"group_name": "Контрагенты, ИНН",
"account_code_raw": "76.АВ",
"counterparty_name": "РУССКИЙ БИСКВИТ АО, 3528052718",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "1816666.68",
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": "550000.00",
"closing_debit": "1266666.68",
"closing_credit": null,
"extra": null
},
{
"row_number": 24,
"level": 3,
"parent_row_number": 23,
"row_value": "Поступление безналичных ДС ПС00-000061 от 30.03.2023 15:00:00",
"group_type": "CONTRACT",
"group_name": "Договоры",
"account_code_raw": "76.АВ",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": "1816666.68",
"opening_credit": null,
"turnover_debit": null,
"turnover_credit": "550000.00",
"closing_debit": "1266666.68",
"closing_credit": null,
"extra": null
},
{
"row_number": 25,
"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": "1912967.95",
"opening_credit": null,
"turnover_debit": "79994.29",
"turnover_credit": "635852.26",
"closing_debit": "1357109.98",
"closing_credit": null,
"extra": null
}
],
"checks": {
"total_row_matches_root": true,
"balance_identity_violations": [],
"parent_sum_violations": []
}
}
]
}

48
osv-dkb/README.md Normal file
View File

@ -0,0 +1,48 @@
# osv-dkb — ОСВ организаций из пакета ДКБ (06.10.2026)
Реальные ОСВ шести организаций вне группы «Русский бисквит», присланные ДКБ одним пакетом («Документы по дкб в
формате xls.zip»). Данные внутренние, наружу не выносить. Раскладка — `osv-dkb/<организация>/<период>/`, имена файлов
исходные. Период каталога — по шапке документа, не по имени файла: `2025-Q3` = «9 месяцев 2025 г.»,
`2024-10_2025-09` = «Октябрь 2024 г. – Сентябрь 2025 г.» (скользящие 12 месяцев, не с начала года).
**Почему отдельный каталог, а не `osv/`.** Тесты `tabular-parser` (`tests/fixtures/*`) и ядра (`test_mapping_golden`)
перечисляют `osv/**` и требуют от каждого файла: один лист ОСВ с именем `Лист_1`, статус `done`, период = каталогу,
golden-снимок. Здесь это не так: книги с несколькими листами ОСВ, статусы `needs_check`, листы `58`/`TDSheet`,
файлы по 9–14 МБ. Перенос в `osv/` и golden-снимки — после обобщения тестов (issue в `arm-tabular-parser`).
Пока это набор для ручной проверки парсера (`docs/dev/qa-guide.md` §6.7) и для будущих регрессий.
## Организации и статус парсера (CLI `src.parser.cli`, 06.10.2026)
| Каталог | Организация (по шапке) | Файлов | Формат | Парсер |
|---|---|---|---|---|
| `tsimlyansky/2025-Q3` | АО «Цимлянский» | 7 (58, 60, 62, 66, 67, 76, 91), xls | 1С, шапка варианта 1, outline, без валюты в шапке | `done`, кроме 91 — `needs_check` (см. ниже) |
| `nkz/2025-Q3` | ООО «Новороссийский Кислородный завод» | 2 книги по 3 листа (58+66+67, 60+62+76), xls | листы названы кодом счёта; иерархия outline и по отступам | 60+62+76 `done`; 58+66+67 `needs_check` (лист 58: «сумма детей ≠ родитель», строки 12, 24) |
| `nm/2025-Q3` | ООО «Новоросметалл» | 2 книги по 3 листа (58+66+67, 60+62+76) + ОСВ 63, xlsx | шапка варианта 2 («Период:», «Субконто»), «Выводимые данные: сумма»; на листах нет строки корневого счёта — верхний уровень сразу субсчета; «Итого» и «Итого развернутое» | `needs_check` на всех листах: «Итого ≠ корневому счёту» (несколько корней, OQ-106); 63 — шапка не разобрана (см. ниже) |
| `npz/2025-Q3`, `npz/2024-10_2025-09` | ООО «Новороссийский прокатный завод» (с обособленными подразделениями) | 2 книги (58+63+66+67 за 9 мес.; 60+62+76 за окт. 2024 – сент. 2025), xlsx | 1С, «Валюта БУ, НУ: RUB», outline | `done`; период «Октябрь 2024 г. – Сентябрь 2025 г.» разобран как `2024 Q4`, нарастающий — **неверно** (см. ниже) |
| `primanych/2025-Q3` | ООО «Приманыческий» | 7 (58, 60, 62, 66, 67, 76, 91), xls | как у Цимлянского | `done`, кроме 91 — `needs_check` |
| `agrokompleks/2025-Q3`, `agrokompleks/2024-10_2025-09` | АО фирма «Агрокомплекс» им. Н.И. Ткачева | 4, xls (9–14 МБ, лист `TDSheet`, 50 тыс. строк: субсчета → контрагенты → договоры) | шапка варианта 2, «сумма», outline | `needs_check`: «Итого ≠ корню» (несколько корней 62.01/62.04 …), нарушения тождества сальдо в блоках магазинов (строки 48201+ в 62), разбор 3–4 с |
ОСВ АО «Русский бисквит» за 3 кв. 2025 и ООО «Пекарня Счастливочная» 01/60 за 1 кв. 2025 из пакета совпали побайтно с
`osv/rb/2025-Q3` и `osv/schastl/2025-Q1` и не копировались; шесть недостающих ОСВ Счастливочной за 1 кв. 2025 (02, 58, 62,
66, 67, 76) положены в `osv/schastl/2025-Q1/` с golden-снимками.
## Что показали файлы (кандидаты на правила и доработки парсера)
1. **Скользящий период** «Октябрь 2024 г. – Сентябрь 2025 г.» (НПЗ 60/62/76, Агрокомплекс 76): парсер берёт первый месяц
и даёт `2024 Q4`, нарастающий. Нужен разбор диапазона и признак «не с начала года»; ядро должно такой документ
не привязывать к версии как нарастающий.
2. **Счёт 91** (Цимлянский, Приманыческий): строки аналитики по статьям доходов/расходов показывают только обороты,
сальдо нет (91 закрывается на 91.09) → тождество «начало + обороты = конец» нарушено на каждой строке → `needs_check`.
Вопрос к правилам §1.4: исключать ли 90/91/99 из проверки тождества по строкам.
3. **Несколько корней без строки счёта** (Новоросметалл, Агрокомплекс, вариант 2): на листе нет строки «58», верхний
уровень — 58.01, 58.03; «Итого» равно сумме корней, парсер сверяет «Итого» с первым корнем → `needs_check` (OQ-106).
Встречается массово, стоит сверять «Итого» с суммой строк уровня 0.
4. **Шапка ОСВ 63 Новоросметалл**: «Оборотно-сальдовая ведомость» / «Бухгалтерский | 9 месяцев 2025 г.» / колонки «Счет
(Код, Наименование)» двумя столбцами. Парсер не нашёл счёт, период и тип данных (`org = "Бухгалтерский"`), иерархия
по шаблону кодов. Новый формат заголовка таблицы.
5. **«Итого развернутое»** (Новоросметалл) — вторая итоговая строка после «Итого»; сейчас, видимо, попадает в OTHER.
6. **Листы названы кодом счёта** (`58`, `60`, …) и несколько ОСВ в одной книге — работает (`locator = sheet:58`).
7. **Без «Валюта» в шапке** (Цимлянский, НКЗ, НМ, Приманыческий, Агрокомплекс) — предупреждение, не ошибка.
8. **Объём**: 50 тыс. строк разбираются за 3–4 с; снимки таких файлов в golden не кладём (десятки МБ JSON).
Отчёты «Анализ счета» из того же пакета (`…ПоКомпаниямГруппы…`) — не ОСВ, лежат в `analysis-reports/`.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

17
statements-xlsx/README.md Normal file
View File

@ -0,0 +1,17 @@
# statements-xlsx — ББ и ОФР в Excel (Срез 2b)
Реальные формы из пакета ДКБ 06.10.2026 плюс пустые шаблоны. Единицы — тыс. руб. (в шапках «в тыс. рублей» /
«тыс. руб.»), при этом в выгрузках 1С значения с копейками. Раскладка `statements-xlsx/<организация>/<период>/`.
| Каталог | Организация, ИНН | Файлы | Формат |
|---|---|---|---|
| `unagrande-co/2024-FY` | АО «Унагранде Компани» (производство сыра), 3249004697 | `Б.Б Лист 1.xls` (актив, 0710001 на 31.12.2024), `Б.Б. Лист 2.xls` (пассив, «Форма 0710001 с.2»), `ОФР. Лист 1.xls` (0710002 за 2024), `ОФР. Лист 2 .xls` (с.2) | 1С, одна книга = одна страница формы; на с.2 нет шапки организации — склейка по паре файлов |
| `unagrande-group/2024-FY` | АО «Унагранде Групп», 7728757141 | `ББ. Лист 1 .xls`, `ББ. Лист 2 (2).xls`, `ОФР. Лист 2.xls` (**стр. 1 ОФР за 2024 в пакете нет**) | то же |
| `unagrande-group/2025-Q3` | АО «Унагранде Групп» | `ББ. Лист 1 3кв.25.xls`, `ББ. Лист 2 3кв.25.xls`, `ОФР. Лист 1 3кв.25.xls`, `ОФР. Лист 2 3кв.25.xls` (на 30.09.2025 / за январь–сентябрь 2025) | то же |
| `npz/2025-Q3` | ООО «Новороссийский прокатный завод», 2315995868 | `Бухгалтерская отчетность за Январь - Сентябрь 2025 г. (…).xlsx` | одна книга: ББ на 5 листах + ОФР на 3 листах, **новая форма ФСБУ 4/2023** с подстроками «в том числе» и пятизначными кодами (11901, 12101, 15201 …) |
| `mezheninovskaya/2025-Q3` | ООО «Агрофирма «Межениновская» (Томская обл.), 7016006635 | `1_Форма1_бух_09.xlsx` (ББ), `1_Форма2_бух_09.xlsx` (ОФР) за 9 месяцев 2025 | выгрузка 1С на листе `TDSheet`, форма 66н, коды в отдельной колонке |
| `templates/` | — | `ББ до 01.01.2025.xlsx`, `ОФР_до 01.01.2025.xlsx` (приказ 66н), `ББ после 01.01.2025.xlsx`, `ОФР_после 01.01.2025.xlsx` (ФСБУ 4/2023, приложения 3 и 4) | пустые формы — эталон состава строк и кодов для §12 |
Сопоставление страниц одной организации по файлам без шапки: по итогам (`1600` актива = `1700` пассива; `2400` на стр. 1
→ `2500` на стр. 2 с учётом 2510–2530). Парсер ББ/ОФР (§12 `05-domain-rules.md`) должен находить строки по **кодам**,
а не по позиции: здесь три разных раскладки (постраничные xls, многолистовая xlsx ФСБУ, `TDSheet`).

Binary file not shown.

Binary file not shown.