Как исправить ошибку «Неправильный формат конфигурации» при подключении мобильного приложения 1С?

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

При разработке и внедрении мобильных решений на платформе 1С:Предприятие одной из самых коварных ошибок является сообщение «Неправильный формат конфигурации». Эта ошибка часто ставит в тупик начинающих разработчиков, так как она не указывает на конкретную строку кода, а сигнализирует о фундаментальной проблеме взаимодействия между мобильным устройством и веб-сервером. Разберем детально, почему возникает эта ситуация и как её исправить.

Разграничение понятий: Мобильное приложение или Мобильный клиент

Проанализируем первую и самую частую причину ошибки — путаницу в типах мобильных платформ. В экосистеме 1С существуют два принципиально разных способа работы на смартфонах, и попытка подключиться одним способом к публикации другого всегда приводит к ошибке формата.

Мобильное приложение — это автономная конфигурация. При подключении мобильное устройство скачивает конфигурацию целиком и создает локальную базу данных (SQLite) на самом устройстве. Для этого в окне публикации на веб-сервере должна быть активна галочка «Публиковать мобильное приложение».

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

Если мы попытаемся добавить базу в список мобильного устройства как «Мобильное приложение», указав адрес публикации «Мобильного клиента», платформа получит данные, которые она не в силах интерпретировать, и выдаст ошибку формата. Рассмотрим, как проверить файл публикации default.vrd, чтобы убедиться в правильности настроек:


<vrs:point xmlns:vrs="http://www.1c.ru/v8/ee/vrs"
    base="/MyMobileApp"
    ib="Srvr="ServerName";Ref="BaseName";">
    <vrs:mobile enable="true" />
    <vrs:mobileClient enable="true" />
</vrs:point>

В приведенном примере включены оба типа публикации. Если в вашем файле enable="false" для того типа, который вы используете, — это и есть причина проблемы.

Настройка веб-сервера IIS и особенности MIME-типов

Выясним причину, связанную с работой веб-сервера, особенно если используется Internet Information Services (IIS). В отличие от Apache, который более лоялен к расширениям файлов «из коробки», IIS блокирует передачу любых файлов, расширения которых не прописаны в его правилах. Если мобильная платформа запрашивает файл конфигурации, а IIS отвечает ошибкой 404.3 (Not Found) из-за настроек ограничений, мобильное приложение интерпретирует этот HTML-ответ сервера как «Неправильный формат конфигурации».

Для решения этой проблемы нам необходимо вручную добавить MIME-типы в настройках IIS для нашего сайта или конкретного приложения. Пройдем по шагам этот процесс:

  1. Откроем Диспетчер служб IIS.
  2. Выберем нашу опубликованную базу в дереве слева.
  3. Перейдем в раздел «Типы MIME».
  4. Добавим следующие сопоставления:
    • .1crs — application/octet-stream
    • .1cz — application/octet-stream
    • .xml — text/xml

После добавления этих типов веб-сервер начнет корректно отдавать файлы ресурсов мобильной платформе.

Проблемы сетевой доступности и портов

Рассмотрим ситуацию, когда публикация выполнена верно, но доступа к базе всё равно нет. Часто разработчики забывают, что мобильное устройство и компьютер с веб-сервером должны находиться в одной подсети, либо сервер должен иметь «белый» IP-адрес. Проанализируем типичную ошибку с портами.

Если ваш веб-сервер работает не на стандартном 80-м порту (HTTP) или 443-м (HTTPS), его обязательно нужно указывать в адресе подключения. Например, если при публикации в 1С вы указали порт 180, то адрес в мобильном устройстве должен выглядеть так: http://192.168.88.224:180/dimp.

Важный момент: если вы можете зайти в базу через браузер на компьютере (веб-клиент), но не можете подключиться с телефона, проверьте настройки Брандмауэра Windows. Нужно создать входящее правило для порта, который использует ваш веб-сервер (например, порт 80 или 180), иначе входящие соединения от мобильных устройств будут отсекаться на корню.

Версионность и кэширование данных

Посмотрим на ситуацию со стороны версии платформы. 1С настоятельно рекомендует, чтобы версия мобильной платформы, установленной на смартфоне, была идентична или выше версии, на которой производилась публикация и разработка конфигурации. Если вы используете старую версию мобильного клиента для подключения к базе, опубликованной на новейшей версии платформы 8.3.23 и выше, структура передаваемого XML может измениться, что приведет к ошибке формата.

Также нельзя забывать про кэш. Если в процессе настройки вы допустили ошибку, исправили её, но мобильное приложение продолжает выдавать старую ошибку — это работа кэша. Мобильная платформа сохраняет часть данных конфигурации локально. Чтобы полностью исключить влияние старых настроек, выполните следующие действия:

  1. Удалите информационную базу из списка в мобильном приложении.
  2. Зайдите в настройки телефона, выберите приложение 1С и нажмите «Очистить кэш» и «Очистить данные».
  3. Перезапустите публикацию на веб-сервере в конфигураторе 1С.
  4. Добавьте базу в мобильное приложение заново.

Отладка мобильного приложения по HTTP

Если проблема сохраняется, проанализируем ситуацию с помощью инструментов отладки. Автор темы нашел решение в использовании отладки по HTTP. Это позволяет более детально увидеть процесс взаимодействия. Для настройки отладки по HTTP выполним следующее:

  1. В конфигураторе перейдем в меню Сервис — Параметры — Запуск 1С:Предприятия — Дополнительные.
  2. Установим протокол отладки «HTTP».
  3. При публикации базы на веб-сервере на закладке «Прочие» установим галочку «Разрешить отладку» и укажем адрес сервера отладки (обычно это IP вашего компьютера).

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

Проверка кода при старте системы

Выясним еще одну редкую, но возможную причину. Ошибка «Неправильный формат конфигурации» может возникнуть, если в модуле управляемого приложения или в модуле сеанса написан код, содержащий синтаксические ошибки, которые проявляются только на мобильной платформе. Например, использование COMОбъект, который не поддерживается мобильными ОС.

Чтобы избежать этого, всегда используйте инструкции препроцессора для разделения кода:


#Если МобильноеПриложениеКлиент Тогда
    // Код, специфичный для мобильного устройства
    Сообщить("Привет из мобильного клиента!");
#Иначе
    // Код для десктопных клиентов
    Сообщить("Привет из обычного клиента!");
#КонецЕсли

Подводя итог, можно сказать, что решение проблемы всегда кроется в проверке трех составляющих: типа публикации (App vs Client), настроек веб-сервера (порты и MIME-типы) и соответствия версий платформ. Последовательное прохождение по этим шагам гарантированно устраняет ошибку формата конфигурации.

← На главную