При работе с технологией DirectBank пользователи часто сталкиваются с ситуацией, когда отлаженный механизм обмена с банком ВТБ внезапно перестает работать. Характерным признаком проблемы является сообщение об ошибке с кодом 1010 и техническим описанием: The element 'PayRequest' in namespace 'http://directbank.1c.ru/XMLSchema' has incomplete content. List of possible elements expected: 'PaymentCondition'. В данной статье мы подробно разберем, почему возникает эта ошибка, как она связана с обновлением систем банка и какие шаги необходимо предпринять для восстановления обмена.
Для начала проанализируем текст ошибки. Сообщение указывает на то, что банковский сервер ожидает в структуре XML-пакета элемент PaymentCondition (Условие оплаты), но программа 1С его не передает. Это типичная ситуация несоответствия версий форматов. В конце 2021 года банк ВТБ начал масштабный переход на новую платформу «ВТБ Бизнес». В рамках этого перехода были изменены требования к структуре передаваемых данных. Элемент PaymentCondition, который ранее мог быть необязательным или отсутствовать в старых версиях протокола, стал критически важным для валидации документа на стороне банковского шлюза.
Разберем основные факторы, приводящие к сбою:
VPNKey-TLS.Рассмотрим ситуацию, когда настройки в 1С формально проходят проверку, но реальная выгрузка или загрузка документов выдает ошибку 1010. Часто это происходит из-за того, что в базе сохранены старые правила обмена в хранилище значений, которые не обновились автоматически. Выясним, как принудительно изменить версию формата.
Выполним следующие шаги:
Важно помнить: проверку и обновление настроек должен выполнять пользователь с правами, позволяющими устанавливать внешние компоненты в операционной системе.
Одной из наиболее неочевидных проблем является требование банка использовать специализированную компоненту VPNKey-TLS для организации защищенного канала связи. Разберем, как это работает. В отличие от стандартных методов TLS, реализованных в операционной системе Windows, ВТБ применяет решение от компании «Фактор-ТС».
Если у организации закончилась подписка ИТС, 1С не сможет автоматически скачать эту компоненту с портала. В этом случае мы должны действовать следующим образом:
DLL в системе и зарегистрирует COM-объекты.Иногда корень проблемы кроется не в самой конфигурации, а в технологической платформе 1С. Банк ВТБ постепенно отказывается от поддержки устаревших протоколов TLS 1.0 и 1.1. Для корректной работы с TLS 1.2 и выше нам потребуется современная версия платформы.
Проанализируем технические требования:
Для проверки того, какой именно метод конфигурации вызывает исключение, можно заглянуть в общий модуль ОбменСБанкамиСлужебный. Рассмотрим пример кода, который отвечает за обработку ошибок ответа банка:
Процедура ОбработатьРезультатВыполненияОперации(Результат, Параметры)
Если Результат.Ошибка Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Получена ошибка из банка (%1). Код ошибки %2. Внутренняя ошибка: %3'"),
Результат.ДатаОшибки,
Результат.КодОшибки,
Результат.ОписаниеОшибки);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецПроцедуры
Как мы видим, 1С просто транслирует текст, пришедший от банковского сервера. Если вы видите ошибку 1010 (поможет мониторинг ошибок в журнале регистрации), значит, соединение с банком успешно установлено (криптография работает), но данные, которые подготовила 1С, не проходят проверку на стороне банка. Это лишний раз подтверждает необходимость обновления именно настроек (версии правил) внутри программы.
1C:Бухгалтерия 3.0 обновлена до актуального релиза. Исправления схем DirectBank под требования ВТБ выходили в оперативных обновлениях в конце 2021 — начале 2022 года.Подводя итог, отметим, что ошибка 1010 — это классическая ошибка десинхронизации форматов. Совместное использование актуальной платформы 1С, последней версии правил обмена и официальной компоненты VPNKey-TLS позволяет полностью устранить данную проблему.