Ситуация, когда при импорте платежных поручений из 1С в систему «Сбербанк Бизнес Онлайн» текст в поле «Назначение платежа» внезапно начинает повторяться дважды, является довольно распространенной технической проблемой. Чаще всего это происходит из-за обновлений на стороне банковского программного обеспечения, которое начинает некорректно интерпретировать стандартный файл обмена. Разберем подробно, почему это происходит и как исправить ситуацию различными способами.
Для понимания сути проблемы рассмотрим структуру текстового файла (формата txt), который формирует 1С при выгрузке платежей. Согласно общепринятому стандарту обмена «1С:Предприятие – Клиент-Банк» (версии 1.02 и выше), информация о назначении платежа может передаваться двумя способами одновременно:
В штатном режиме банковский парсер должен выбрать один из вариантов: либо прочитать одну длинную строку, либо собрать текст из нумерованных строк. Ошибка «задвоения» возникает в тот момент, когда алгоритм банка начинает суммировать содержимое всех этих полей. В результате в итоговой платежке мы видим сначала полный текст из общего поля, а затем его же повтор из сегментированных строк.
Если объем платежных поручений невелик, мы можем прибегнуть к ручному редактированию файла перед его загрузкой в банк. Рассмотрим этот процесс по шагам:
Ctrl+H (Замена) или воспользуемся поиском.НазначениеПлатежа1=, НазначениеПлатежа2= и так далее, оставив только основное поле НазначениеПлатежа=.Наиболее эффективным и современным решением является отказ от использования промежуточных текстовых файлов. Переход на технологию DirectBank позволяет отправлять платежи напрямую из интерфейса 1С в банк по защищенному каналу. В этом случае обмен идет через XML-структуры, где вероятность ошибок парсинга текстовых строк практически исключена.
Для настройки DirectBank в 1С проделаем следующее:
После активации этого механизма кнопка «Выгрузить» сменится на «Отправить в банк», и проблема с текстовыми полями исчезнет навсегда.
Если платежных поручений сотни и ручная правка невозможна, воспользуемся средствами автоматизации операционной системы. Мы можем создать небольшой скрипт, который мгновенно удалит ненужные теги из файла. Рассмотрим пример команды для командной строки PowerShell:
$path = "C:\Exchange\export.txt"
$cleanPath = "C:\Exchange\export_clean.txt"
Get-Content $path | Where-Object { $_ -notmatch "НазначениеПлатежа[1-9]=" } | Set-Content $cleanPath -Encoding String
Данный скрипт считывает файл, находит все строки, содержащие нумерованные назначения платежа (от 1 до 9), исключает их и записывает «чистый» результат в новый файл. Обратите внимание, что параметр -Encoding String в PowerShell обычно соответствует системной кодировке ANSI, что и требуется для банка.
В некоторых конфигурациях 1С (например, УПП или Комплексная автоматизация) предусмотрена возможность выбора версии формата выгрузки. Попробуем изменить версию обмена:
НазначениеПлатежа может отличаться, что иногда помогает «подстроиться» под текущие требования банковского фильтра.Важное примечание: Как показывает практика, подобные проблемы на стороне Сбербанка часто носят временный характер и связаны с неудачными релизами их внутренних систем. Если вы столкнулись с этим массово, имеет смысл обратиться в техподдержку банка — часто они откатывают изменения в течение 1–2 рабочих дней после массовых жалоб клиентов.