Как устранить ошибку «Файл является файлом выписки» при выгрузке платежек в банк «Санкт-Петербург»?

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

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

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

Причина возникновения ошибки: логика парсера iBank2

Для начала проанализируем технологическую базу. Банк «Санкт-Петербург» использует для обслуживания корпоративных клиентов систему iBank2 (разработки компании БИФИТ). Алгоритмы проверки входящих файлов в этой системе настроены весьма жестко. Когда вы загружаете файл, система не просто ищет секции документов, она анализирует заголовок и служебные поля на предмет их принадлежности к определенному типу операций.

Ошибка «файл является файлом выписки» означает, что парсер банка обнаружил в текстовом файле теги, которые по стандарту 1С должны присутствовать только в отчетах банка перед клиентом (в выписках). Увидев эти данные, система блокирует импорт, так как не может создать «новые» платежные поручения из документа, который выглядит как «архив исполненных операций».

Главный виновник — СекцияРасчСчет

Рассмотрим конкретное решение, найденное в ходе обсуждения проблемы. Основной причиной ошибки является наличие в файле выгрузки блока СекцияРасчСчет.

В типовых конфигурациях 1С (например, 1С:Бухгалтерия 3.0 или 1С:ERP) этот блок используется преимущественно при формировании файлов выписки. Однако в самописных конфигурациях («нетленках») или при доработке внешних обработок разработчики иногда включают этот блок для передачи номера счета организации.

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

Как исправить код выгрузки

Проанализируем ваш алгоритм формирования текстового файла. Если вы используете объект ТекстовыйДокумент или записываете данные в поток, найдите место, где формируется заголовок файла. Вам необходимо убедиться, что следующие строки не попадают в файл, если вы выгружаете платежные поручения:


// Этого блока НЕ должно быть в файле выгрузки платежек!
ТекстФайла.ДобавитьСтроку("СекцияРасчСчет");
ТекстФайла.ДобавитьСтроку("ДатаНачала=" + Формат(Объект.ПериодС, "ДФ=дд.ММ.гггг"));
ТекстФайла.ДобавитьСтроку("ДатаКонца=" + Формат(Объект.ПериодПо, "ДФ=дд.ММ.гггг"));
ТекстФайла.ДобавитьСтроку("РасчСчет=" + Объект.НомерСчета);
ТекстФайла.ДобавитьСтроку("КонецРасчСчет");

Для корректного импорта в БСПБ файл должен содержать только общую шапку и секции документов. Структура должна выглядеть следующим образом:

  1. Первая строка: 1CClientBankExchange
  2. Служебные поля (ВерсияФормата, Кодировка, Отправитель)
  3. Секции СекцияДокумент=Платежное поручение
  4. Финальная строка: КонецФайла

Дополнительные «триггеры» ошибки в системе iBank2

Помимо СекцияРасчСчет, существуют и другие поля, которые могут сбить с толку банковскую систему. Выясним, что еще стоит проверить в вашем файле:

Проверка кодировки и формата файла

Рассмотрим еще один технический аспект — кодировку. Банк «Санкт-Петербург» чувствителен к формату файла. Стандарт требует кодировки Windows-1251 (ANSI).

Если ваша конфигурация 1С работает на платформе 8.3, при записи файла методом Записать() обязательно указывайте кодировку явно. Также проверьте наличие BOM (Byte Order Mark). Некоторые банковские системы не могут корректно прочитать первую строку 1CClientBankExchange, если в начале файла стоят невидимые символы BOM, что приводит к непредсказуемым ошибкам парсинга.

Пример правильной записи файла из 1С:


ТекстовыйДокумент = Новый ТекстовыйДокумент;
// ... наполнение документа данными ...
// Используем кодировку ANSI (Windows-1251) без лишних символов
ТекстовыйДокумент.Записать(ПутьКФайлу, КодировкаТекста.ANSI);

Подводим итоги

Если банк «Санкт-Петербург» выдает ошибку о «файле выписки», выполните следующие действия:

  1. Откройте сформированный файл обычным текстовым редактором (Блокнот, Notepad++).
  2. Проверьте наличие строки СекцияРасчСчет. Если она есть — удалите ее и программный код, который ее генерирует.
  3. Убедитесь, что в файле нет итоговых сумм и остатков по счету.
  4. Проверьте, что в заголовке указана ВерсияФормата=1.02 или 1.03.

Соблюдение чистоты структуры файла в соответствии со спецификацией 1С для платежных поручений (без элементов банковской выписки) позволит вам избежать конфликтов с системой iBank2 и обеспечит стабильную работу с банком «Санкт-Петербург».

← На главную