278 lines
17 KiB
Markdown
278 lines
17 KiB
Markdown
---
|
||
code: DOC-260010
|
||
title: "Парсинг ОСВ"
|
||
---
|
||
|
||
# Парсинг ОСВ
|
||
|
||
Виды ОСВ
|
||
|
||
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
|
||
```
|