При организации распределенной информационной базы (РИБ) в конфигурациях предыдущих поколений, таких как 1С:Управление торговлей 10.3, разработчики часто сталкиваются с проблемами доставки сообщений обмена. Типовой обмен через электронную почту часто дает сбои из-за ограничений почтовых серверов по размеру вложений, спам-фильтров и разрывов соединения. Переход на защищенный протокол передачи файлов FTPS (FTP over TLS) наталкивается на то, что типовой функционал конфигурации изначально создавался под обычный незашифрованный FTP, а удаленные торговые точки нередко подключены через сотовые модемы (USB-свистки) с динамическими IP-адресами операторов.
Разберем по шагам, какие технические варианты существуют для решения этой задачи: от прямой доработки встроенного механизма подключения к FTPS на уровне платформы 1С 8.3 до применения альтернативных сетевых архитектур.
Проанализируем возможности платформы 1С:Предприятие 8.3. Начиная с версии 8.3.9, в конструктор объекта FTPСоединение была добавлена штатная поддержка защищенных протоколов TLS. Типовой код конфигурации «Управление торговлей 10.3» вызывает конструктор без параметров безопасности, однако при работе на современной платформе его можно доработать точечно.
Посмотрим на пример инициализации безопасного соединения FTPES (явный TLS, порт 21) или неявного FTPS (порт 990):
ЗащитаOpenSSL = Новый ЗащищенноеСоединениеOpenSSL();
УровеньЗащиты = УровеньИспользованияЗащищенногоСоединенияFTP.Требовать;
// Создаем защищенное соединение:
// Сервер, Порт, Пользователь, Пароль, Прокси, ПассивныйРежим, Таймаут, ЗащищенноеСоединение, УровеньЗащиты
СоединениеFTP = Новый FTPСоединение(
СерверFTP,
ПортFTP,
ЛогинFTP,
ПарольFTP,
Неопределено,
Истина, // Обязательно используем пассивный режим
60,
ЗащитаOpenSSL,
УровеньЗащиты
);
Рассмотрим важные нюансы при работе с FTPS через мобильные USB-модемы:
PASV и динамический порт, который открывает сервер для передачи файла. Это часто приводит к зависанию на этапе чтения каталога или отправки сообщения обмена.Если торговые точки работают через нестабильный мобильный интернет и настройка сетевого оборудования невозможна, наиболее надежным решением является разделение процесса выгрузки данных из 1С и процесса сетевой передачи файлов.
Разберем архитектуру данного решения:
C:\1C_Exchange\).Преимущества такого подхода:
Рассмотрим еще один современный вариант модернизации узлов РИБ — передачу файлов через веб-сервер с использованием объекта платформы HTTPСоединение.
Для реализации этого метода:
POST и GET для приема и отдачи zip-пакетов узлов РИБ.Посмотрим на пример отправки файла через HTTPСоединение:
Защита = Новый ЗащищенноеСоединениеOpenSSL();
СоединениеHTTP = Новый HTTPСоединение("server.domain.ru", 443, Логин, Пароль, , 60, Защита);
Запрос = Новый HTTPЗапрос("/trade_base/hs/rib_exchange/upload?node=" + КодУзла);
Запрос.УстановитьИмяФайлаТела(ПутьКФайлуВыгрузки);
Ответ = СоединениеHTTP.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
// Пакет успешно доставлен и принят сервером
КонецЕсли;
Использование HTTPS позволяет полностью решить проблему сотовых операторов, так как трафик передается по единому TCP-соединению без динамического открытия дополнительных портов, свойственного протоколам семейства FTP.
Подведем итоги и выберем оптимальный путь модернизации:
ЗащищенноеСоединениеOpenSSL в конструктор FTPСоединение, и настройте на FTP-сервере пассивные порты.