Почему при синхронизации 1С на Linux файлы выгрузки называются Message_??_??.xml и как это исправить

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет IT и автоматизация бизнеса
← На главную

При настройке обмена данными между конфигурациями 1С:Управление нашей фирмой (УНФ) и 1С:Бухгалтерия предприятия (БП), особенно в среде Linux (RedOS, Ubuntu) с использованием веб-сервера Apache, системные администраторы и программисты часто сталкиваются с неприятной ситуацией. Вместо корректных имен файлов обмена, содержащих префиксы баз (например, Message_NF_BP.xml), платформа генерирует файлы с вопросительными знаками: Message_??_??.xml. В результате принимающая база «не видит» эти файлы, и синхронизация прерывается.

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

Выясним причину появления знаков вопроса в именах файлов

Проанализируем ситуацию: платформа 1С при формировании сообщения обмена использует префиксы узлов, заданные в плане обмена. Если в качестве префиксов выбраны кириллические символы (например, «НФ» и «БП»), 1С пытается передать эти строки операционной системе для создания файла на диске.

В среде Linux, если веб-сервер Apache запущен с локалью по умолчанию (обычно это POSIX или C), он не поддерживает многобайтовые кодировки, такие как UTF-8, для операций с файловой системой. Когда 1С запрашивает создание файла с русскими буквами в названии, происходит ошибка интерпретации символов, и операционная система заменяет «непонятные» ей знаки на ??. Аналогичная проблема возникает и внутри самого XML-файла в заголовках msg:To и msg:From.

Решение 1: Переход на латинские префиксы (рекомендуемый способ)

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

  1. Откроем базу УНФ и перейдем в раздел Администрирование — Синхронизация данных.
  2. Проверим текущий префикс информационной базы. Если он задан как «НФ», заменим его на латинское «NF».
  3. Зайдем в список настроенных синхронизаций и откроем параметры текущего обмена с Бухгалтерией предприятия.
  4. Нам необходимо изменить префикс корреспондента. Вместо «БП» установим «BP».
  5. Повторим аналогичные действия в базе БП: установим префикс текущей базы «BP» и префикс корреспондента «NF».

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

Решение 2: Настройка локали веб-сервера Apache на Linux

Если использование латиницы по каким-то причинам невозможно или вы хотите решить проблему глобально для всех баз на сервере, необходимо заставить Apache понимать кириллицу. Проанализируем процесс настройки переменных окружения в RedOS или других дистрибутивах на базе системного менеджера systemd.

Выполним следующие шаги в терминале сервера:

  1. Откроем для редактирования файл конфигурации сервиса Apache (в разных дистрибутивах он может называться httpd или apache2): sudo systemctl edit httpd
  2. В открывшемся окне (между комментариями) добавим секцию [Service] с указанием нужной локали:
    
    [Service]
    Environment="LANG=ru_RU.UTF-8"
    Environment="LC_ALL=ru_RU.UTF-8"
    
  3. Сохраним файл и перезагрузим демон конфигураций, а затем и сам веб-сервер:
    
    sudo systemctl daemon-reload
    sudo systemctl restart httpd
    

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

Решение 3: Использование веб-сервисов для прямого обмена

Рассмотрим альтернативный вариант, который полностью исключает проблему записи файлов на диск. Формат EnterpriseData позволяет настроить обмен через прямое подключение. В этом случае данные передаются через HTTP-запросы непосредственно из одной базы в другую.

Преимущества этого метода:

Для настройки выберем в помощнике синхронизации вариант «Подключение через веб-сервис». Вам потребуется опубликовать обе базы на веб-сервере и указать адрес публикации, логин и пароль пользователя с правами на выполнение синхронизации.

Технические нюансы формата EnterpriseData

Стоит помнить, что при использовании универсального формата EnterpriseData (на котором построена синхронизация УНФ и БП), технические заголовки сообщения выглядят так:


<msg:Header>
    <msg:Format>http://v8.1c.ru/edi/erp_exchange/EnterpriseData/1.15</msg:Format>
    <msg:CreationDate>2023-10-27T12:00:00</msg:CreationDate>
    <msg:From>NF</msg:From>
    <msg:To>BP</msg:To>
</msg:Header>

Использование латиницы в тегах msg:From и msg:To является «золотым стандартом» разработки. Даже если ваша текущая ОС настроена корректно, при миграции баз на другой сервер или при обновлении платформы 1С кириллица может снова стать источником проблем. Поэтому мы рекомендуем всегда использовать латинские префиксы (например, UNF, ERP, Retail, Accounting).

Резюме и рекомендации

Подводя итог, можно сказать, что проблема Message_??_??.xml — это классический конфликт кодировок между приложением и операционной системой. Чтобы избежать «ада» при настройке синхронизации:

  1. Всегда используйте латинские префиксы для информационных баз в планах обмена.
  2. Если базы работают на Linux через Apache, обязательно прописывайте UTF-8 локаль в переменных окружения сервиса.
  3. Проверьте права доступа пользователя apache (или www-data) к каталогам, где хранятся файлы обмена.
  4. Старайтесь использовать прямое подключение по протоколу HTTP вместо обмена через файлы — это современнее и стабильнее.

Соблюдение этих простых правил сделает вашу работу с обменами 1С предсказуемой и надежной.

← На главную