Просмотр ОСВ как в 1С: строки счетов и субсчетов, без строк-показателей (#51, AURORA-1702, AURORA-1703) #52

Merged
aep merged 1 commits from feat/51-osv-view-rows into test 2026-10-20 23:07:37 +03:00
Owner

Closes #51. Jira: AURORA-1702, AURORA-1703 (замечания заказчика, чек-листы AURORA-1704 / AURORA-1705).

Что было

flattenEntries (src/widgets/DocumentReview/osvRows.ts) выводил только листья дерева строк:

  • AURORA-1702 — строки счёта и субсчетов с вложенными строками пропускались, их сальдо и обороты на экране не видны («субсчета без общего оборота по счёту»);
  • AURORA-1703 — после AURORA-1613 строки «Кол.»/«НУ» колонки «Показатели» лежат дочерними к строке БУ, поэтому строка БУ пропускалась как родитель, а на экране оставались «Кол.» с количеством вместо рублей (35 из 276 ОСВ выгрузки контура 20.10).

Что стало

  • Таблица в порядке файла, как в 1С (решение владельца 20.10.2026): счёт, субсчёт, подразделение с вложенными строками — жирные строки-группы со своими суммами; вложенные строки — с отступом по уровню в колонке аналитики.
  • Строка-показатель = group_type = OTHER, data_type не BU/SUM и не равен виду родителя (то же правило, что в проверках tabular-parser, §1.3). В таблицу не попадает и родителя группой не делает. Документ целиком в НУ и старые документы без вида строк — обычные строки.
  • Фильтр «Счёт / субсчёт» — счёт и все его субсчета («62» → 62, 62.01, 62.02; не 620). При поиске по аналитике/ИНН строки-группы скрываются.
  • EntryOut.data_type добавлен в типы (ядро отдаёт поле давно, arm-core/api/src/schemas/documents.py).
  • filterRows перенесён из компонента в osvRows.ts (чистая функция с тестами).
  • Спека document-review-ui («ОСВ-документ») обновлена: два новых сценария.

Проверка

  • make lint typecheck test build (без install: node_modules — симлинк): biome/ESLint — 0 ошибок (предупреждения старые, не в изменённых файлах), Prettier чистый, tsc --noEmit чистый, vitest 39 файлов / 342 теста зелёные, rsbuild build собирается.
  • Локальный стенд (arm-core main, tabular-parser 6c81199), реальные файлы выгрузки контура 20.10, ЮЛ Ветлуги:
    • ОСВ 41 1 кв. 2026 (24 строки, 12 «Кол.»): видны 41 жирным + 11 позиций номенклатуры с наименованием и рублями, строк «Кол.» нет;
    • ОСВ 62 10.2023–09.2024: 62 и 62.01 жирным с оборотами, контрагенты под ними;
    • ОСВ 58 1 кв. 2025: 58 → 58.01 → 58.01.1 → контрагенты с отступами; поиск «агрофрост» — только 2 строки контрагента;
    • ОСВ на 29 216 строк открывается, прокрутка работает.

Наблюдения

  • O-1: в ОСВ «Молочной» (29 тыс. строк) корневые строки — разделы «1», «2», «4» без кода счёта (OTHER, account_code = null); раньше они были скрыты как родители, теперь видны строками-группами с пустым субсчётом. Это данные парсера (файл так устроен), экран показывает как есть — deferred, к семье AURORA-1661/O-7 (arm-web#42).

Rulings I made

  • R-1: правило строки-показателя на фронте — OTHER + вид не BU/SUM + вид ≠ виду родителя (а не просто «вид ≠ родителю»): строка «БУ» под счётом с видом из шапки SUM не должна прятаться.
  • R-2: у строки счёта в колонке аналитики — её текст (row_value), в том числе у субсчёта без вложенных строк (раньше «—»), чтобы группы и одиночные субсчета выглядели одинаково.
  • R-3: группа выводится даже без сумм — она заголовок вложенных строк; субсчёт без вложенных строк и без сумм по-прежнему не выводится.
  • R-4: фильтр по счёту — по префиксу с точкой; подпись фильтра «Счёт / субсчёт».

Findings

Маркер Суть Статус
O-1 разделы «1», «2», «4» без кода счёта в ОСВ «Молочной» видны строками-группами deferred

🤖 Generated with Claude Code

Closes #51. Jira: AURORA-1702, AURORA-1703 (замечания заказчика, чек-листы AURORA-1704 / AURORA-1705). ## Что было `flattenEntries` (`src/widgets/DocumentReview/osvRows.ts`) выводил только листья дерева строк: - **AURORA-1702** — строки счёта и субсчетов с вложенными строками пропускались, их сальдо и обороты на экране не видны («субсчета без общего оборота по счёту»); - **AURORA-1703** — после AURORA-1613 строки «Кол.»/«НУ» колонки «Показатели» лежат дочерними к строке БУ, поэтому строка БУ пропускалась как родитель, а на экране оставались «Кол.» с количеством вместо рублей (35 из 276 ОСВ выгрузки контура 20.10). ## Что стало - Таблица в порядке файла, как в 1С (решение владельца 20.10.2026): счёт, субсчёт, подразделение с вложенными строками — жирные строки-группы со своими суммами; вложенные строки — с отступом по уровню в колонке аналитики. - Строка-показатель = `group_type = OTHER`, `data_type` не BU/SUM и не равен виду родителя (то же правило, что в проверках tabular-parser, §1.3). В таблицу не попадает и родителя группой не делает. Документ целиком в НУ и старые документы без вида строк — обычные строки. - Фильтр «Счёт / субсчёт» — счёт и все его субсчета («62» → 62, 62.01, 62.02; не 620). При поиске по аналитике/ИНН строки-группы скрываются. - `EntryOut.data_type` добавлен в типы (ядро отдаёт поле давно, `arm-core/api/src/schemas/documents.py`). - `filterRows` перенесён из компонента в `osvRows.ts` (чистая функция с тестами). - Спека `document-review-ui` («ОСВ-документ») обновлена: два новых сценария. ## Проверка - `make lint typecheck test build` (без `install`: node_modules — симлинк): biome/ESLint — 0 ошибок (предупреждения старые, не в изменённых файлах), Prettier чистый, `tsc --noEmit` чистый, vitest **39 файлов / 342 теста** зелёные, `rsbuild build` собирается. - Локальный стенд (arm-core main, tabular-parser 6c81199), реальные файлы выгрузки контура 20.10, ЮЛ Ветлуги: - ОСВ 41 1 кв. 2026 (24 строки, 12 «Кол.»): видны 41 жирным + 11 позиций номенклатуры с наименованием и рублями, строк «Кол.» нет; - ОСВ 62 10.2023–09.2024: 62 и 62.01 жирным с оборотами, контрагенты под ними; - ОСВ 58 1 кв. 2025: 58 → 58.01 → 58.01.1 → контрагенты с отступами; поиск «агрофрост» — только 2 строки контрагента; - ОСВ на 29 216 строк открывается, прокрутка работает. ## Наблюдения - O-1: в ОСВ «Молочной» (29 тыс. строк) корневые строки — разделы «1», «2», «4» без кода счёта (`OTHER`, `account_code = null`); раньше они были скрыты как родители, теперь видны строками-группами с пустым субсчётом. Это данные парсера (файл так устроен), экран показывает как есть — `deferred`, к семье AURORA-1661/O-7 (arm-web#42). ## Rulings I made - R-1: правило строки-показателя на фронте — `OTHER` + вид не BU/SUM + вид ≠ виду родителя (а не просто «вид ≠ родителю»): строка «БУ» под счётом с видом из шапки SUM не должна прятаться. - R-2: у строки счёта в колонке аналитики — её текст (`row_value`), в том числе у субсчёта без вложенных строк (раньше «—»), чтобы группы и одиночные субсчета выглядели одинаково. - R-3: группа выводится даже без сумм — она заголовок вложенных строк; субсчёт без вложенных строк и без сумм по-прежнему не выводится. - R-4: фильтр по счёту — по префиксу с точкой; подпись фильтра «Счёт / субсчёт». ## Findings | Маркер | Суть | Статус | |---|---|---| | O-1 | разделы «1», «2», «4» без кода счёта в ОСВ «Молочной» видны строками-группами | deferred | 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-20 23:01:24 +03:00
- AURORA-1702: таблица в порядке файла — счёт, субсчёт и подразделение с вложенными строками выводятся
  строками-группами (жирным, со своими сальдо и оборотами), вложенные — с отступом по уровню; фильтр по счёту
  оставляет счёт и все его субсчета, при поиске строки-группы скрываются.
- AURORA-1703: строки-показатели («Кол.», «НУ», «Вал.», «ПР»/«ВР»: OTHER, вид не BU/SUM и не равен виду
  родителя) в рублёвую таблицу не попадают и родителя группой не делают — строка БУ снова видна с
  наименованием и рублями. В EntryOut добавлен data_type (ядро его уже отдаёт).
- filterRows перенесён в osvRows.ts (чистая функция с тестами); спека document-review-ui обновлена.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep merged commit de4e477f2d into test 2026-10-20 23:07:37 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-web#52
No description provided.