Разработка мобильного клиента с автономным режимом — это задача, требующая ювелирной настройки как на стороне сервера, так и в параметрах сборки самого приложения. Одной из самых неприятных ошибок является сообщение «Информационная база с указанным именем или параметрами соединения уже зарегистрирована», которое блокирует запуск приложения на мобильном устройстве. Кроме того, разработчики часто сталкиваются с проблемами многопользовательской работы и конфликтами при синхронизации данных. В этой статье мы подробно разберем, как обойти эти ограничения и построить отказоустойчивую систему.
Проанализируем ситуацию: при первом запуске скомпилированного мобильного приложения 1С пытается прописать параметры подключения к серверу в свой внутренний список баз (файл apps.xml). Если в настройках «Сборщика мобильных приложений» допущены определенные избыточности, возникает конфликт имен.
Выясним основную причину: ошибка часто возникает из-за одновременного заполнения поля «Адрес начальной веб-страницы» и таблицы «Адреса информационных баз». Платформа пытается создать запись по обоим источникам, и поскольку URL публикации совпадает, вторая попытка регистрации вызывает фатальную ошибку.
Рассмотрим шаги по исправлению в «Сборщике мобильных приложений»:
https://my-server.com/base_name)..apk или .ipa файл.Важное замечание: Простого обновления приложения «поверх» старой версии может быть недостаточно. На мобильном устройстве крайне желательно полностью удалить старое приложение, очистить кэш системы и только после этого устанавливать новый билд. Это гарантирует очистку старых записей в системных файлах мобильной платформы.
Когда регистрация базы прошла успешно, на первый план выходят сложности обмена данными в автономном режиме. Рассмотрим типичную ситуацию: несколько пользователей одновременно вносят данные в офлайне, а затем подключаются к сети. В этот момент часто возникают ошибки Ошибка при вызове метода контекста (Записать) или проблемы сериализации ПрочитатьXML.
Проанализируем ситуацию с блокировками. Если ваша база работает на Microsoft SQL Server Express, вы можете столкнуться с ограничениями этой редакции по количеству одновременных транзакций и ресурсов. Рассмотрим переход на PostgreSQL, который в связке с 1С зачастую показывает более высокую стабильность при массовых коротких запросах от мобильных устройств. Однако дело не только в СУБД.
Разберем ключевые правила настройки обмена для автономного режима:
ПланыОбмена.Многие опытные разработчики приходят к выводу, что стандартный механизм РИБ (распределенных информационных баз), на котором базируется автономный режим мобильного клиента, бывает избыточен и капризен. Посмотрим на альтернативу — использование HTTP-сервисов для обмена данными.
Построение обмена через HTTP POST запросы позволяет вам полностью контролировать процесс сериализации данных. Вместо тяжеловесного XML мы рекомендуем использовать формат JSON. Он легче, быстрее обрабатывается мобильными процессорами и реже вызывает ошибки при частичной потере пакетов.
Рассмотрим пример кода на стороне мобильного клиента для отправки данных через HTTP:
Соединение = Новый HTTPСоединение("myserver.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/base/hs/exchange/v1/send_data");
Запрос.УстановитьТелоИзСтроки(ДанныеВФорматеJSON, КодировкаТекста.UTF8);
Попытка
Ответ = Соединение.ОтправитьДляОбъекта(Запрос);
Если Ответ.КодСостояния = 200 Тогда
// Обработка успешного получения
КонецЕсли;
Исключение
ЗаписатьЛогОшибки(ОписаниеОшибки());
КонецПопытки;
Такой подход позволяет реализовать «мягкую» синхронизацию: мобильное приложение запрашивает только то, что изменилось на сервере с момента последнего обмена, используя временную метку (timestamp) или номер версии объекта.
Выясним влияние веб-сервера на стабильность мобильного клиента. Хотя IIS является стандартным выбором для многих Windows-администраторов, при работе с мобильными клиентами он может требовать тонкой настройки заголовков и лимитов передачи данных. Apache часто работает «из коробки» более стабильно в части длительных HTTP-соединений, которые характерны для процесса синхронизации.
Если вы остаетесь на IIS, обязательно проверьте настройки maxAllowedContentLength в файле web.config, чтобы сервер не обрывал соединение при попытке передать большой пакет автономных данных.
Подводя итог, можно сказать, что решение проблемы «уже зарегистрированной базы» кроется в корректном разделении адресов в сборщике и обязательной очистке устройства перед установкой. А для борьбы с ошибками синхронизации необходимо обеспечить уникальность узлов обмена и рассмотреть возможность перехода на более гибкие HTTP-протоколы. Помните, что версия платформы также играет роль: старайтесь использовать актуальные релизы (8.3.20 и выше), так как в них механизмы автономного клиента постоянно совершенствуются.