17 KiB
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), либо одной строкой (вариант 2).
-
Каждое найденное значение группировки приводится к одному из допустимых типов:
Типы группировок
Значение в шапке ОСВ Тип Счет, Счета ACCOUNT Подразделение, Подразделения DEPARTMENT Контрагент, Контрагенты COUNTERPARTY Договор, Договоры, Договоры Контрагентов CONTRACT Другие значение, не подходящие под значения выше OTHER -
Система сохраняет порядок группировок, указанный в шапке.
Например: Подразделения, Контрагенты, Договоры 1 → DEPARTMENT 2 → COUNTERPARTY 3 → CONTRACT -
Значение ИНН не является отдельной группировкой. Если в шапке рядом с Контрагенты присутствует колонка ИНН, для группировки COUNTERPARTY фиксируется наличие дополнительного атрибута:
has_inn = true or has_inn = false -
После обработки шапки система начинает последовательную обработку строк табличной части ОСВ. Для каждой строки необходимо получить как минимум:
- исходное значение строки;
- уровень группировки Excel;
- значения сальдо и оборотов;
- ИНН, если соответствующая колонка присутствует;
- признак БУ, Вал. или Кол., если он присутствует в ОСВ.
-
Количество вложенных счетов и субсчетов не должно влиять на определение группировок. Начальной точкой определения аналитик и контрагентов является последний счет или субсчет текущей ветки, а не первый счет ОСВ Например, 60 -> 60.01 -> 60.01.1 -> ОАО ВТБ -> Договор №1, должно быть обработано следующим образом:
60 = ACCOUNT 60.01 = ACCOUNT 60.01.1 = ACCOUNT ОАО ВТБ = COUNTERPARTY Договор №1 = CONTRACT -
Для строк, не являющихся счетами, система определяет положение строки внутри текущей ветки по уровню группировки Excel. Уровень группировки используется для определения отношений между строками:
- увеличение уровня означает переход к дочерней строке;
- одинаковый уровень означает строки одного уровня;
- уменьшение уровня означает завершение текущей вложенной группы.
-
Тип строки определяется путем сопоставления структуры текущей ветки с последовательностью группировок из шапки.
Пример
При схеме ACCOUNT -> DEPARTMENT -> COUNTERPARTY -> CONTRACT и структуре - 67.01 -> Основное подразделение -> ОАО ВТБ -> Договор №1, получаем:
Строка group\_type 67.01 ACCOUNT Основное подразделение DEPARTMENT ОАО ВТБ COUNTERPARTY Договор №1 CONTRACT -
После определения строки COUNTERPARTY все ее дочерние строки продолжают классифицироваться согласно группировкам из шапки.
-
Если после COUNTERPARTY в шапке указана неизвестная группировка, ее строки получают OTHER. Например, Контрагенты -> Валюта, COUNTERPARTY -> OTHER.
-
Все строки ОСВ сохраняются независимо от их типа. Для строки необходимо хранить:
Поле Назначение 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