Плоская форма ОСВ 1С: счёт из шапки, «Итого развернутое», плоский список, контрагенты расчётных счетов (#59) #63

Merged
aep merged 16 commits from feat/59-osv-flat-form into main 2026-10-19 13:21:55 +03:00
2 changed files with 16 additions and 3 deletions
Showing only changes of commit 883c6fb628 - Show all commits

View File

@ -581,12 +581,17 @@ def _variant1_groups(sheet: Sheet, header: TableHeader, rules: Rules) -> GroupSc
def _kind_row_groups(sheet: Sheet, header: TableHeader, rules: Rules) -> list[OsvGroup]:
"""Виды субконто из строки шапки между названием и периодом: только узнанные явной записью словаря групп."""
"""Виды субконто из строки шапки между названием и периодом: только узнанные явной записью словаря групп, не
ACCOUNT; метки шапки (в том числе валюта) видом субконто не считаются."""
cells = _head_cells(sheet, header)
currency = _currency_cells(cells, rules)
groups: list[OsvGroup] = []
for cell in _kind_row_cells(_head_cells(sheet, header), rules):
for cell in _kind_row_cells(cells, rules):
if cell in currency or _is_structural_marker(cell, rules):
continue
for item in (part.strip() for part in cell.text.split(_LIST_SEPARATOR)):
known = rules.groups.known(item) if item else None
if known is not None:
if known is not None and known != "ACCOUNT":
groups.append(_group(known, item))
return groups

View File

@ -643,3 +643,11 @@ def test_unknown_kind_row_is_not_added_to_schema(rules: Rules) -> None:
def test_organizations_kind_row_is_counterparty(rules: Rules) -> None:
assert _flat_schema(rules, "Организации") == [("ACCOUNT", "Субконто"), ("COUNTERPARTY", "Организации")]
def test_currency_row_between_title_and_period_is_not_added_to_schema(rules: Rules) -> None:
assert _flat_schema(rules, "Валюта БУ, НУ: RUB") == [("ACCOUNT", "Субконто")]
def test_subkonto_cell_between_title_and_period_does_not_add_second_account(rules: Rules) -> None:
assert _flat_schema(rules, "Субконто") == [("ACCOUNT", "Субконто")]