57 lines
6.4 KiB
Markdown
57 lines
6.4 KiB
Markdown
## Why
|
||
|
||
AURORA-1661 (баг заказчика, найден прогоном выгрузки контура AURORA-1639, 16.10.2026; свод `admin/1639-contour-run`,
|
||
находки O-2, O-3, O-4, O-29): ОСВ 1С по одному счёту в **плоской форме** — шапка «Оборотно-сальдовая ведомость по счету:
|
||
76» (с двоеточием), колонка «Субконто», строки счёта и группировок нет, сразу список контрагентов, затем «Итого
|
||
развернутое» и «Итого» — не разбирается или разбирается неверно:
|
||
|
||
- без строки счёта и без оформления — `INVALID_FORMAT` «иерархия строк не определена» (12 файлов контура, в том числе
|
||
файл «ОСВ сч. 60 за 2 кв. 2026» из письма заказчика; 6 из 10 файлов Компании 4, tp#49);
|
||
- «по счету: X» с двоеточием не распознаётся: счёт берётся из первой строки таблицы («76.2» вместо «76»), вместо
|
||
организации — вид субконто («Контрагенты», «Материалы»);
|
||
- «Итого развернутое» стоит **перед** «Итого» и становится строкой данных под последним счётом (ложные нарушения
|
||
«сумма детей = родитель» и тождества строки);
|
||
- если вид субконто не назван (в шапке только «Субконто»), контрагенты 60/62/67/76 молча получают `OTHER`: ядро их не
|
||
сопоставляет, в сводной ОСВ нет признака ГСК/ГК/Внешний, ВГО их не видит (O-29, ОСВОКТ-24).
|
||
|
||
Валютная часть AURORA-1661 («Валюта USD» / «В валюте», O-7) — в параллельном треке вместе с AURORA-1613 (путь
|
||
`data_type`), не здесь.
|
||
|
||
Срез: доработка Среза 2a (парсер ОСВ, `09-delivery-plan.md`). Репозитории: tabular-parser (код, эта спека),
|
||
arm-ka-docs (`05-domain-rules.md` §1.1, §1.3, §1.4, `07-open-questions.md`), arm-ka-fixtures (синтетика и golden).
|
||
Таблицы DBML v5.19 не затрагиваются; контракт результата не меняется (`CONTRACT_VERSION` прежний).
|
||
|
||
## What Changes
|
||
|
||
- **Шапка (§1.1).** Код счёта после «по счету» — и с двоеточием («по счету: 76.Н.1»); счёт шапки важнее первой
|
||
строки таблицы (фолбэк OQ-134 — только без счёта в шапке, как сейчас). Ячейки между строкой названия ведомости и
|
||
строкой периода — строка вида субконто, не организация; организация — также из метки «План счетов <организация>».
|
||
Известные виды субконто из этой строки («Контрагенты») становятся группировками схемы после ACCOUNT.
|
||
- **«Итого развернутое» (§1.4).** Вторая итоговая строка — `TOTAL` и **перед**, и после «Итого»; сверка «Итого =
|
||
корень» берёт основную «Итого», а не «Итого развернутое».
|
||
- **Плоский список (§1.3).** Новая стратегия иерархии `header_account` — все строки уровня 0 под счётом шапки:
|
||
применима, только если в шапке есть код счёта и среди строк таблицы нет ни одной строки-счёта; стоит в каскаде перед
|
||
`sums`. Строки без счёта в ветке наследуют счёт шапки (`account_code_raw`). «Итого» без корневой строки ACCOUNT
|
||
сверяется с суммой строк уровня 0.
|
||
- **Контрагенты по плану счетов (§1.1/§1.3).** На расчётных счетах (58, 60, 62, 66, 67, 75, 76, 80 — данные
|
||
`rules/osv_groups.yaml`) первая не-счётная позиция без названия в схеме — `COUNTERPARTY` с предупреждением `OSV_ROWS`.
|
||
- Синтетика `s40`–`s44`, golden; правила §1 и открытые вопросы в docs.
|
||
|
||
## Capabilities
|
||
|
||
### Modified Capabilities
|
||
|
||
- `osv-parsing`: «Шапка документа и схема группировок», «Иерархия строк — каскад стратегий», «Классификация строк»,
|
||
«Контрольные суммы определяют статус».
|
||
|
||
## Non-goals
|
||
|
||
- Валюта («Валюта <код>», «В валюте»), колонка «Показатели», `data_type` строки при молчащей шапке — трек A (AURORA-1613
|
||
+ валютная часть 1661), слит в main (#58). После его слияния строки плоских файлов без «Выводимые данные» получают
|
||
`data_type = BU` с предупреждением `OSV_HEADER`, `header.data_type` остаётся `null`; в свод они попадают.
|
||
- «Учредители» на 80 (именованная группировка `OTHER`, O-29) — не меняется (R-8).
|
||
- Вид субконто «Организации» (множественное число) — синоним COUNTERPARTY в `osv_groups.yaml` (R-10, R-17), единственное
|
||
«Организация» — собственная организация учёта, не вид субконто; прочие неизвестные виды в схему не
|
||
добавляются, позиция остаётся без названия и подпадает под правило расчётных счетов.
|
||
- Склейка кварталов (O-28), «Итого» с потерянной подписью, буквенные счета первого сегмента (OQ-103) — без изменений.
|