Вопрос бухгалтера звучал буднично: по банку индивидуального предпринимателя за сентябрь не сходятся четыре платежа. Через несколько часов пришёл второй: «появился ещё один счёт, напутаны проводки». За обоими стояла одна проблема: обмен 1С с банком раскладывал выписку не по тем карточкам банковских счетов.
Учёт ведётся в 1С:Бухгалтерии 3.0 в 1С:Фреш, выписка приходит через 1С:ДиректБанк сама и сразу проводится. У предпринимателя два счёта в одном банке — основной и накопительный. Ниже — симптомы, причина, как мы искали дубли, как исправляли и что ещё осталось проверить. Организация, банк и номера счетов не называются, суммы округлены.
Симптомы: что видел бухгалтер
- «Нет платежей». Четырёх платежей за два сентябрьских дня в 1С не было видно. На деле все они в базе были: операции одного дня загрузились только спустя шесть недель, а переводы между основным и накопительным счётом с конца лета ложились на новую карточку счёта.
- «Появился лишний счёт». У ИП три карточки банковских счетов вместо двух. Третью в сентябре завёл сам обмен с банком, без участия людей.
- «Напутаны проводки». За несколько минут одного утра обмен загрузил выписку основного счёта за два месяца второй раз — на карточку накопительного счёта — и провёл все документы: около 150 поступлений и списаний.
Задвоилось всё, что было в выписке: около 2,5 млн ₽ поступлений от покупателей (часть ушла авансами на 62), около 2 млн ₽ личных средств предпринимателя, комиссии банка, оплаты поставщикам, эквайринг. Часть задвоенных поступлений попала в КУДиР, а до срока авансового платежа по УСН за девять месяцев оставались считаные дни.
Остаток 51 вырос примерно на 450 тыс. ₽ — на двух карточках накопительного счёта. Основная карточка при этом не изменилась, поэтому по ней ошибку не видно.
Причина: две карточки с одним номером счёта
Карточку накопительного счёта больше года назад завели вручную и указали в ней номер основного счёта. В списке это в глаза не бросается: у карточки своё название, и до лета 2026 года документы накопительного счёта шли на неё.
В настройке 1С:ДиректБанка были включены «Загружать выписку по всем счетам в банке», «Автоматическое создание ненайденных элементов» и автопроведение поступлений и списаний. Дальше — то, что мы увидели в базе:
- Для накопительного счёта, номера которого не было ни на одной карточке, обмен в сентябре сам завёл новую карточку. Движения накопительного счёта с конца лета пошли на неё, а история и остаток остались на старой. Остаток одного счёта разошёлся по двум карточкам.
- С номером основного счёта карточек было две. Однажды утром выписка основного счёта за два месяца легла на вторую из них и сразу провелась.
- Во время исправления, пока номер основного счёта ещё стоял на двух карточках, обмен положил на вторую карточку и операции текущего дня.
Отсюда наш вывод: 1С:ДиректБанк, по-видимому, подбирает карточку для выписки по номеру счёта. 1С это не подтверждала — вывод сделан по тому, какие документы, когда и на какие карточки легли. Когда загружен каждый документ, видно по самой базе: не по дате документа, а по моменту его создания.
Как искали дубли: только чтение
Сначала, ничего не меняя в базе, прочитали через OData всё, что касается банка:
- банковские счета всех организаций базы: реквизиты, когда создана карточка, последний документ и число документов за месяц по каждой;
- поиск «пропавших» сумм по всем организациям и счетам — так нашлись четыре платежа бухгалтера;
- документы каждой карточки ИП: обороты по месяцам и момент загрузки — по нему видна повторная загрузка двух месяцев выписки за несколько минут;
- остатки 51 по каждой карточке на конец каждого месяца;
- переводы между своими счетами: на какую карточку легла каждая сторона перевода.
Дубль — документ на лишней карточке, у которого на основной есть двойник того же вида, с тем же днём, суммой, входящим номером и видом операции. У настоящих операций накопительного счёта двойника на основной карточке нет: перевод с основного счёта — это списание там и поступление здесь.
Чтение дало и ожидаемый остаток: сколько должно остаться на накопительном счёте после снятия дублей. С этой цифрой сверялись после записи.
Как исправляли: пробный прогон, запись, сверка
- Пробный прогон без записи: 145 дублей, у каждого найден двойник на основной карточке, 79 документов накопительного счёта нужно свести на одну карточку. Если бы хоть у одного дубля двойника не нашлось, скрипт не записал бы ничего.
- Перед каждой правкой документ перечитывается. Если он изменился с момента чтения, запись останавливается.
- Дубли распроведены и помечены на удаление, но не удалены: пометку можно снять и документ провести снова. После каждого проверено, что движений не осталось — ни проводок, ни записей КУДиР, ни расчётов по эквайрингу.
- Документы новой карточки и переводы на неё перенесены на старую карточку накопительного счёта с перепроведением. После каждого проверено, что состав движений прежний. При ошибке скрипт вернул бы документ на прежнюю карточку в прежнем состоянии проведения.
- На старой карточке исправлен номер счёта. Так история накопительного счёта с прошлого года осталась на месте: переносить её на новую карточку значило бы перепроводить закрытый год.
- Остатки 51 по каждой карточке сняты до и после. Ожидаемый остаток — прежний минус то, что внесли в 51 снятые дубли. Основная карточка меняться не должна.
Запись заняла около 12 минут — около 500 операций записи, каждая в журнале.
Что показало повторное чтение
Пока скрипт работал, обмен с банком в очередной раз загрузил выписку и положил операции дня основного счёта ещё и на карточку накопительного: четыре новых дубля. Остаток не сошёлся с расчётом ровно на их сумму. Тот же скрипт в режиме поздних дублей нашёл их — у каждого двойник на основной карточке — и снял.
После этого остаток 51 по накопительному счёту совпал с расчётом до копейки, основная карточка не изменилась, на лишней карточке — ноль. Сверку этого остатка с выпиской банка делает бухгалтер.
Лишнюю карточку скрипт пометить не смог: она подключена к обмену с банком, и при её записи 1С обращается к регистру «Банковские счета интеграции с банком», на который у пользователя OData нет прав. Обходить эту защиту мы не стали. Карточку пометил на удаление человек с полными правами в интерфейсе 1С по пошаговой инструкции — с точками, где нужно остановиться и прислать снимок экрана.
Что ещё не проверено
Теперь номер каждого счёта стоит только на одной действующей карточке. Как 1С:ДиректБанк загрузит первую операцию накопительного счёта после этого, пока не видно: операций по нему ещё не было. Проверим тем же чтением: документ должен лечь на правильную карточку, а пар «одна операция на двух карточках» быть не должно.
Если операция ляжет на помеченную карточку или обмен заведёт новую, значит, он привязан к самой карточке, а не к номеру. Тогда поменяем роли: действующей станет карточка обмена, старая останется архивом истории, остаток перенесётся одной операцией, документы перенесёт скрипт. Поэтому кейс в статусе «В работе».
Как проверить свою базу
- Справочник «Банковские счета» каждой организации: нет ли двух карточек с одинаковым номером счёта. Особенно если карточку заводили вручную — для накопительного, депозитного или валютного счёта.
- Нет ли карточек, которых никто не заводил: при включённом «Автоматическом создании ненайденных элементов» обмен с банком создаёт их сам.
- Настройка обмена: «Банк и касса» → «Банковские выписки» → «Ещё» → «Настроить обмен с банком». Какие флажки включены: загрузка по всем счетам в банке, автоматическое создание ненайденных элементов, автопроведение.
- Остаток 51 по каждой карточке против выписки банка на одну дату. Если у счёта несколько карточек, сложите их остатки.
- Документы с одинаковыми днём, суммой и входящим номером на разных карточках одной организации. Переводы между своими счетами — не дубли: у них списание на одной карточке и поступление на другой.
- Нет ли дней без выписки: последний документ по каждому счёту и число документов за месяц. Если выписка за день пришла через неделю, это тоже повод разобраться.
Чего не делать сразу: не удалять дубли и лишнюю карточку, пока для каждого дубля не найден двойник и документы с лишней карточки не перенесены. «Удаление помеченных объектов» — только после сверки остатков с банком.
Вопросы, которые задают в такой ситуации
Почему 1С:ДиректБанк загрузил выписку дважды?
По нашим наблюдениям, ДиректБанк подбирает карточку для выписки по номеру счёта. У организации было две карточки с номером основного счёта, и выписка за два месяца легла на вторую. 1С это поведение не подтверждала, вывод сделан по движениям нашей базы.
Откуда в 1С банковский счёт, который никто не заводил?
Если в настройке обмена включены «Загружать выписку по всем счетам в банке» и «Автоматическое создание ненайденных элементов», для счёта без своей карточки обмен заводит её сам. У нас так появилась вторая карточка накопительного счёта: на старой стоял чужой номер.
Как отличить дубль от настоящей операции?
У дубля на другой карточке той же организации есть двойник: тот же вид документа, день, сумма, входящий номер и вид операции. У перевода между своими счетами такого двойника нет — там списание на одной карточке и поступление на другой.
Можно удалить дубли сразу?
Лучше распровести и пометить на удаление, а «Удаление помеченных объектов» запускать после сверки остатков с банком. Тогда ошибку можно отменить: снять пометку и провести документ снова.
Почему лишнюю карточку не удалось пометить через OData?
Карточка подключена к обмену с банком. При её записи 1С обращается к регистру «Банковские счета интеграции с банком», а у пользователя OData прав на него нет, в публикации OData его тоже нет. Пометку сделал человек с полными правами в интерфейсе 1С.
Нужно ли перезакрывать месяцы?
Распроведённые дубли с конца лета сдвинули границу последовательности документов, поэтому при закрытии этих месяцев 1С предложит перепровести документы. Порядок закрытия согласуйте с бухгалтером.
Кейс обезличен: организация, бухгалтер, банк, номера счетов и документов не публикуются, суммы округлены.