- osv/schastl/2025-Q1: недостающие ОСВ 02, 58, 62, 66, 67, 76 + golden-снимки (72 реальных ОСВ, 88 снимков).
- osv-dkb/{tsimlyansky,nkz,nm,npz,primanych,agrokompleks}: 29 файлов вне тестов osv/** (многолистовые книги, needs_check,
скользящий период, 50 тыс. строк) — README с результатами прогона парсера и кандидатами на доработки.
- analysis-reports/{nkz,nm,npz}: отчёты «Анализ счета» (не ОСВ, INVALID_DOCUMENT ожидаем).
- statements-xlsx/{unagrande-co,unagrande-group,npz,mezheninovskaya,templates}: ББ/ОФР в трёх раскладках + пустые формы 66н/ФСБУ 4/2023.
- directories/chart-of-accounts-1c.xlsx: план счетов 1С заказчика, 488 строк (OQ-113).
Refs #6
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
49 lines
7.7 KiB
Markdown
49 lines
7.7 KiB
Markdown
# 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/`.
|