arm-ka-docs/source/tz/АРМ КА.Техническое задание - 06_7. Функциональные требования - 01_FNR01 Модуль загрузки документов и создания записи - 01_Парсинг ОСВ.md

17 KiB
Raw Permalink Blame History

code, title
code title
DOC-260010 Парсинг ОСВ

Парсинг ОСВ

Виды ОСВ

01 счет

Уровень (отступ) Значения
0 01 Общие суммы по счету 01
1 01.01 Общие суммы по счету 01.01
2 Основное подразделение Общие суммы по счету 01.01 по подразделу "Основное подразделение"
3 Автоматичес идентификационная система TRANSAS Т105 Сумма по текущей строке
3 Блок ваерный D 590 L 175 Сумма по текущей строке
3 Блок ваерный D 590 L 175 Сумма по текущей строке

03 счет

58 счет

В 58 счете не нашел ИНН компаний, только названия

Уровень (отступ) Значения
0 58 Общие суммы по счету 58
1 58.03 Общие суммы по счету 58.03
2 Основное подразделение Общие суммы по счету 58.03 по подразделу "Основное подразделение"
3 МАЛКИНСКОЕ-ХОЛДИНГ ООО Сумма по текущей строке
3 Перекальский Александр Юрьевич Сумма по текущей строке
3 ПРОЛИВ ООО Сумма по текущей строке
1 58.06 Общие суммы по счету 58.06
2 Основное подразделение Суммы по счету 58.06 по подразделу "Основное подразделение"
3 Перекальский Александр Юрьевич Сумма по текущей строке
3 ПРОЛИВ ООО Сумма по текущей строке

60 счет

Уровень (отступ) Валюта Значения
0 60, Расчеты с поставщиками и подрядчиками БУ Общие суммы по счету 60
1 60.01, Расчеты с поставщиками и подрядчиками БУ Общие суммы по счету 60.01 (суммы по счетам с уровнем 2, или суммы по счетам с уровнем 3)
2 Основное подразделение БУ Сумма по счету 60.01 по подразделу "Основное подразделение"
3 GOLDEN CENTRE TRADING LIMITED, CHEUNG KONG CENTER, LEVEL 19, 2 QUEENS ROAD CENTRAL, HONG KONG, HK БУ Сумма по текущей строке
2 Тенор БУ Сумма по счету 60.01 по подразделу "Тенор"
3 Баграм-Сервис БУ Сумма по текущей строке
1 60.32, Расчеты по авансам выданным (в у.е.) БУ Общие суммы по счету 60.32 (суммы по счетам с уровнем 2, или суммы по счетам с уровнем 3)
2 Основное подразделение БУ Сумма по счету 60.32 по подразделу "Основное подразделение"
3 Абсолют Страхование ООО БУ Сумма по текущей строке (берется только строка БУ для расчета, валюта дублирует сумму))
4 USD БУ Сумма по строке в рублях
4 Вал. Сумма по строке в валюе

62 счет

Уровень (отступ) Значения
0 62 Общие суммы по счету 62
1 62.01 Общие суммы по счету 62.01 (суммы по счетам с уровнем 2)
2 Баляев Сергей Николаевич Сумма по текущей строке

66 счет

Уровень (отступ) Значения
0 66, Расчеты по краткосрочным кредитам и займам Общие суммы по счету 66
1 66.01, Краткосрочные кредиты Общие суммы по счету 66.01 (суммы по счетам с уровнем 2, или суммы по счетам с уровнем 3)
2 Судно Вильгельм Торстейнссон Сумма по счету 66.01 по подразделу "Основное подразделение"
3 Банк ВТБ ПАО Общая сумма по компании Банк ВТБ ПАО (суммы по счетам с уровнем 4)
4 Кредитный договор № КС-ЦУ-702730/2022/00014 Сумма по строке
4 Кредитный договор № КС-ЦУ-702730/2022/00015 Сумма по строке

67 счет

Уровень (отступ) Значения
0 67 Общие суммы по счету 67
1 67.01 Общие суммы по счету 67.01 (суммы по счетам с уровнем 2)
2 Основное подразделение Сумма по счету 67.01 по подразделу "Основное подразделение"
3 БАНК ВТБ (ПАО) Общая сумма по компании

76 счет

Уровень (отступ) Значения
0 76 Общие суммы по счету 76
1 76.03 Общие суммы по счету 76.03 (суммы по счетам с уровнем 2)
2 БАНК ВТБ (ПАО) Сумма по текущей строке

Счет 80

Счет 83

Счет 90

Уровень (отступ) Значения
0 90 Общие суммы по счету 90
1 90.01 Общие суммы по счету 90.01 (суммы по счетам с уровнем 2, или суммы по счетам с уровнем 3)
2 90.01.1 Сумма по счету 90.01.1 (суммы по счетам с уровнем 3)
3 Автоуслуги (т) БУ Сумма по строке
3 20% Кол. Сумма по строке

