arm-tabular-parser/api/rules/osv_headers.yaml
Andrey Epifancev af8ec918c5 feat(osv): шапка ОСВ без меток и «Счет: Код / Наименование» (ОСВ 63 Новоросметалл), «Итого» ↔ Σ уровня 0 по нетто
- header: период отдельной ячейкой (periods.yaml: standalone), тип данных отдельной ячейкой («Бухгалтерский»,
  data_types.yaml: standalone_header), организация — хвост названия ведомости; код счёта — из первой строки-счёта
  таблицы (с предупреждением), если «по счету» в шапке нет.
- classify/detect: текст строки может стоять правее колонки текста (колонка задаёт уровень), подписи «Код»/
  «Наименование» (osv_headers.yaml: column_captions) — не группировки, строка сумм без подписи в конце таблицы —
  «Итого» (с предупреждением).
- checks: сумма уровня 0 сверяется с «Итого» по правилу R-21 (свёрнутое сальдо «Итого» — по нетто), как у родителя.
- tests: osv_dkb_files, покрытие словарей включает osv-dkb/**; README.

Refs #11

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 13:04:31 +04:00

82 lines
4.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Словарь заголовков ОСВ: чем помечены лист, блоки сумм, колонки и служебные строки (05-domain-rules.md §1.0–§1.2).
#
# Правила записи (проверяет загрузчик):
# - паттерн — регулярное выражение Python, ищется (`search`) в НОРМАЛИЗОВАННОМ тексте ячейки и применяется без учёта
# регистра. Нормализация: нижний регистр, «ё» -> «е», дефисы/тире/неразрывные пробелы/переносы строк -> пробел,
# пробелы схлопываются. Поэтому в паттернах нет «ё», дефисов и диапазонов [а-я]: пишите «оборотно сальдовая
# ведомость», «д т», `\w` вместо диапазона;
# - новый синоним = новая строка в нужном списке, без правки кода.
# Лист содержит ОСВ: любая ячейка (первые строки листа) матчит один из паттернов
sheet_markers:
- 'оборотно\s*сальдовая\s+ведомость'
# Листы форм ББ/ОФР (Срез 2b): ОСВ-парсер их пропускает с предупреждением
statement_markers:
- 'бухгалтерский\s+баланс'
- '0710001'
- 'отчет\s+о\s+финансовых\s+результатах'
- '0710002'
# Три группы сумм в заголовке таблицы. «Оборотно сальдовая» (название ведомости) не должно матчить turnover:
# отсюда границы слова `\bоборот(ы)?\b`.
groups:
opening:
- 'сальдо\s+на\s+начало'
- '\bнач(альн\w*)?\.?\s*сальдо'
- 'входящ\w*\s+сальдо'
turnover:
- '\bоборот(ы)?\b'
closing:
- 'сальдо\s+на\s+конец'
- '\bкон(ечн\w*)?\.?\s*сальдо'
- 'исходящ\w*\s+сальдо'
# Подзаголовки сумм под группой («Дебет»/«Кредит», «Дт»/«Кт», «Д-т»/«К-т»): ячейка начинается с синонима
debit:
- '^(дебет|дт|д т)\b'
credit:
- '^(кредит|кт|к т)\b'
# Служебные колонки таблицы по тексту заголовка. Код знает только колонку ИНН; прочие колонки таблицы (КПП, код,
# количество, валюта и т. п.) попадают в `rows[].extra` под текстом своего заголовка и словаря не требуют.
# (Записи kpp/code/quantity/currency удалены: код их не читал, тест покрытия словарей R-22 их не находил.)
service_columns:
inn:
- '\bинн\b'
# Итоговая строка таблицы (начало текста первой колонки)
total_row:
- '^итого\b'
# Вторая итоговая строка после «Итого» («Итого развернутое» в 1С): тоже TOTAL, но «Итого» листа — основная, первая из них
total_row_secondary:
- '^итого\s+развернут'
# Подписи колонок под названием группировки («Счет» -> «Код» | «Наименование»): это не группировки блока заголовка
column_captions:
- '^(код|наименование)$'
# Метки шапки документа (область выше заголовка таблицы); ключи фиксированы
header_markers:
# «по счету 60 за …»: код счёта — сразу после совпадения
account:
- '\bпо\s+счету\b'
# вариант 1: «… за 1 квартал 2025 г.», вариант 2: отдельная строка «Период: 1 квартал 2026 г.»
period:
- '\bза\s+'
- '^период\s*:\s*'
# «Выводимые данные: БУ (данные бухгалтерского учета)»
data_type:
- 'выводимые\s+данные'
# «Валюта БУ, НУ: RUB»
currency:
- '\bвалюта\b'
# «Параметры:» — блок над таблицей
org_params:
- '^параметры\b'
# вариант 2: «Детализация по субсчетам, субконто: Контрагенты, Договоры»; в первой колонке заголовка — «Субконто»
subkonto:
- '\bсубконто\b'
- '\bдетализация\b'