При работе с банковскими выписками в конфигурации 1С:Бухгалтерия предприятия 3.0 бухгалтеры иногда сталкиваются с неприятной ситуацией: после загрузки файла выписки программа автоматически определяет плательщика или получателя не как организацию (контрагента), а как стороннее физическое лицо. Это приводит к хаосу в учете, неверному формированию проводок по счетам 60, 62 или 76 и необходимости ручной корректировки каждого документа. Рассмотрим подробнее, почему это происходит, как работает алгоритм поиска в 1С и какими способами можно окончательно решить данную проблему.
Для того чтобы понять причину ошибки, проанализируем, как программный код 1С обрабатывает файл kl_to_1c.txt, полученный из клиент-банка. Когда мы нажимаем кнопку «Загрузить», система считывает текстовые теги и пытается сопоставить данные из файла с записями в справочниках 1С. Поиск идет по строгому приоритету:
ПлательщикРасчСчет (или ПолучательРасчСчет) и ищет его в справочнике БанковскиеСчета. Если счет найден и он привязан к конкретному контрагенту или физическому лицу, 1С однозначно выбирает этого владельца.ИНН + КПП (для юрлиц) или просто ИНН (для физлиц и ИП).Выясним причину подмены: Если 1С упорно подставляет физическое лицо, значит, выполняется первое условие поиска — номер счета, указанный в файле выписки, закреплен в вашей базе за этим физическим лицом.
Как показывает практика и обсуждения на технических форумах, основной корень проблемы часто кроется в самом файле выгрузки из банковской программы (например, «Сбербанк Бизнес Онлайн»). В некоторых случаях (особенно при операциях с бизнес-картами или внутрибанковских переводах) банк в поле расчетного счета вместо фактического счета клиента 407... подставляет внутренний счет банка или корреспондентский счет (начинается на 301...).
Рассмотрим, как это превращается в ошибку в 1С:
ПлательщикРасчСчет стоит номер корсчета банка.Для решения этой проблемы нам необходимо выполнить несколько последовательных шагов. Пройдем по ним вместе.
Прежде всего, нам нужно убедиться, что проблема действительно в данных от банка. Найдите файл kl_to_1c.txt, который вы загружаете в 1С, и откройте его с помощью обычного «Блокнота».
Ctrl+F и введите в поиске «РасчСчет».301 (корсчет) или другой «странный» номер, отличный от реального счета контрагента, значит, банк выгружает данные некорректно.Даже если банк присылает корсчет, 1С не подставит физлицо, если этого счета нет в базе. Нам нужно найти и обезвредить ошибочную запись. Разберем, как это сделать:
Банковские счета. Если прямой ссылки нет, можно воспользоваться поиском (функция «Все функции» или «Функции для технического специалиста»).Если со счетами все в порядке, проанализируем справочники на предмет дублей. Часто бывает, что один и тот же человек заведен в базе и как Контрагент, и как Физическое лицо с одним и тем же ИНН.
Воспользуйтесь стандартной обработкой Поиск и удаление дублей:
Чтобы в будущем избежать ошибок, связанных с формированием текстовых файлов, рассмотрим возможность перехода на технологию 1С:ДиректБанк. Это современный способ обмена, который работает напрямую с сервером банка через API без промежуточных файлов. Для анализа и диагностики таких сеансов связи подойдёт консоль прямого обмена с банком.
Преимущества DirectBank для Сбербанка:
XML, где подмена полей практически исключена.Если вы решите программно скорректировать логику загрузки, обратите внимание на модуль обработки КлиентБанкЗагрузка. В типовых конфигурациях за поиск владельца счета отвечает функция, анализирующая структуру метаданных. Посмотрим на пример упрощенной логики, которую можно внедрить в расширение для дополнительной проверки:
// Пример логики для проверки соответствия типа владельца счета
Функция НайтиВладельцаПоСчету(НомерСчета, ИНН, КПП)
СчетОбъект = Справочники.БанковскиеСчета.НайтиПоНаименованию(НомерСчета);
Если ЗначениеЗаполнено(СчетОбъект) Тогда
Владелец = СчетОбъект.Владелец;
// Если владелец - физлицо, а в файле указан ИНН организации, делаем доп. проверку
Если ТипЗнч(Владелец) = Тип("СправочникСсылка.ФизическиеЛица") И ЗначениеЗаполнено(КПП) Тогда
Возврат Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН);
КонецЕсли;
Возврат Владелец;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Однако помните, что изменение типового кода — это крайняя мера. В большинстве случаев достаточно просто навести порядок в справочниках и удалить неверно заведенные номера счетов, которые дублируют банковские реквизиты (БИК или Корсчет). При необходимости можно использовать расширение для поиска контрагента и договора по назначению платежа.
Подведем итог: Проблема появления физических лиц вместо контрагентов — это почти всегда следствие «грязных» данных в справочнике Банковские счета или некорректных настроек экспорта в самом банке. Регулярно обновляйте конфигурацию 1С (релизы ниже 3.0.100 имели больше проблем с распознаванием форматов Сбербанка) и старайтесь использовать прямой обмен данными.