6.4 KiB
Raw Blame History

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) — без изменений.