При отправке платежных поручений из программы 1С:Бухгалтерия 3.0 через клиент-банк Альфа-Банка пользователи часто сталкиваются с жестким требованием со стороны банка: в файле экспорта должен быть корректно указан вид платежа. Банк ожидает увидеть код 00 (электронно), в то время как программа упорно выгружает значение 01 (почтой) или текстовое описание Электронно. Несоблюдение этого формата приводит либо к отклонению платежа банком, либо к его проведению по более дорогому тарифу (как за обработку бумажного носителя).
В этой статье мы подробно разберем, почему возникает эта путаница, в чем разница между реквизитами платежного поручения, и рассмотрим несколько практических способов решения этой проблемы — от простых организационных настроек до использования механизмов расширения 1С.
Для начала проанализируем нормативную базу и логику работы самой программы 1С. Очень часто путаница возникает из-за схожести названий двух реквизитов в платежном поручении:
Выяснив причину разногласий между требованиями банка и типовой выгрузкой, рассмотрим доступные варианты решения проблемы.
Самым надежным, современным и стабильным решением является полный отказ от промежуточных текстовых файлов (формата txt) и переход на технологию прямого обмена DirectBank.
При использовании DirectBank программа 1С общается с сервером Альфа-Банка напрямую через защищенный XML-протокол. В этом режиме интеграции все служебные теги, включая вид платежа и способ передачи, сопоставляются и кодируются автоматически на стороне банковского шлюза. Проблема с неверным заполнением полей в текстовом файле исчезает сама собой.
Для настройки DirectBank выполним следующие шаги:
После активации этого режима отправка платежей будет происходить по кнопке Отправить в банк непосредственно из журнала платежных поручений 1С.
Если по каким-то причинам переход на DirectBank невозможен (например, из-за требований безопасности или ограничений учетной записи), проанализируем настройки выгрузки текстового файла.
В карточке банковского счета организации присутствует ссылка Настройка программы банк-клиент. По умолчанию программа использует универсальный стандарт обмена, разработанный фирмой 1С. Однако для крупных банков часто предусмотрены специализированные шаблоны выгрузки.
Выполним проверку настройки:
Поскольку официальные обновления 1С не всегда оперативно подстраиваются под локальные требования конкретных банков, наиболее гибким инструментом решения проблемы является механизм расширений. Это позволяет доработать логику формирования файла экспорта без снятия конфигурации с поддержки.
Рассмотрим пример кода, который перехватывает процедуру записи файла выгрузки клиент-банка и принудительно заменяет текстовое значение ВидПлатежа=Электронно или числовой код ВидПлатежа=01 на требуемый банком формат ВидПлатежа=00.
Данный код размещается в модуле расширения, перехватывающем обработку выгрузки данных:
&Вместо("ВыгрузитьДокументы")
Процедура Инт_ВыгрузитьДокументы(ПараметрыВыгрузки, РезультатВыгрузки)
// Вызываем оригинальный метод конфигурации для формирования файла
ПродолжитьВызов(ПараметрыВыгрузки, РезультатВыгрузки);
// Проверяем, что файл успешно сформирован и путь к нему заполнен
Если ЗначениеЗаполнено(ПараметрыВыгрузки.ИмяФайлаВыгрузки) Тогда
ТекстФайла = Новый ТекстовыйДокумент;
ТекстФайла.Прочитать(ПараметрыВыгрузки.ИмяФайлаВыгрузки, КодировкаТекста.ANSI);
ПолныйТекст = ТекстФайла.ПолучитьТекст();
// Выполняем контекстную замену для соответствия требованиям Альфа-Банка
Если СтрНайти(ПолныйТекст, "ВидПлатежа=Электронно") > 0 Тогда
ПолныйТекст = СтрЗаменить(ПолныйТекст, "ВидПлатежа=Электронно", "ВидПлатежа=00");
ИначеЕсли СтрНайти(ПолныйТекст, "ВидПлатежа=01") > 0 Тогда
// Исключаем ошибочную подстановку "почтой"
ПолныйТекст = СтрЗаменить(ПолныйТекст, "ВидПлатежа=01", "ВидПлатежа=00");
КонецЕсли;
// Записываем скорректированный текст обратно в файл обмена
ТекстФайла.УстановитьТекст(ПолныйТекст);
ТекстФайла.Записать(ПараметрыВыгрузки.ИмяФайлаВыгрузки, КодировкаТекста.ANSI);
КонецЕсли;
КонецПроцедуры
Преимущество этого метода заключается в том, что бухгалтеру больше не требуется выполнять ручные операции при каждой отправке реестра платежей. Программа самостоятельно модифицирует исходящий текстовый файл «на лету» перед его отправкой или загрузкой в систему «Альфа-Бизнес Онлайн».
Если платежи нужно отправить срочно, а времени на приглашение программиста 1С или настройку DirectBank прямо сейчас нет, воспользуемся самым простым "ручным" методом:
1c_to_kl.txt).ВидПлатежа=Электронно (или ВидПлатежа=01, в зависимости от того, что именно сформировала ваша версия 1С).ВидПлатежа=00.Этот способ незаменим при разовых операциях, однако при ежедневной отправке большого объема платежей мы настоятельно рекомендуем настроить постоянное решение с помощью DirectBank или специализированного расширения конфигурации.