Почему двоится назначение платежа при выгрузке из 1С в клиент-банк и как это исправить?

Бухгалтер 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет Финансы и профессиональные услуги
← На главную

При выгрузке платежных поручений из программ 1С в текстовый файл формата «1C:Предприятие — Клиент банка» пользователи нередко сталкиваются с ситуацией, когда в интернет-банке текст назначения платежа дублируется дважды. Разберем детально, почему так происходит, на чьей стороне кроется ошибка и какие существуют способы ее решения.

Анализ структуры файла обмена и причины проблемы

Проанализируем текстовый файл обмена (обычно 1c_to_kl.txt), который формируется стандартной обработкой выгрузки. В секции документа платежного поручения можно увидеть следующие строки:

Пример фрагмента выгрузки:

НазначениеПлатежа=Оплата по счету № 1062 от 04.08.2017г. за абатмент пластиковый. Сумма 4000-00 В т.ч. НДС (18%) 610-17
НазначениеПлатежа1=Оплата по счету № 1062 от 04.08.2017г. за абатмент пластиковый.
НазначениеПлатежа2=Сумма 4000-00
НазначениеПлатежа3=В т.ч. НДС (18%) 610-17

Выясним причину такого заполнения со стороны 1С. Согласно официальному стандарту обмена между 1С и банковскими системами, предусмотрено два равноправных механизма передачи назначения платежа:

  1. Передача единой длинной строкой в реквизите НазначениеПлатежа.
  2. Разбиение назначения платежа на несколько строк ограниченной длины: НазначениеПлатежа1, НазначениеПлатежа2, НазначениеПлатежа3, НазначениеПлатежа4.

Типовые конфигурации 1С для универсальности и обратной совместимости со всеми возможными банковскими комплексами выгружают оба варианта одновременно. Корректно настроенный парсер на стороне интернет-банка должен считывать только один формат: либо общую строку, либо нумерованные части. Однако при сбоях или обновлении логики на стороне банка парсер считывает сначала полное поле, а затем последовательно добавляет к нему все нумерованные строки, что приводит к итоговому задвоению текста в документе.

Варианты решения и обхода проблемы

Рассмотрим способы, с помощью которых можно устранить проблему или автоматизировать работу, не дожидаясь исправления на стороне технической поддержки банка.

Способ 1. Переход на прямой обмен 1С:ДиректБанк

Наиболее надежный и современный вариант — отказ от промежуточных текстовых файлов в пользу сервиса 1С:ДиректБанк. При прямом обмене платежные документы передаются напрямую на банковский сервер по защищенному протоколу с использованием XML и веб-сервисов. В таком формате исключены ошибки парсинга старого текстового стандарта, а отправка и получение выписок происходят по нажатию одной кнопки в 1С.

Способ 2. Использование расширения конфигурации

Если перейти на прямой обмен невозможно, а банк оперативно не устраняет ошибку парсинга, скорректируем процедуру выгрузки с помощью расширения (без снятия базы 1С с поддержки). Разберем логику доработки:

  1. Создаем расширение конфигурации в режиме Конфигуратор.
  2. Переопределяем процедура выгрузки платежных документов (модуль обработки обмена с банком).
  3. Отключаем формирование нумерованных реквизитов НазначениеПлатежа1, НазначениеПлатежа2 и т. д., оставляя только одну единую строку НазначениеПлатежа.

Посмотрим на пример логики переопределения в расширении:


&Вместо("ВыгрузитьРеквизитыПлатежногоДокумента")
Процедура Расш1_ВыгрузитьРеквизитыПлатежногоДокумента(ТекстФайла, ДокументОбъект)
    // Вызываем базовое заполнение или формируем вывод реквизитов
    ПродолжитьВызов(ТекстФайла, ДокументОбъект);
    
    // При необходимости исключаем добавление строк НазначениеПлатежа1..N
    // оставляя в потоке только основное поле НазначениеПлатежа
КонецПроцедуры

Способ 3. Подключение внешней обработки выгрузки

В типовом рабочем месте «Обмен с банком» сохраняется возможность использовать внешнюю обработку формирования файлов. Можно взять стандартную обработку выгрузки, скорректировать модуль формирования текстового потока под требования конкретного банка и подключить ее в настройках обмена.

Способ 4. Пакетная очистка файла перед импортом

Если нет возможности дорабатывать 1С, а исправлять вручную каждую строку в клиент-банке долго, применим пакетное удаление лишних строк из сформированного файла 1c_to_kl.txt с помощью командной строки или скрипта перед отправкой файла в банк. Для этого удаляются все строки, начинающиеся с шаблонов НазначениеПлатежа1=, НазначениеПлатежа2=, НазначениеПлатежа3=, НазначениеПлатежа4=, после чего очищенный файл успешно загружается в систему банк-клиент без дублирования информации.

← На главную