В процессе разработки и развертывания мобильных приложений на платформе 1С:Предприятие специалисты часто сталкиваются с неочевидными ошибками связи между мобильным клиентом и веб-сервером. Одной из самых коварных является «Ошибка разбора XML: Space required after the Public Identifier». На первый взгляд она кажется синтаксической ошибкой в самой конфигурации, но на деле причина кроется гораздо глубже — в настройках веб-сервера (Apache или IIS) и способе передачи данных.
В этой статье мы подробно разберем, почему возникает эта ошибка, как продиагностировать истинную причину и какие шаги предпринять для восстановления работоспособности системы.
Прежде всего, проанализируем природу сообщения. Мобильная платформа 1С при обращении к веб-серверу ожидает получить ответ в формате XML (структуру конфигурации или результат выполнения веб-сервиса). Если веб-сервер вместо валидного XML возвращает ошибку (например, 403 Forbidden, 404 Not Found или 500 Internal Server Error), он обычно делает это в виде стандартной HTML-страницы.
HTML-документы начинаются с объявления типа документа: <!DOCTYPE html...>. Встроенный в мобильную платформу XML-парсер пытается прочитать этот текст как часть XML-структуры. Поскольку синтаксис определения DOCTYPE в HTML и XML имеет строгие правила, парсер «спотыкается» на идентификаторах и выдает техническое сообщение: «Space required after the Public Identifier» (Требуется пробел после публичного идентификатора). Таким образом, эта ошибка является вторичной: она лишь сообщает нам о том, что вместо данных 1С пришел какой-то HTML-текст.
Рассмотрим наиболее распространенную причину, специфичную для работы с Apache. При каждой публикации информационной базы через конфигуратор 1С (меню «Администрирование» — «Публикация на веб-сервере»), система может добавлять новые записи в основной конфигурационный файл Apache httpd.conf.
Со временем в этом файле накапливаются дублирующиеся блоки директорий или модулей, что приводит к некорректной маршрутизации запросов от мобильных устройств. Разберем алгоритм действий по шагам:
C:\Program Files\Apache Software Foundation\Apache2.2\conf\).httpd.conf в текстовом редакторе с правами администратора.LoadModule _1cws_module и блоки <Directory ...>, относящиеся к вашей публикации.Пример корректного подключения модуля (разрядность модуля wsap24.dll должна совпадать с разрядностью Apache):
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.19.1229/bin/wsap24.dll"
<Directory "C:/inetpub/wwwroot/MyMobileApp/">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/MyMobileApp/default.vrd"
</Directory>
Проанализируем ситуацию, когда веб-сервер настроен верно, но сама конфигурация 1С не готова к передаче на мобильное устройство. Выполним следующие проверки:
SYSTEM или www-data), права на чтение и выполнение в папке, где лежит файл default.vrd. Отсутствие прав приведет к ошибке 403, которую мобильный клиент воспримет как ошибку XML.Чтобы выяснить, какую именно HTML-страницу возвращает сервер вместо XML, проделаем простой тест:
http://[адрес_сервера]/[имя_публикации]/.default.vrd, либо начать скачивание файла.Важный момент: Если используется HTTPS, убедимся, что сертификат сервера является доверенным для мобильного устройства. Самоподписанные сертификаты часто блокируются мобильными ОС без уведомления, возвращая пустую страницу или ошибку безопасности, что снова провоцирует сбой XML-парсера.
Рассмотрим вопрос версионности. В практике встречаются случаи, когда старые версии мобильной платформы (например, 8.3.6) не могут корректно обработать ответы от современных версий серверной платформы (8.3.14 и выше) из-за изменений в протоколах сжатия данных или структуре default.vrd.
Рекомендуется придерживаться следующих правил:
wsap24.dll в httpd.conf.Подводя итог, можно сказать, что ошибка «Space required after the Public Identifier» — это лишь «симптом» того, что веб-сервер вернул не то, что ожидал клиент. Для исправления ситуации необходимо:
Соблюдение этих шагов позволяет решить проблему в 90% случаев, обеспечивая стабильную связь мобильного приложения с центральной базой 1С.