При настройке обмена данными между конфигурациями 1С на базе EnterpriseData часто возникает вопрос выбора оптимального транспорта. Типовая «Библиотека стандартных подсистем» (БСП) предлагает несколько вариантов: файловый обмен через общие папки, FTP, электронную почту или использование веб-сервисов. Рассмотрим ситуацию, когда требуется максимально приблизить обмен к режиму реального времени (онлайн) при передаче большого количества мелких пакетов данных.
Переход с файлового обмена на стандартные веб-сервисы БСП часто воспринимается как панацея для ускорения процесса, однако проанализируем внутреннюю механику этого процесса. Разберем по шагам, что происходит при вызове стандартного метода веб-сервиса Exchange_3_0_1_1:
EnterpriseData) оборачивается в массивный «конверт» со служебной информацией. Для малых пакетов данных объем служебных тегов может составлять значительную часть трафика.Проанализируем ситуацию: если ваша цель — избавиться от «тормозов» дисковой подсистемы, то стандартный веб-сервис БСП даст лишь незначительный выигрыш за счет исключения задержек сетевого протокола SMB (общей папки), но сохранит логику работы через файлы.
Выясним причину, по которой смена транспорта сама по себе не гарантирует мгновенной синхронизации. Архитектура EnterpriseData в БСП опирается на ПланыОбмена и последовательную обработку сообщений. Рассмотрим основные узкие места:
Регистрация изменений: Данные сначала должны быть зарегистрированы в плане обмена. Даже если мы инициируем выгрузку сразу после записи объекта, системе требуется время на формирование пакета через XDTO-сериализацию. Для старых или сильно кастомизированных конфигураций процесс сопоставления объектов с форматом EnterpriseData может быть крайне ресурсоемким.
Очередность выполнения: В типовом варианте БСП задания на обмен выполняются фоновыми заданиями. Если в очереди накопилось несколько пакетов или выполняется длительная загрузка большого объема данных (например, начальные остатки), мелкие «оперативные» пакеты будут стоять в очереди и ждать своей очереди.
Если нам действительно важна скорость, рассмотрим вариант создания собственного HTTP-сервиса. В отличие от SOAP, HTTP-сервисы в 1С работают «легче» и позволяют реализовать потоковую обработку данных. Посмотрим на преимущества этого подхода:
ЧтениеXML, не сохраняя данные во временный файл. Это критически важно для производительности при частых запросах.Разберем пример логики простейшего HTTP-сервиса, который принимает данные в формате EnterpriseData и сразу отправляет их на загрузку, минуя стандартную очередь сообщений:
Функция PostData(Запрос)
// Получаем чтение XML напрямую из тела запроса
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку());
// Вызываем менеджер обмена напрямую для мгновенной обработки
ПараметрыЗагрузки = ОбменДаннымиСервер.ПараметрыЗагрузкиДляУниверсальногоФормата();
МенеджерОбмена = ОбменДаннымиСервер.МенеджерОбменаЧерезУниверсальныйФормат(ВерсияФормата);
// Запускаем загрузку без создания сообщения обмена в планах обмена
МенеджерОбмена.ЗагрузитьДанныеДляПриложения(ЧтениеXML, ПараметрыЗагрузки);
Возврат Новый HTTPСервисОтвет(200);
КонецФункции
Проанализировав ситуацию, мы можем составить план действий для ускорения обмена в вашей системе:
Fast Infoset. Это бинарный формат XML, который платформа 1С понимает нативно. Он значительно сокращает объем передаваемых данных и ускоряет их парсинг.Переход на стандартные веб-сервисы БСП стоит сделать ради удобства администрирования и отказа от общих папок, но не стоит ожидать от этого существенного прироста скорости. Стандартная логика БСП всё равно ориентирована на пакетную обработку и временные файлы. Для достижения «околоонлайнового» обмена правильным путем будет разработка собственного HTTP-интерфейса, который позволит обрабатывать данные в потоковом режиме, минуя классическую очередь сообщений планов обмена.