При настройке обмена данными между конфигурациями (например, 1С:ERP или 1С:ЗУП) через 1С:Шину (Enterprise Service Bus) специалисты часто сталкиваются с ошибкой при событии «получение». В журнале регистрации или в окне сообщений появляется текст вида: Файл с идентификатором esb_1c_[ИмяУзла].xml не обнаружен. Эта проблема может парализовать обмен, несмотря на то что сама шина работает исправно. В этой статье мы подробно разберем причины возникновения этой ошибки и методы её устранения.
Прежде всего, проанализируем, как работает транспортный модуль ТранспортСообщенийОбменаESB1C. В отличие от классического файлового обмена, здесь файл сообщения должен создаваться динамически в момент получения данных из очереди шины. Если система сообщает, что файл не найден, это означает, что либо он не был физически записан на диск, либо у процесса 1С нет прав на его чтение сразу после создания.
Важно учитывать, что имя файла esb_1c_ERP2.xml формируется программно на основе кода узла информационной базы. Рассмотрим основные шаги проверки:
Одной из самых частых причин является недостаточность прав доступа. Рассмотрим ситуацию: МойФайл.Существует() возвращает Ложь. Как было отмечено в обсуждении, это не всегда означает отсутствие файла. Если у пользователя, под которым работает сервер 1С, нет прав на чтение родительского каталога, платформа вернет Ложь, даже если файл физически находится там.
Разберем, под каким пользователем выполняется запись:
1C:Enterprise 8.3 Server Agent. Обычно это пользователь usr1cv8.Если вы используете сетевой ресурс (UNC-путь), убедитесь, что учетная запись сервера 1С имеет доступ к этой «шаре» и права на уровне NTFS. Помните, что пользователь «Администратор», под которым вы заходите в Windows, и пользователь usr1cv8 — это разные сущности с разными правами.
Проанализируем, куда именно система пытается сохранить файл. Если в настройках транспорта «1С:Шины» в самой 1С не указан явный Рабочий каталог, система использует временную папку сервера. Это может привести к проблемам в кластерных решениях:
Если в кластере несколько рабочих серверов, файл может быть записан на одном сервере, а попытка чтения произойдет на другом. Чтобы избежать этого, выполним следующие действия:
\\ServerName\Exchange\ESB\).Рассмотрим наиболее современный и стабильный способ решения проблемы, упомянутый экспертами. Вместо того чтобы передавать ссылку на файл или надеяться на файловую систему, мы можем передавать все данные внутри сообщения шины в бинарном формате.
В схеме процесса «1С:Шины» и в настройках адаптера 1С следует выбрать передачу через «Тело сообщения». В этом случае данные попадают напрямую в память или базу данных 1С, минуя промежуточные XML-файлы на диске. Это полностью исключает ошибки типа «Файл не обнаружен».
Пример логики обработки бинарных данных (условно):
// Пример получения данных из сообщения шины без использования файлов
ДанныеСообщения = ИнтеграцияСШиной.ПолучитьТелоСообщения(ИдентификаторСообщения);
Если ТипЗнч(ДанныеСообщения) = Тип("ДвоичныеДанные") Тогда
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьДвоичныеДанные(ДанныеСообщения);
// Далее стандартная обработка XML
КонецЕсли;
Если вышеуказанные меры не помогли, нам необходимо выяснить точный системный путь, по которому программа ищет файл. Для этого выполним следующие шаги:
Синхронизация данных или IntegrationService. Часто там содержится полный стек вызовов.EXCP (исключение). В файле лога ТЖ будет зафиксирован системный вызов открытия файла, где будет виден полный путь, например: C:\Windows\Temp\esb_1c_ERP2.xml. Это позволит точно понять, где система ожидает увидеть файл.Подводя итог, можно выделить три основных направления решения проблемы:
usr1cv8 на каталог обмена.Message.Body (передача контента в теле сообщения), что является наиболее надежным методом для интеграции через 1С:Шину, так как он избавляет систему от зависимости от файловой системы серверов.Рекомендуем также проверить версии используемых компонент. Если вы обновили платформу 1С, убедитесь, что расширение или подсистема ТранспортСообщенийОбменаESB1C также актуальны, так как методы работы с временными хранилищами в новых релизах могут меняться.