Многие пользователи и технические специалисты столкнулись с неприятной ситуацией: после обновления конфигурации 1С:Бухгалтерия предприятия 3.0 (начиная с релизов 3.0.42.хх) перестал работать привычный механизм загрузки банковских выписок. Программа либо выдает ошибку «Не найден банковский счет», либо сообщает, что документ пропущен и не может быть включен в выписку ни по одному счету. Ситуация осложняется тем, что на предыдущих релизах те же самые файлы загружались без нареканий.
В этой статье мы подробно разберем причины возникновения данной проблемы, проанализируем изменения в программном коде и рассмотрим несколько способов решения — от простых административных настроек до внесения исправлений в общий модуль конфигурации.
Начиная с указанных версий, разработчики 1С существенно переработали механизм парсинга файлов формата ClientBankExchange. Основная цель изменений — повышение безопасности и точности сопоставления платежей. Однако на практике это привело к избыточной строгости проверок. Проанализируем основные факторы, блокирующие загрузку:
СчетПозволяетИдентифицироватьКонтрагента. Если номер счета относится к определенным категориям (например, транзитные счета или счета физических лиц), алгоритм может блокировать автоматическое определение владельца, считая данные недостаточно надежными для идентификации.Перед тем как приступать к правке кода, рассмотрим самый простой и зачастую эффективный метод. Нам необходимо убедиться, что данные в базе 1С идентичны данным в текстовом файле выгрузки из банк-клиента.
Выполним следующие шаги:
kl_to_1c.txt) через обычный блокнот.БИК и ИНН.В некоторых сборках релиза 3.0.42 наблюдался явный баг: при неудачном поиске счета программа пыталась обратиться к свойству Организация у пустого объекта. Если вы столкнулись с такой ошибкой, это означает, что поиск счета завершился неудачей, и программный код не обработал этот исключительный случай.
Рассмотрим временное решение («костыль»), которое обнаружили пользователи: иногда загрузка проходит успешно, если в форме загрузки снять галочки с документов списания и загружать только поступления. Это связано с тем, что алгоритм создания документа «Списание с расчетного счета» содержит больше проверок обязательных полей на этапе предварительного чтения файла.
Если обновление конфигурации до самого свежего релиза невозможно, а работать нужно сейчас, проанализируем ситуацию на уровне программного кода. Проблема кроется в изменении условий внутри общего модуля.
Нам необходимо найти следующий объект:
ОбщийМодуль.ЗагрузкаВыпискиПоБанковскомуСчету
Разберем функцию ЗаполнитьИдентификаторыУчастниковОперацийПоДаннымИзБанка. В проблемных релизах логика была изменена. Сравним старый и новый варианты.
Раньше условие выглядело так:
Если Идентификатор <> Неопределено Тогда
ИдентификаторыУчастника.Добавить(Идентификатор);
ИдентификаторыДокумента[Сторона + "Счет"] = Идентификатор;
КонецЕсли;
В новых релизах добавилась дополнительная проверка:
Если Идентификатор <> Неопределено И СчетПозволяетИдентифицироватьКонтрагента(БалансовыйСчет, ИдентификаторыФизическогоЛица.ЭтоФизическоеЛицо) Тогда
ИдентификаторыУчастника.Добавить(Идентификатор);
ИдентификаторыДокумента[Сторона + "Счет"] = Идентификатор;
КонецЕсли;
Именно функция СчетПозволяетИдентифицироватьКонтрагента зачастую возвращает Ложь для вполне легитимных счетов, из-за чего Идентификатор не записывается в структуру документа, и система «теряет» банковский счет. Чтобы вернуть работоспособность, можно временно закомментировать это дополнительное условие или использовать Расширение конфигурации, чтобы переопределить поведение этой функции, возвращая всегда Истина.
Проанализируем специфику отдельных банков. Пользователи отмечали, что даже после официальных патчей от 1С выписки Промсвязьбанка продолжали выдавать ошибку. Выясним причину: этот банк часто добавляет в текстовый файл специфическую информацию в поля наименований.
Рекомендуется выполнить следующие действия:
40702 810 ...), а в 1С он хранится сплошной строкой. Новый механизм загрузки перестал автоматически «очищать» эти данные.Проблема с загрузкой выписок в релизах 3.0.42.хх была признана разработчиками 1С как ошибочная. Если вы столкнулись с ней сегодня, наиболее правильным решением будет обновление до актуального релиза (3.0.43.хх и выше), где проверки были смягчены, а ошибки обращения к свойствам объектов исправлены.
Однако, если вы вынуждены работать на проблемном релизе, используйте предложенную выше правку в ОбщийМодуль.ЗагрузкаВыпискиПоБанковскомуСчету. Это позволит системе игнорировать избыточные проверки балансовых счетов и корректно сопоставлять документы с расчетными счетами вашей организации.