Определение и обработка строк ОСВ

  1. Система считывает шапку ОСВ до начала табличной части и определяет перечень группировок, указанных в отчете. Группировки могут быть указаны отдельными строками (вариант 1), либо одной строкой (вариант 2).

  2. Каждое найденное значение группировки приводится к одному из допустимых типов:

    Типы группировок

    Значение в шапке ОСВ Тип
    Счет, Счета ACCOUNT
    Подразделение, Подразделения DEPARTMENT
    Контрагент, Контрагенты COUNTERPARTY
    Договор, Договоры, Договоры Контрагентов CONTRACT
    Другие значение, не подходящие под значения выше OTHER
  3. Система сохраняет порядок группировок, указанный в шапке.

    Например:
    Подразделения, Контрагенты, Договоры
    
    1 → DEPARTMENT
    2 → COUNTERPARTY
    3 → CONTRACT
    
  4. Значение ИНН не является отдельной группировкой. Если в шапке рядом с Контрагенты присутствует колонка ИНН, для группировки COUNTERPARTY фиксируется наличие дополнительного атрибута:

    has_inn = true
    or
    has_inn = false
    
  5. После обработки шапки система начинает последовательную обработку строк табличной части ОСВ. Для каждой строки необходимо получить как минимум:

    1. исходное значение строки;
    2. уровень группировки Excel;
    3. значения сальдо и оборотов;
    4. ИНН, если соответствующая колонка присутствует;
    5. признак БУ, Вал. или Кол., если он присутствует в ОСВ.
  6. Количество вложенных счетов и субсчетов не должно влиять на определение группировок. Начальной точкой определения аналитик и контрагентов является последний счет или субсчет текущей ветки, а не первый счет ОСВ Например, 60 -> 60.01 -> 60.01.1 -> ОАО ВТБ -> Договор №1, должно быть обработано следующим образом:

    60 = ACCOUNT
    60.01 = ACCOUNT
    60.01.1 = ACCOUNT
    ОАО ВТБ = COUNTERPARTY
    Договор №1 = CONTRACT
    
  7. Для строк, не являющихся счетами, система определяет положение строки внутри текущей ветки по уровню группировки Excel. Уровень группировки используется для определения отношений между строками:

    1. увеличение уровня означает переход к дочерней строке;
    2. одинаковый уровень означает строки одного уровня;
    3. уменьшение уровня означает завершение текущей вложенной группы.
  8. Тип строки определяется путем сопоставления структуры текущей ветки с последовательностью группировок из шапки.

    Пример

    При схеме ACCOUNT -> DEPARTMENT -> COUNTERPARTY -> CONTRACT и структуре - 67.01 -> Основное подразделение -> ОАО ВТБ -> Договор №1, получаем:

    Строка group\_type
    67.01 ACCOUNT
    Основное подразделение DEPARTMENT
    ОАО ВТБ COUNTERPARTY
    Договор №1 CONTRACT
  9. После определения строки COUNTERPARTY все ее дочерние строки продолжают классифицироваться согласно группировкам из шапки.

  10. Если после COUNTERPARTY в шапке указана неизвестная группировка, ее строки получают OTHER. Например, Контрагенты -> Валюта, COUNTERPARTY -> OTHER.

  11. Все строки ОСВ сохраняются независимо от их типа. Для строки необходимо хранить:

    Поле Назначение
    row\_number Номер исходной строки
    level Уровень группировки
    group\_type ACCOUNT / DEPARTMENT / COUNTERPARTY / CONTRACT / OTHER
    group\_name Исходное название группировки из шапки
    account\_id Нормализованный счет
    account\_code Код текущего счета
    counterparty\_name Значение строки COUNTERPARTY
    counterparty\_inn ИНН при наличии
    data\_type БУ (BU), Вал (CURRENCY), Кол (QUANTITY) при наличии
    Денежные показатели Сальдо и обороты

Шапки ОСВ

Вариант 1

Оборотно-сальдовая ведомость по счету 67 за 1 квартал 2026 г.
Выводимые данные: БУ (данные бухгалтерского учета)
Счет Сальдо на начало периода Обороты за период Сальдо на конец периода
Контрагенты ИНН Дебет Кредит Дебет Кредит Дебет Кредит
Договоры

Правила разбора:

Что определяем Источник Правило
Счет ОСВ Заголовок отчета Получить значение после "по счету"
Период Заголовок отчета Получить значение после "за"
Год Заголовок отчета Получить год
Квартал Заголовок отчета Получить квартал
Тип данных "Выводимые данные: БУ..." Получить значение после "Выводимые данные:"
Первая группировка строка "Счет" Присвоить значение account
Вторая группировка строка "Контрагенты" Присвоить значение counterparty
Дополнительный параметр ячейка "ИНН" Относится к строке "Контрагенты"
Третья группировка строка "Договоры" Присвоить значение contract

Пример результата:

account = 67

reporting_period = "1 квартал 2026 г."
period_year = 2026
period_quarter = 1

data_type = BU

group_schema[1] = ACCOUNT
group_schema[2] = COUNTERPARTY
group_schema[3] = CONTRACT

has_inn = true

Вариант 2

Оборотно-сальдовая ведомость по счету 60
Период: 1 квартал 2026 г.
Детализация по субсчетам, субконто: Контрагенты, Договоры
Выводимые данные: сумма
Субконто Сальдо на начало периода Оборот за период Сальдо на конец периода
Дебет Кредит Дебет Кредит Дебет Кредит

Правила разбора:

Что определяем Источник Правило
Счет ОСВ Заголовок отчета Получить значение после "по счету"
Период Заголовок отчета Получить значение после "Период:"
Год Заголовок отчета Получить год из периода
Квартал Заголовок отчета Получить квартал из периода
Тип данных "Выводимые данные: ..." Получить значение после "Выводимые данные:"
Первая группировка строка "Детализация по субсчетам, субконто:" Получить строку после двоеточия, присвоить первому значению - **account.**Разделение через запятые
Вторая группировка строка "Детализация по субсчетам, субконто:" Получить строку после двоеточия, присвоить второму значению -counterparty. Разделение через запятые

Пример результата:

account = 60

reporting_period = "1 квартал 2026 г."
period_year = 2026
period_quarter = 1

data_type = SUM

group_schema[1] = COUNTERPARTY
group_schema[2] = CONTRACT

has_inn = false