Выписка банка
Бухгалтер загружает выписку из интернет-банка, система сопоставляет каждую операцию со счетами клиентов и документами поставщиков, бухгалтер проверяет и проводит отмеченное. План «ИИ повсеместно, но уместно», этап 2: здесь работает код, а не модель — формат выписки точный, ИНН и суммы читаются как есть.
Реализовано 05.10.2026: модуль
internal/modules/bankstatements,POST /api/v1/finance/statements/match, миграция0186(индексы по ИНН компаний и поставщиков). Фронт — «Платежи → Выписка банка» (StatementImportPanel).
Формат
Файл обмена «1С — Клиент банка» (1CClientBankExchange, версия 1.0x) — его выгружает любой банк. Кодировка Windows-1251 по формату или UTF-8 (определяется сама). До 5 МБ.
Из секций СекцияДокумент … КонецДокумента берутся номер, дата, сумма, счета и ИНН сторон, назначение платежа. Направление: наш счёт (РасчСчет выписки) — получатель → поступление, плательщик → списание; если счёт не указан — по ДатаПоступило / ДатаСписано. Вторая сторона: плательщик у поступления, получатель у списания; «ИНН 7701234567 ООО …» в имени отрезается.
Сопоставление
| Направление | Сторона по ИНН | Документы |
|---|---|---|
| Поступление | компания (companies.inn, действующая раньше) | неоплаченные счета из реестра документов (RegistryRepository, пресет unpaid) |
| Списание | поставщик (suppliers.inn) | документы поставщика в статусе approved / partially_paid с остатком (сумма минус проведённые платежи) |
Уверенность (confidence):
sure— номер документа есть в назначении платежа («по счёту № 69», «сч. 69», «N 69»), сумма не больше остатка;likely— номера нет, но ровно один документ с остатком, равным сумме;candidates— номер есть, но сумма больше остатка, или подходящих документов несколько: до пяти кандидатов, свежие первыми; у компании без неоплаченных счетов — пустой список (аванс);none— контрагента с таким ИНН нет.
Счёт закрытого, потерянного или отменённого проекта помечается project_closed и не предлагается ни по номеру, ни по сумме: документы закрытого проекта не меняются, оплату на такой счёт сервер не разнесёт. Если номер в назначении указывает на такой счёт, строка — candidates с объяснением: провести без счёта (аванс) или открыть проект.
duplicate_of — неотменённый платёж с тем же счётом RMS (account_id), датой, суммой и направлением: строка уже внесена.
Проведение
Эндпоинт ничего не сохраняет. Фронт создаёт платежи обычным POST /payments по отмеченным строкам, статус «Проведён»:
- поступление — контрагент «компания», разнесение на выбранный счёт на сумму не больше остатка (остаток платежа — аванс), счёт переходит в «Оплачен» / «Оплачен частично» через разнесения;
- списание — по документу поставщика (
supplier_document_id), сумма не больше остатка. Списание без документа (налоги, комиссии, зарплата) не проводится из выписки: у исходящего платежа обязательное основание расхода, его вносят вручную.
Неизвестного плательщика или получателя создают прямо в строке — «Создать компанию» / «Создать поставщика» (быстрое создание по ИНН, см. «создать на лету»).
Права
Разбор выписки — тем, кто ведёт платежи (accountingManageMW: accounting.manage / запись затрат). Кнопка «Выписка банка» — у финансового контура (accounts_manage).
Ошибки
| Код | Когда |
|---|---|
bank_statement_format | не файл «1С — Клиент банка» |
bank_statement_too_large | больше 5 МБ |
bank_statement_empty | в выписке нет операций |